Как корректно перенести документы ввода остатков из УТ 11 в БП 3.0 через КД 2.0 и настроить заполнение договоров?

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

Перенос начальных остатков — одна из самых ответственных задач при переходе с одной конфигурации на другую или при настройке обмена. Часто стандартная синхронизация 1С:Управление торговлей 11 (УТ 11) и 1С:Бухгалтерия предприятия 3.0 (БП 3.0) не закрывает потребность в переносе документов ввода остатков, так как она ориентирована на текущий документооборот. В таких случаях мы прибегаем к использованию Конвертации данных 2.0 (КД 2.0). Рассмотрим типичную проблему: при переносе документа ввода остатков задолженности поле Договор в целевой базе остается пустым, хотя сами договоры успешно создаются.

Выясняем причину: почему поле «Договор» остается пустым?

Проанализируем структуру данных в источнике. В современных редакциях УТ 11.4 учет взаиморасчетов устроен сложнее, чем в старых версиях или в БП 3.0. В документе ввода остатков (например, при вводе задолженности клиента) поле Договор может быть визуально доступно на форме, но физически в данных объекта оно часто не заполнено. Это связано с тем, что основным разрезом учета выступает ОбъектРасчетов.

Объект расчетов — это составной тип данных, который может содержать ссылку на:

Если в правилах конвертации свойств (ПКС) в качестве источника указано поле Договор, а в базе УТ оно не заполнено (так как данные хранятся в ОбъектРасчетов), то в приемник (БП 3.0) придет пустое значение. Разберем шаги по исправлению этой ситуации.

Шаг 1. Перенастройка ПКС для поля «Договор»

Первым делом нам необходимо изменить сопоставление свойств в правиле конвертации объектов (ПКО) для документа ввода остатков. Вместо того чтобы пытаться выгружать пустое поле Договор, мы обратимся к полю ОбъектРасчетов.

В конфигурации «Конвертация данных» найдем соответствующее ПКО и в таблице ПКС для свойства Договор (приемник) укажем источник ОбъектРасчетов. Однако простого сопоставления недостаточно, так как типы данных могут не совпадать. Нам потребуется написать небольшой программный обработчик.

Шаг 2. Настройка обработчика «Перед выгрузкой»

Рассмотрим ситуацию, когда ОбъектРасчетов в УТ является заказом или накладной, а в БП нам в любом случае нужен договор. Нам нужно программно «вытащить» договор из этого объекта. В ПКС для свойства Договор в обработчике Перед выгрузкой напишем следующий код:


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

КонецЕсли;

// Если в итоге значение пустое, можно подставить договор по умолчанию
Если НЕ ЗначениеЗаполнено(Значение) Тогда
    // Здесь может быть логика поиска основного договора контрагента
КонецЕсли;

Шаг 3. Настройка поиска в ПКО «ДоговорыКонтрагентов»

Проанализируем еще одну частую проблему: договор переносится, но не подставляется в документ. Это происходит, когда система не может однозначно сопоставить договор в приемнике. В 1С ДоговорыКонтрагентов — это справочник, подчиненный контрагенту и организации. Если поиск настроен только по наименованию или только по внутреннему идентификатору (GUID), возможны ошибки.

Выполним следующие настройки в ПКО ДоговорыКонтрагентов:

  1. Убедимся, что для свойств Владелец (Контрагент), Организация и Наименование (или Номер) установлены флаги Поиск.
  2. В настройках ПКО установим галочку Продолжить поиск по полям поиска, если по идентификатору объект не найден. Это критически важно, если базы ранее не были идеально синхронизированы по GUID.
  3. Проверим обработчик ПоляПоиска. Иногда там избыточно переопределяется логика, которая обнуляет результат при несовпадении какого-то второстепенного реквизита.

Шаг 4. Учет специфики БП 3.0 (Документы расчетов)

Разберем важный нюанс учета в Бухгалтерии предприятия. В БП 3.0 документ ввода остатков требует заполнения не только договора, но и ссылки на документ расчетов, если на счете учета (например, 62.01 или 60.01) настроено субконто Документы расчетов с контрагентами.

Если мы переносим ОбъектРасчетов из УТ как Договор, мы теряем детализацию по накладным. В идеальном сценарии нам нужно:

Шаг 5. Проверка режима записи и выгрузки

Посмотрим на ситуацию со стороны COM-соединения или выгрузки в файл. Если вы используете выгрузку через файл, убедитесь, что в правилах выгрузки данных (ПВД) документ ввода остатков включен и для него не стоят фильтры, отсекающие связанные объекты.

Если договор создается в процессе загрузки документа («по ссылке»), проверьте, заполнено ли поле Правило конвертации в ПКС для договора. Если оставить его пустым, КД 2.0 будет пытаться подобрать правило автоматически. Для составного типа ОбъектРасчетов это может привести к тому, что система выберет не то ПКО, и объект не будет создан корректно.

Резюме и рекомендации

Для успешного переноса остатков задолженности с корректным заполнением договоров выполним следующие действия:

  1. Проанализируем источник: убедимся, что в УТ 11 данные о договоре действительно лежат в ОбъектРасчетов.
  2. Исправим ПКС: перенаправим источник в поле ОбъектРасчетов и добавим код в обработчик «Перед выгрузкой» для извлечения ссылки на договор из заказов и реализаций.
  3. Настроим ПКО Договора: обеспечим поиск по связке Владелец + Организация + Номер/Наименование.
  4. Используем отладчик: если поле всё равно пустое, воспользуемся обработкой «Выгрузка данных» с включенным режимом отладки обработчиков, чтобы увидеть, какое значение фактически передается в Значение перед выгрузкой.

Использование этих методов позволит избежать ручного дозаполнения документов после переноса и обеспечит целостность бухгалтерского учета в новой базе.

← На главную