Как правильно перенести реквизит ДокументыОснования у документа Счет-фактура полученный при конвертации данных

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

При переносе данных между конфигурациями «1С:Комплексная автоматизация 2.4» (КА 2.4) и «1С:Бухгалтерия предприятия 3.0» (БП 3.0) с помощью «Конвертации данных 2.1» разработчики часто сталкиваются с проблемой: табличная часть ДокументыОснования документа СчетФактураПолученный кажется пустой в базе-приемнике, хотя данные физически перенесены. Также часто отсутствует визуальная связь (гиперссылка) в подвале документа-основания.

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

Разбор причины проблемы: несоответствие типов и структур

Проанализируем ситуацию. В источнике (КА 2.4) документ-основание обычно имеет тип ДокументСсылка.ПриобретениеТоваровУслуг. В приемнике (БП 3.0) аналогичный документ имеет тип ДокументСсылка.ПоступлениеТоваровУслуг. Если в ПКС табличной части ДокументыОснования не указано конкретное ПКО для сопоставления этих типов, система не сможет корректно создать ссылку. Вместо этого в базе-приемнике может появиться пустая строка или «битая ссылка».

Вторая важная особенность БП 3.0 заключается в том, что форма документа СчетФактураПолученный визуализирует данные через динамические механизмы. Если табличная часть заполнена, но не обновлены вспомогательные реквизиты или не отработали серверные процедуры при записи, поле на форме останется пустым.

Шаг 1. Настройка правил конвертации объектов (ПКО)

Прежде всего, нам необходимо убедиться, что для каждого типа документа-основания создано свое правило. Рассмотрим последовательность действий:

  1. Проверим наличие ПКО для документа ПоступлениеТоваровУслуг.
  2. В ПКО для СчетФактураПолученный найдем табличную часть ДокументыОснования.
  3. Для реквизита ДокументОснование внутри этой табличной части в колонке Правило обязательно укажем ПКО, которое конвертирует ПриобретениеТоваровУслуг (источник) в ПоступлениеТоваровУслуг (приемник).

Без четкого указания правила система может попытаться найти объект по идентификатору (UID), но так как типы метаданных различаются, сопоставление не произойдет автоматически.

Шаг 2. Программная синхронизация реквизитов

В конфигурации «Бухгалтерия предприятия 3.0» для обеспечения совместимости со старыми алгоритмами и для удобства работы некоторых механизмов печати, помимо табличной части ДокументыОснования, может существовать скрытый или вспомогательный реквизит ДокументОснование (в единственном числе). Если он не заполнен, некоторые элементы формы могут работать некорректно.

Рассмотрим пример кода, который необходимо разместить в обработчике ПослеЗагрузки в ПКО документа СчетФактураПолученный:


Если Объект.ДокументыОснования.Количество() > 0 Тогда
    // Заполняем основной реквизит первой строкой из таблицы оснований
    Объект.ДокументОснование = Объект.ДокументыОснования[0].ДокументОснование;
КонецЕсли;

Этот код гарантирует, что даже если в БП 3.0 форма ожидает заполнения одиночного реквизита для отображения связи, он будет заполнен на основании загруженной табличной части.

Шаг 3. Обеспечение визуального отображения связи в документах

Часто пользователи жалуются, что в документе ПоступлениеТоваровУслуг снизу не отображается гиперссылка на Счет-фактуру. Это происходит потому, что в БП 3.0 эта ссылка формируется на лету по данным регистра или по наличию записи в ТЧ счета-фактуры, ссылающегося на данное поступление.

Чтобы связь «взлетела», проанализируем следующие моменты:

  1. Порядок загрузки: Желательно, чтобы документ-основание (Поступление) загружался раньше, чем Счет-фактура. Либо убедитесь, что при загрузке Счета-фактуры ссылка на Поступление успешно находится в базе (по номеру, дате или UID).
  2. Обновление представлений: В БП 3.0 на форме часто отображается не сама табличная часть, а вычисляемая строка со списком оснований. Чтобы она обновилась, после загрузки объекта полезно вызвать процедуру инициализации.

Добавим в обработчик ПослеЗагрузки вызов типовых методов конфигурации-приемника (если это предусмотрено модулем объекта):


// Вызываем типовой метод заполнения вспомогательных реквизитов, 
// если он доступен в модуле объекта БП 3.0
Попытка
    Объект.ЗаполнитьПоляПоДокументамОснованиям();
Исключение
    // Если метод недоступен, механизм БП сам заполнит его при открытии формы
КонецПопытки;

Шаг 4. Настройка сопоставления полей в ПКС

Выясним причину, по которой табличная часть может быть «невидимой» до нажатия кнопки «Изменить». Это часто связано с тем, что в правилах конвертации свойств (ПКС) для ТЧ ДокументыОснования не были сопоставлены все обязательные поля. Проверьте, чтобы следующие поля были заполнены:

Важный совет: Если вы используете автоматическое создание правил, обязательно перепроверьте их вручную в интерфейсе «Конвертации данных». Автоматика часто пропускает правила для ссылочных типов внутри табличных частей, оставляя их пустыми.

Итоги

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

  1. Создать ПКО для сопоставления ПриобретениеТоваровУслуг с ПоступлениеТоваровУслуг.
  2. Явно указать это правило в ПКС для колонки ДокументОснование внутри табличной части.
  3. Использовать обработчик ПослеЗагрузки для синхронизации первого элемента таблицы с основным реквизитом объекта.
  4. При необходимости вызвать метод Объект.ЗаполнитьПоляПоДокументамОснованиям() для корректного отображения строкового представления оснований на форме.

Следуя этим шагам, мы добьемся полной идентичности данных и корректной работы интерфейса в базе «1С:Бухгалтерия предприятия 3.0».

← На главную