|
План обмена, синхронизация без правил конвертации, неидентичные конфигурации | ☑ | ||
---|---|---|---|---|
0
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] Можно ли это как-то обойти? В приемнике мне не нужно трогать добавленные реквизиты? |
|||
1
Beduin
24.06.19
✎
16:47
|
(0) А ты через какую конвертацию отправляешь? 2.0
|
|||
2
lg2marvel
24.06.19
✎
16:48
|
(1) не использую конвертацию
|
|||
3
Fragster
гуру
24.06.19
✎
16:49
|
если на значения насрать, то можно через xslt преобразование фигануть и получить валидный xml
|
|||
4
lg2marvel
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С:Библиотека стандартных подсистем (без использования правил обмена)'"); ОписаниеВарианта.ЗаголовокКомандыДляСозданияНовогоОбменаДанными = ЗаголовокКоманды; // Отборы СтруктураТабличнойЧастиОрганизации = Новый Структура; СтруктураТабличнойЧастиОрганизации.Вставить("Организация", Новый Массив); ОписаниеВарианта.Отборы.Вставить("ДатаНачалаВыгрузкиДокументов", НачалоГода(ТекущаяДатаСеанса())); ОписаниеВарианта.Отборы.Вставить("Организации", СтруктураТабличнойЧастиОрганизации); ОписаниеВарианта.Отборы.Вставить("ИспользоватьОтборПоОрганизациям", Ложь); КонецПроцедуры Функция РеквизитыНеРедактируемыеВГрупповойОбработке() Экспорт Результат = Новый Массив; Результат.Добавить("РегистрироватьИзменения"); Возврат Результат; КонецФункции |
|||
5
lg2marvel
24.06.19
✎
16:51
|
(3) не хотелось бы затирать значения которые уже записаны в приемнике
|
|||
6
Beduin
24.06.19
✎
16:53
|
(5) Он тебе про то, чтобы в xml оставить только реквизиты из приемника
|
|||
7
Йохохо
24.06.19
✎
16:53
|
(6) а он про двусторонний обмен)
|
|||
8
unbred
24.06.19
✎
16:57
|
(2) используй
|
|||
9
bolobol
24.06.19
✎
16:57
|
Я делал при такой ошибке - выгрузку элемента из базы приёмника в тот же формат и сравнивал теги - отсутствующие добавлял, лишние удалял. Дописывал стандартный обмен между идентичными
|
|||
10
lg2marvel
24.06.19
✎
16:57
|
(7) устраивает и односторонний обмен
|
|||
11
bolobol
24.06.19
✎
17:00
|
В версионировании на хранилище значений - есть код при сравнении с прошлой версией, когда конфигурация не совпадает - по-тег-овое чтение/сравнение
|
|||
12
lg2marvel
24.06.19
✎
17:01
|
(9) это хорошо когда один раз сделал синхронизацию и забыл, но нужно синхронизировать ежедневно
|
|||
13
lg2marvel
24.06.19
✎
17:03
|
попробую с использованием правил конвертации
|
|||
14
bolobol
24.06.19
✎
17:05
|
(12) Всё что требует ежедневности - разрабатывается, тестируется, внедряется, запускается и забывается
|
|||
15
bolobol
24.06.19
✎
17:06
|
Я к тому, что - сделайте ежедневную и забудьте.
|
|||
16
lg2marvel
24.06.19
✎
17:12
|
(11) не подскажите где конкретней можно найти этот код?
|
|||
17
bolobol
24.06.19
✎
17:16
|
На платформе без встроенного версионирования, например в БУх3, в конфигураторе "пауза" и вывести отчёт об изменении объекта. Код будет очень рядом.
|
|||
18
Rema Dan
24.06.19
✎
17:24
|
(0) Для корректной сериализации обратно требуется, чтобы полностью совпадали реквизиты передаваемых элементов. Как состав реквизитов, так и порядок реквизитов.
Не проверял, но вроде как при ручной сериализации через "Новый СериализаторXDTO(ФабрикаXDTO)" таких требований нет. Можно попробовать отправку/получение через СериализаторXDTO.ЗаписатьXML(..) и СериализаторXDTO.ПрочитатьXML(..). |
|||
19
lg2marvel
24.06.19
✎
17:29
|
(17) спасибо, посмотрю
(18) спасибо, буду иметь в виду |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |