Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

План обмена, синхронизация без правил конвертации, неидентичные конфигурации

План обмена, синхронизация без правил конвертации, неидентичные конфигурации
Я
   lg2marvel
 
24.06.19 - 16:45
Добрый день.
Нужно синхронизировать (на постоянной основе) 2 базы: ЗУП3 и ЗУП3 (сильно допиленный). Создал план обмена, синхронизирую справочники, но дойдя до синхронизации справочника должностей (в ЗУП допиленном добавлены реквизиты) - не загружается. Пишет ошибку:

{ОбщийМодуль.ОбменДаннымиСервер.Модуль(6190)}: Ошибка при вызове метода контекста (ПрочитатьXML)
            Данные = ПрочитатьXML(ЧтениеXML);
по причине:
Ошибка преобразования данных XML: [sfile://C:/Users/karpinskiy/AppData/Local/Temp/Exchange82 {2A29E1EC-52A8-46F2-9F7B-8967FEC6A589}/Message_П2_У1.xml][52,4]

Можно ли это как-то обойти? В приемнике мне не нужно трогать добавленные реквизиты?
 
 
   Beduin
 
1 - 24.06.19 - 16:47
(0) А ты через какую конвертацию отправляешь? 2.0
   lg2marvel
 
2 - 24.06.19 - 16:48
(1) не использую конвертацию
   Fragster
 
3 - 24.06.19 - 16:49
если на значения насрать, то можно через xslt преобразование фигануть и получить валидный xml
   lg2marvel
 
4 - 24.06.19 - 16:50
Модуль менеджера:
Процедура ПриПолученииНастроек(Настройки) Экспорт

    
    Настройки.Алгоритмы.ПриПолученииВариантовНастроекОбмена   = Истина;
    Настройки.Алгоритмы.ПриПолученииОписанияВариантаНастройки = Истина;

КонецПроцедуры

Процедура ПриПолученииВариантовНастроекОбмена(ВариантыНастроекОбмена, ПараметрыКонтекста) Экспорт
    
    ВариантНастройки = ВариантыНастроекОбмена.Добавить();
    ВариантНастройки.ИдентификаторНастройки = "";
    ВариантНастройки.КорреспондентВМоделиСервиса = Ложь;
    ВариантНастройки.КорреспондентВЛокальномРежиме = Истина;
    
КонецПроцедуры

Процедура ПриПолученииОписанияВариантаНастройки(ОписаниеВарианта, ИдентификаторНастройки, ПараметрыКонтекста) Экспорт
    
    КраткаяИнформацияПоОбмену = НСтр("ru = 'Позволяет синхронизировать данные между двумя программами 1С:Библиотека стандартных подсистем.
    |Особенностью данного вида синхронизации данных является отсутствие правил конвертации данных и требование идентичности конфигураций у синхронизирующихся программ.'");
    
    ПодробнаяИнформацияПоОбмену = "http://its.1c.ru/db/bspdoc#content:120:1:IssOgl2_Обмен%2520с%2520БСП%2520(без%2520использования%2520правил%2520обмена)";;
    
    ОписаниеВарианта.КраткаяИнформацияПоОбмену   = КраткаяИнформацияПоОбмену;
    ОписаниеВарианта.ПодробнаяИнформацияПоОбмену = ПодробнаяИнформацияПоОбмену;
    
    ОписаниеВарианта.ИмяКонфигурацииКорреспондента          = Метаданные.Имя;
    ОписаниеВарианта.НаименованиеКонфигурацииКорреспондента = НСтр("ru = '1С:Библиотека стандартных подсистем'");
    ОписаниеВарианта.ИмяФайлаНастроекДляПриемника           = НСтр("ru = 'Настройки синхронизации для БСП (без использования правил)'");
    
    ЗаголовокКоманды = НСтр("ru = '1С:Библиотека стандартных подсистем (без использования правил обмена)'");
    ОписаниеВарианта.ЗаголовокКомандыДляСозданияНовогоОбменаДанными = ЗаголовокКоманды;
    
    // Отборы
    СтруктураТабличнойЧастиОрганизации = Новый Структура;
    СтруктураТабличнойЧастиОрганизации.Вставить("Организация", Новый Массив);
    
    ОписаниеВарианта.Отборы.Вставить("ДатаНачалаВыгрузкиДокументов",    НачалоГода(ТекущаяДатаСеанса()));
    ОписаниеВарианта.Отборы.Вставить("Организации",                     СтруктураТабличнойЧастиОрганизации);
    ОписаниеВарианта.Отборы.Вставить("ИспользоватьОтборПоОрганизациям", Ложь);
    
КонецПроцедуры
Функция РеквизитыНеРедактируемыеВГрупповойОбработке() Экспорт
    
    Результат = Новый Массив;
    Результат.Добавить("РегистрироватьИзменения");
    Возврат Результат;
    
КонецФункции
   lg2marvel
 
5 - 24.06.19 - 16:51
(3) не хотелось бы затирать значения которые уже записаны в приемнике
   Beduin
 
6 - 24.06.19 - 16:53
(5) Он тебе про то, чтобы в xml оставить только реквизиты из приемника
   Йохохо
 
7 - 24.06.19 - 16:53
(6) а он про двусторонний обмен)
   unbred
 
8 - 24.06.19 - 16:57
(2) используй
   bolobol
 
9 - 24.06.19 - 16:57
Я делал при такой ошибке - выгрузку элемента из базы приёмника в тот же формат и сравнивал теги - отсутствующие добавлял, лишние удалял. Дописывал стандартный обмен между идентичными
   lg2marvel
 
10 - 24.06.19 - 16:57
(7) устраивает и односторонний обмен
   bolobol
 
11 - 24.06.19 - 17:00
В версионировании на хранилище значений - есть код при сравнении с прошлой версией, когда конфигурация не совпадает - по-тег-овое чтение/сравнение
   lg2marvel
 
12 - 24.06.19 - 17:01
(9) это хорошо когда один раз сделал синхронизацию и забыл, но нужно синхронизировать ежедневно
   lg2marvel
 
13 - 24.06.19 - 17:03
попробую с использованием правил конвертации
   bolobol
 
14 - 24.06.19 - 17:05
(12) Всё что требует ежедневности - разрабатывается, тестируется, внедряется, запускается и забывается
   bolobol
 
15 - 24.06.19 - 17:06
Я к тому, что - сделайте ежедневную и забудьте.
   lg2marvel
 
16 - 24.06.19 - 17:12
(11) не подскажите где конкретней можно найти этот код?
   bolobol
 
17 - 24.06.19 - 17:16
На платформе без встроенного версионирования, например в БУх3, в конфигураторе "пауза" и вывести отчёт об изменении объекта. Код будет очень рядом.
   Rema Dan
 
18 - 24.06.19 - 17:24
(0) Для корректной сериализации обратно требуется, чтобы полностью совпадали реквизиты передаваемых элементов. Как состав реквизитов, так и порядок реквизитов.
Не проверял, но вроде как при ручной сериализации через "Новый СериализаторXDTO(ФабрикаXDTO)" таких требований нет. Можно попробовать отправку/получение через СериализаторXDTO.ЗаписатьXML(..) и СериализаторXDTO.ПрочитатьXML(..).
   lg2marvel
 
19 - 24.06.19 - 17:29
(17) спасибо, посмотрю
(18) спасибо, буду иметь в виду

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.