В процессе массового использования правил натолкнулись на проблему, которая скорее всего применима почти ко всем правилам.
Модуль
ОбменДаннымиXDTOСервер, процедура
ПроизвестиВыгрузкуДанных
В ней на одном из этапов производится регистрация к обмену объектов, выгруженных по ссылке.
Нас интересует блок
Код |
---|
// Назначаем номер отправленного сообщения для объектов, выгруженных по ссылке.
Если КомпонентыОбмена.ВыгруженныеПоСсылкеОбъекты.Количество() > 0 Тогда
// Выполняем регистрацию объектов на текущем узле, которые были выгружены по ссылке.
Для Каждого Элемент Из КомпонентыОбмена.ВыгруженныеПоСсылкеОбъекты Цикл
ПланыОбмена.ЗарегистрироватьИзменения(УзелДляОбмена, Элемент);
КонецЦикла;
ОбменДаннымиСервер.ВыбратьИзменения(УзелДляОбмена, НомерОтправленного, КомпонентыОбмена.ВыгруженныеПоСсылкеОбъекты);
КонецЕсли;
|
В него с применением правил 1001 (Для БП 3) попадают ссылки справочника ЗначенияСвойствОбъектов, по итогу этот кусок приводит к ошибке выгрузи данных.
Т.к. в исходном виде фоновый процесс вернет ошибку вида
Код |
---|
Недопустимое значение параметра (параметр номер '2')
{ОбщийМодуль.ОбменДаннымиXDTOСервер.Модуль(604)}:
ПланыОбмена.ЗарегистрироватьИзменения(УзелДляОбмена, Элемент);
|
И собственно все, что там было, какой Элемент выдал ошибку - попробуй догадайся. Фоновое задание в виде длительной операции в попытке попытки попытки.
Для диагностики вынесли процедуру в расширение и обернули в еще одну попытку
Код |
---|
Попытка
ПланыОбмена.ЗарегистрироватьИзменения(УзелДляОбмена, Элемент);
Исключение
// Если это ДопЗначение
ШаблонОписанияОшибки = НСтр("ru = 'Событие: Регистрация изменений.
|Узел: %1.
|
|Ошибка выполнения обработчика: ПланыОбмена.ЗарегистрироватьИзменения(УзелДляОбмена, Элемент).
|%2.
|
|Элемент: %3'");
ТекстЭлемент = ?(Элемент = неопределено, "Неопределено", СтрШаблон("%1 (%2), GUID: %3",
Элемент, ТипЗнч(Элемент), Элемент.УникальныйИдентификатор()));
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонОписанияОшибки,
УзелДляОбмена,
ПодробноеПредставлениеОшибки(ИнформацияОбОшибке()),
ТекстЭлемент);
ВызватьИсключение ТекстОшибки;
КонецПопытки;
|
Получили что-то вменяемое
Код |
---|
по причине:
Недопустимое значение параметра (параметр номер '2').
Элемент: Бумага, хочет ЭДО (Дополнительное значение), GUID: c876896e-ac50-11e9-8136-000c291ed005
|
И увидели, что все возникающие в этом месте ошибки связаны с попыткой зарегистрировать ссылку справочника
ЗначенияСвойствОбъектов
Возникает она потому что этот справочник ни в каком виде в состав ПланаОбмена СинхронизацияДанныхЧерезУниверсальныйФормат не входит.
Мы стараемся действовать с позиции невмешательства в конфигурацию поставщика без абсолютной необходимости, поэтому модифицировать состав плана обмена не стали. В первую очередь - потому что нам не требуется выгружать ДопСведения.
И тут мы приходим к итогу - нам не хватает опции "
не выгружать доп.сведения". Кому-то еще может в аналогичной ситуации не хватает опции "
Не выгружать доп.реквизиты".
Просьба принять во внимание в процессе развития проекта.