Не типовой обмен настроенный через план обмена не работает

1. Xershi 1484 06.11.17 19:52 Сейчас в теме
Есть две конфигурации на платформе 8.2 ОФ и 8.3 УФ.
Нужно настроить обмен в одну сторону из 8.3 в 8.2.

Создал план обмена в каждой конфигурации копированием. Назвал одинаково.

Написал правила в КД2.
8.3 1 справочник в 8.2 3 справочника плюс для 2 из 3 справочников потом переносятся регистры сведений.

При использовании обработки V8Exchan83 и V8Exchan82.
Все легло как надо!

Но затем начались проблемы при пененосе через план обмена.

Проблемы:
1.) Была в том, что не одинаково назвал планы обмена, это исправил.
2.) Была в том, что обмен из 8.2 дописывает передачу еще фоновым обменом, а в 8.3. такого нет. Это тоже исправил дописал код в 8.3 на обработку такого.
3.) Перестала переноситься информация в 8.2 РегистрСведенийЗапись.КонтактнаяИнформация и РегистрСведенийЗапись.КатегорииОбъектов.
4.) Не удаляется регистрация после успешного обмена в 8.3. Проходит выгрузка из 8.3, затем загрузка в 8.2. После успешных действий идет загрузка полученной информации в 8.3 и ничего не происходит. Грешу на код плана обмена в 8.2. Там некие правила сопоставления используются.

Как решить 3 и 4 проблему?
4 могу устранить удалением после выгрузки, что не есть хорошо, но зато симптом устранит.

Но что делать с 3 не знаю.
По теме из базы знаний
Найденные решения
22. Xershi 1484 07.11.17 13:10 Сейчас в теме
Вот о чем я говорил "v8: Инкрементальный экспорт с ипользованием Конвертации Данных v8":
http://kb.mista.ru/article.php?id=356

Применил второй метод.

Регистрация удалилась после выгрузки.

Если нет варианта как решить 4 проблему по типовому обмену, то буду использовать данный код.
Решение приложил!
Прикрепленные файлы:
ПравилаОбменаДанными.zip
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. TODD22 18 06.11.17 19:59 Сейчас в теме
(1)
4 могу устранить удалением после выгрузки, что не есть хорошо, но зато симптом устранит.

И если по какой либо причине не получит узел данные то данные об изменении пропадут.
Например если два раза подряд выгрузить и не загрузить.
3. Xershi 1484 06.11.17 20:03 Сейчас в теме
(2) это и так понятно! Что это не решение, а устранение симптома!

Что по 3 проблеме можете ответить?

Правила на текущий момент такие:
Прикрепленные файлы:
ПравилаОбменаДанными.zip
Метаданные конфигураций.rar
4. Dream_kz 129 06.11.17 20:28 Сейчас в теме
(3)
Что по 3 проблеме можете ответить?

А зачем использовать 3 ПВД? По идее можно использовать 1, а потом после выгрузки ВыгрузитьПоПравилу(). С регистрами сведений я бы тоже так сделал.
И галки ПолучитьИзВходящих тоже там зря, входящих данных то нет.
5. Xershi 1484 06.11.17 20:32 Сейчас в теме
(4) в теории понятно, на практике что тыкать?)
6. Dream_kz 129 06.11.17 20:48 Сейчас в теме
(5) В обработчике после выгрузки ПКО Контрагенты добавить это:
ВыгрузитьПоПравилу(Источник,,,,"КонтактныеЛица");
ВыгрузитьПоПравилу(Источник,,,,"КонтактныеЛицаКонтрагентов");

ну и т.д.

Контактную информацию выгружать также, если все данные в справочнике есть.
7. Xershi 1484 06.11.17 21:57 Сейчас в теме
(6) значит план такой.

Оставляю одно ПВД = Контрагенты.
В ПКО = Контрагенты ищу обработчик = После выгрузки.
Там пишу эти правила.

С справочниками разобрались.
Но регистры я писал через входящие данные.

Как мне их переделать?
8. Xershi 1484 06.11.17 22:45 Сейчас в теме
В ПКО = Контрагенты обработчик = После выгрузки:
ИсходящиеДанные = Новый Структура;
ИсходящиеДанные.Вставить("Объект", Источник);
ИсходящиеДанные.Вставить("Тип", "Телефон");
ИсходящиеДанные.Вставить("Представление", Источник.ЮЛ_Телефон);

ВыгрузитьПоПравилу(Источник, , , ИсходящиеДанные, "КонтактнаяИнформацияКонтрагента");


Выдает мне вот такие ошибки:
Ошибка.

Ошибка получения свойства объекта из входящих данных
	ПКО                    =  КонтактнаяИнформацияКонтрагента  ( --> РегистрСведенийЗапись.КонтактнаяИнформация)
	ПКС                    =  1  (--> Объект)
	Объект                 =  Договор №2000683 от 12.04.2017  (Справочник объект: Договоры)
	СвойствоПриемника      =  Объект  ()
	ОписаниеОшибки         =  Получение элемента по индексу для значения не определено
	ПозицияМодуля          =  Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(10722)
	КСообщенияОбОшибках    =  68

Ошибка.

Ошибка в обработчике события ПослеВыгрузкиОбъекта
	ПКО                    =  Контрагенты  (Справочник: Договоры)
	Объект                 =  Договор №2000683 от 12.04.2017  (Справочник объект: Договоры)
	Обработчик             =  ПослеВыгрузкиОбъекта
	ОписаниеОшибки         =  Ошибка получения свойства объекта из входящих данных
	ПКО                    =  КонтактнаяИнформацияКонтрагента  ( --> РегистрСведенийЗапись.КонтактнаяИнформация)
	ПКС                    =  1  (--> Объект)
	Объект                 =  Договор №2000683 от 12.04.2017  (Справочник объект: Договоры)
	СвойствоПриемника      =  Объект  ()
	ОписаниеОшибки         =  Получение элемента по индексу для значения не определено
	ПозицияМодуля          =  Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(10722)
	КСообщенияОбОшибках    =  68
	ПозицияМодуля          =  Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(4272)
	КСообщенияОбОшибках    =  43
Показать
11. pm74 199 06.11.17 23:37 Сейчас в теме
(8)
ПКО = Контрагенты

почему в ПКО Контрагенты ? в ПВД Контрагенты "после выгрузки" вроде бы логичнее
12. Xershi 1484 06.11.17 23:40 Сейчас в теме
(11) т.е. (9) перекинуть в ПВД = Контрагенты обработчик = После выгрузки?

Примерно так:
Источник = Объект.Ссылка;

ВыгрузитьПоПравилу(Источник, , , , "КонтактныеЛица");
ВыгрузитьПоПравилу(Источник, , , , "КонтактныеЛицаКонтрагентов");

ВыгрузитьПоПравилу(Источник, , , , "КатегорииОбъектовКонтрагентов");

Если ЗначениеЗаполнено(Источник.ЮЛ_Телефон) Тогда
	ВыгрузитьПоПравилу(Источник, , , , "КонтактнаяИнформацияКонтрагента");
КонецЕсли;

Если ЗначениеЗаполнено(Источник.ТелефонПредставителя) Тогда
	ВыгрузитьПоПравилу(Источник, , , , "КонтактнаяИнформацияКЛКТелефон");
КонецЕсли;

Если ЗначениеЗаполнено(Источник.emailПредставителя) Тогда
	ВыгрузитьПоПравилу(Источник, , , , "КонтактнаяИнформацияКЛКАдресЭлектроннойПочты");
КонецЕсли;


Показать


Ага спасибо все получилось!
13. pm74 199 06.11.17 23:42 Сейчас в теме
(12) ну я обычно так делаю , по идее тогда КИ должна выгружатся только 1 раз а не при каждом преобразовании в ПКО
Прикрепленные файлы:
15. Xershi 1484 06.11.17 23:45 Сейчас в теме
(13) 3 проблему решили.

Может знаете как решить 4? Без костыля?
18. pm74 199 06.11.17 23:51 Сейчас в теме
(15) боюсь без костыля никак , регистрация изменений все равно удаляется где-то в коде (УдалитьРегистрациюИзменений) , где то есть отсылка на старый план обмена , нужно найти как выбираются узлы для очистки регистрации
19. Xershi 1484 06.11.17 23:55 Сейчас в теме
(18) на мисте инкрементальный экспорт - есть готовый пример.
Я его ранее использовал.
Но он там не совсем корректно сделан чутка переписывал, чтобы ошибок не было!

Сам не разбирался, а в типовых как реализовано 3 стороннее рукопожатие через алгоритмы?
20. pm74 199 06.11.17 23:57 Сейчас в теме
(19) боюсь тут я не помощник , с типовыми механизмами недостаточно знаком
21. pm74 199 07.11.17 00:12 Сейчас в теме
(19) делал когда то нетиповую выгрузку с использованием пло ут10.2 -> бп2 через com , там регистрацию очищалась при успешной загрузке в приемнике , использовал обработки УниверсальнаяВызрузкаXML в обеих базах слегка измененные. Стандартное поведение насколько помню , очищать регистрацию стразу после успешной выгрузки
14. pm74 199 06.11.17 23:45 Сейчас в теме
(12) странно что в (8) в ошибке ссылка на договор , а не контрагента
16. Xershi 1484 06.11.17 23:46 Сейчас в теме
(14) Источник это договор в 8.3. Все корректно там! Контрагент есть только в 8.2.
9. Xershi 1484 06.11.17 23:24 Сейчас в теме
Немного пораскинув о том, что ты написал, я переписал правила без входящих данных
Заодно разделил правила для телефонов и почты у КЛК, чтобы работало.

ВыгрузитьПоПравилу(Источник, , , , "КонтактныеЛица");
ВыгрузитьПоПравилу(Источник, , , , "КонтактныеЛицаКонтрагентов");

ВыгрузитьПоПравилу(Источник, , , , "КатегорииОбъектовКонтрагентов");

Если ЗначениеЗаполнено(Источник.ЮЛ_Телефон) Тогда
	ВыгрузитьПоПравилу(Источник, , , , "КонтактнаяИнформацияКонтрагента");
КонецЕсли;

Если ЗначениеЗаполнено(Источник.ТелефонПредставителя) Тогда
	ВыгрузитьПоПравилу(Источник, , , , "КонтактнаяИнформацияКЛКТелефон");
КонецЕсли;

Если ЗначениеЗаполнено(Источник.emailПредставителя) Тогда
	ВыгрузитьПоПравилу(Источник, , , , "КонтактнаяИнформацияКЛКАдресЭлектроннойПочты");
КонецЕсли;
Показать


Такой код стал работать без ошибок. Но стало дублировать контрагентов.
Возможно стоит поставить, где-то галочку?
10. Xershi 1484 06.11.17 23:34 Сейчас в теме
Данная настройка не решила вопрос.
Прикрепленные файлы:
17. Xershi 1484 06.11.17 23:51 Сейчас в теме
Свежие правила рабочие:
Прикрепленные файлы:
ПравилаОбменаДанными.zip
22. Xershi 1484 07.11.17 13:10 Сейчас в теме
Вот о чем я говорил "v8: Инкрементальный экспорт с ипользованием Конвертации Данных v8":
http://kb.mista.ru/article.php?id=356

Применил второй метод.

Регистрация удалилась после выгрузки.

Если нет варианта как решить 4 проблему по типовому обмену, то буду использовать данный код.
Решение приложил!
Прикрепленные файлы:
ПравилаОбменаДанными.zip
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот