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