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