Почему в договорах контрагентов не проставляется организация при обмене через КД 2 и как это исправить?

Программист 1С v8.3 (Обычные формы) 1С:Управление торговлей IT и автоматизация бизнеса
← На главную

При настройке типовых или пользовательских правил обмена в конфигурации Конвертация данных 2 (КД 2) между базами «1С:Управление торговлей 10.3» и «1С:Бухгалтерия предприятия 2.0» разработчики часто сталкиваются с ситуацией, когда документы переносятся, организация в шапке документа заполняется корректно, однако в справочнике Договоры контрагентов поле «Организация» остаётся пустым. Из-за этого при загрузке или последующем проведении документов возникают ошибки, так как программа требует совпадения организации в документе и в связанном договоре.

Рассмотрим подробнее причины возникновения этой проблемы, проанализируем ошибки при настройке правил конвертации и разберем варианты исправления данной ситуации.

Причины незаполнения организации в договорах

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

  1. Нарушение ссылочной целостности в базе-источнике: Если в исходной информационной базе у контрагентов, документов или договоров есть битые ссылки («Объект не найден»), то при выгрузке обращение к реквизитам организации возвращает пустое значение.
  2. Ошибки в настройках полей поиска ПКО: Если для справочника Организации отключен поиск по внутреннему идентификатору, а поиск по ИНН или Наименованию настроен некорректно, система не может сопоставить элемент и пропускает его заполнение в зависимых объектах.
  3. Некорректное использование обработчиков событий и переменной Значение: В обработчике «Перед выгрузкой» правила конвертации свойств (ПКС) нельзя напрямую присваивать текстовую строку с наименованием организации или произвольный код, если ПКС ожидает ссылочный тип.
  4. Несколько ПКО для одного справочника: Если в правилах обмена создано несколько правил конвертации для организации, а в ПКС «Организация» договора явно не указано требуемое ПКО, платформа может применить правило по умолчанию, которое работает иначе.

Шаг 1. Проверка ссылочной целостности базы-источника

Перед внесением изменений в правила обмена выполним диагностику информационной базы. Если в базе-источнике нарушена ссылочная целостность, правила обмена будут сбоить выборочно — только на тех объектах, где ссылочные связи повреждены.

Для проверки выполним стандартную процедуру:

  1. Создадим резервную копию информационной базы.
  2. Зайдем в режим «Предприятие» или «Конфигуратор».
  3. В меню «Администрирование» выберем пункт «Тестирование и исправление».
  4. Отметим флажком пункт «Проверка ссылочной целостности информационной базы».
  5. При наличии битых ссылок выберем вариант «Очищать ссылки» или «Создавать объекты».
  6. Запустим тестирование и дождемся завершения процесса.

Шаг 2. Проверка и настройка ПКО «Организации»

Разберем настройку правила конвертации объектов для справочника Организации в Конвертации данных 2. Если названия организаций в источнике и приемнике отличаются (например, «ООО Компания» в УТ и «Компания, ООО» в БП), поиск по наименованию работать не будет. Настроим поиск по ИНН и КПП:

  1. Откроем КД 2 и перейдем в ПКО Организации.
  2. В ПКС ИНН (и при необходимости КПП) установим флаг «Поиск».
  3. Снимите флаг «Поиск» с ПКС Наименование.
  4. В настройках самого ПКО убедимся, что снят флаг «Искать по внутреннему идентификатору», если объекты в базах создавались независимо и имеют разные UID.
  5. В обработчике «Поля поиска» закомментируем или удалим код, переопределяющий стандартную логику сопоставления, если он был прописан вручную.

Шаг 3. Указание явного ПКО в ПКС договора

Выясним, как правильно связать реквизит организации в справочнике договоров. Когда для одного справочника существует несколько ПКО или требуется гарантия вызова нужного правила, пропишем правило явным образом:

  1. Откроем ПКО ДоговорыКонтрагентов.
  2. Найдем правило конвертации свойства (ПКС) Организация.
  3. В поле «Правило конвертации объектов» выберем из списка именно то ПКО для организаций, в котором настроен поиск по ИНН.

Важно помнить: в обработчике «Перед выгрузкой» ПКС Организация нельзя писать код вида:


// НЕПРАВИЛЬНО: передача строки в ссылочное свойство
Значение = "ООО Компания"; 

Если требуется передать конкретную организацию из приемника по коду, используем поиск по ссылке в обработчиках загрузки или используем механизмы параметров. В обработчиках выгрузки переменная Значение должна содержать объект или ссылку соответствующего типа источника.

Шаг 4. Альтернативное решение через внешнюю обработку

Если правила обмена уже применены, данные загружены, но в части договоров организация так и не проставилась из-за исторически накопленных ошибок в базе, применим программное проставление организации с последующим проведением документов.

Напишем фрагмент кода для внешней обработки в базе-приемнике («Бухгалтерия предприятия»), который обойдет загруженные документы, заполнит пустую организацию в договоре на основании организации из шапки документа и проведет их:


ВыборкаДокументов = Документы.РеализацияТоваровУслуг.Выбрать(ДатаНачала, ДатаОкончания);

Пока ВыборкаДокументов.Следующий() Цикл
    
    ДокументОбъект = ВыборкаДокументов.ПолучитьОбъект();
    ДоговорСсылка = ДокументОбъект.ДоговорКонтрагента;
    
    Если ЗначениеЗаполнено(ДоговорСсылка) И НЕ ЗначениеЗаполнено(ДоговорСсылка.Организация) Тогда
        
        ДоговорОбъект = ДоговорСсылка.ПолучитьОбъект();
        ДоговорОбъект.Организация = ДокументОбъект.Организация;
        
        Попытка
            ДоговорОбъект.Записать();
        Исключение
            ЗаписьЖурналаРегистрации("Ошибка записи договора", 
                УровеньЖурналаРегистрации.Ошибка,,, ОписаниеОшибки());
        КонецПопытки;
        
    КонецЕсли;
    
    // Проводим документ после исправления договора
    Если ДокументОбъект.Проведен Тогда
        Попытка
            ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
        Исключение
            ЗаписьЖурналаРегистрации("Ошибка проведения документа", 
                УровеньЖурналаРегистрации.Ошибка,,, ОписаниеОшибки());
        КонецПопытки;
    КонецЕсли;

КонецЦикла;

Резюме

Для успешной синхронизации организации в договорах контрагентов при обмене через Конвертацию данных 2 соблюдаем следующий алгоритм:

  1. Устраняем ошибки ссылочной целостности в базе-источнике с помощью тестирования и исправления.
  2. Настраиваем правила поиска организации по ИНН/КПП без привязки к внутреннему идентификатору.
  3. Явно указываем ПКО для реквизита Организация в правилах конвертации договоров и документов.
  4. Избегаем некорректного присвоения строковых значений ссылочным реквизитам в обработчиках КД 2.
  5. В случае единовременного сбоя на существующих данных применяем групповую обработку для заполнения реквизитов в базе-приемнике.
← На главную