При настройке типовых или пользовательских правил обмена в конфигурации Конвертация данных 2 (КД 2) между базами «1С:Управление торговлей 10.3» и «1С:Бухгалтерия предприятия 2.0» разработчики часто сталкиваются с ситуацией, когда документы переносятся, организация в шапке документа заполняется корректно, однако в справочнике Договоры контрагентов поле «Организация» остаётся пустым. Из-за этого при загрузке или последующем проведении документов возникают ошибки, так как программа требует совпадения организации в документе и в связанном договоре.
Рассмотрим подробнее причины возникновения этой проблемы, проанализируем ошибки при настройке правил конвертации и разберем варианты исправления данной ситуации.
Проанализируем основные факторы, которые приводят к выборочному или полному незаполнению организации в подчиненном справочнике при перегрузке данных:
Организации отключен поиск по внутреннему идентификатору, а поиск по ИНН или Наименованию настроен некорректно, система не может сопоставить элемент и пропускает его заполнение в зависимых объектах.Значение: В обработчике «Перед выгрузкой» правила конвертации свойств (ПКС) нельзя напрямую присваивать текстовую строку с наименованием организации или произвольный код, если ПКС ожидает ссылочный тип.Перед внесением изменений в правила обмена выполним диагностику информационной базы. Если в базе-источнике нарушена ссылочная целостность, правила обмена будут сбоить выборочно — только на тех объектах, где ссылочные связи повреждены.
Для проверки выполним стандартную процедуру:
Разберем настройку правила конвертации объектов для справочника Организации в Конвертации данных 2. Если названия организаций в источнике и приемнике отличаются (например, «ООО Компания» в УТ и «Компания, ООО» в БП), поиск по наименованию работать не будет. Настроим поиск по ИНН и КПП:
Организации.ИНН (и при необходимости КПП) установим флаг «Поиск».Наименование.Выясним, как правильно связать реквизит организации в справочнике договоров. Когда для одного справочника существует несколько ПКО или требуется гарантия вызова нужного правила, пропишем правило явным образом:
ДоговорыКонтрагентов.Организация.Важно помнить: в обработчике «Перед выгрузкой» ПКС Организация нельзя писать код вида:
// НЕПРАВИЛЬНО: передача строки в ссылочное свойство
Значение = "ООО Компания";
Если требуется передать конкретную организацию из приемника по коду, используем поиск по ссылке в обработчиках загрузки или используем механизмы параметров. В обработчиках выгрузки переменная Значение должна содержать объект или ссылку соответствующего типа источника.
Если правила обмена уже применены, данные загружены, но в части договоров организация так и не проставилась из-за исторически накопленных ошибок в базе, применим программное проставление организации с последующим проведением документов.
Напишем фрагмент кода для внешней обработки в базе-приемнике («Бухгалтерия предприятия»), который обойдет загруженные документы, заполнит пустую организацию в договоре на основании организации из шапки документа и проведет их:
ВыборкаДокументов = Документы.РеализацияТоваровУслуг.Выбрать(ДатаНачала, ДатаОкончания);
Пока ВыборкаДокументов.Следующий() Цикл
ДокументОбъект = ВыборкаДокументов.ПолучитьОбъект();
ДоговорСсылка = ДокументОбъект.ДоговорКонтрагента;
Если ЗначениеЗаполнено(ДоговорСсылка) И НЕ ЗначениеЗаполнено(ДоговорСсылка.Организация) Тогда
ДоговорОбъект = ДоговорСсылка.ПолучитьОбъект();
ДоговорОбъект.Организация = ДокументОбъект.Организация;
Попытка
ДоговорОбъект.Записать();
Исключение
ЗаписьЖурналаРегистрации("Ошибка записи договора",
УровеньЖурналаРегистрации.Ошибка,,, ОписаниеОшибки());
КонецПопытки;
КонецЕсли;
// Проводим документ после исправления договора
Если ДокументОбъект.Проведен Тогда
Попытка
ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
Исключение
ЗаписьЖурналаРегистрации("Ошибка проведения документа",
УровеньЖурналаРегистрации.Ошибка,,, ОписаниеОшибки());
КонецПопытки;
КонецЕсли;
КонецЦикла;
Для успешной синхронизации организации в договорах контрагентов при обмене через Конвертацию данных 2 соблюдаем следующий алгоритм:
Организация в правилах конвертации договоров и документов.