При настройке обмена данными между современной конфигурацией Бухгалтерия предприятия 3.0 (БП) и более старой Управление торговлей 10.3 (УТ) программисты часто сталкиваются с тем, что типовые механизмы хранения контактной информации сильно различаются. В БП 3.0 работа с адресами и телефонами глубоко интегрирована с БСП, в то время как в УТ 10.3 данные хранятся в классическом регистре сведений. Рассмотрим ситуацию, когда для упрощения задачи в обе конфигурации были добавлены одинаковые табличные части в справочник Контрагенты, но данные упорно не попадают в файл обмена или вызывают ошибки при загрузке.
Одной из самых частых причин, по которым изменения в правилах «не подхватываются» базой, является путаница в файлах внутри ZIP-архива, который загружается в узлы обмена. Проанализируем структуру этого архива. В нем всегда должны присутствовать два основных файла:
Рассмотрим важный нюанс: если вы редактируете правила в Конвертации данных 2.1, сохраняя их по отдельности, очень легко перепутать их местами при упаковке в архив. Выясним причину ошибки автора: он загружал правила в БП, но файл ExchangeRules.xml фактически содержал логику для УТ. При попытке выгрузки система не находила нужных метаданных или свойств, и табличная часть игнорировалась. Запомним правило: для корректной работы в БП 3.0 файл ExchangeRules.xml должен содержать схему «БП -> УТ».
Когда данные успешно выгружены в XML-файл, может возникнуть ошибка уже на стороне приемника (в нашем случае — УТ 10.3). Типичный текст ошибки сообщает о невозможности вызвать метод ЗаполнитьРеквизитыПоУмолчанию. Проанализируем ситуацию: этот метод является стандартным для конфигураций на базе Библиотеки стандартных подсистем (БСП), к которым относится БП 3.0. Однако УТ 10.3 построена на обычных формах и не содержит этого метода в модулях объектов.
Как эта процедура попадает в правила? Обычно это происходит при автоматической генерации правил или использовании типовых шаблонов из БП 3.0. Чтобы решить проблему, необходимо выполнить следующие действия в конфигурации «Конвертация данных»:
Контрагенты.ПриЗагрузке и ПослеЗагрузки.Объект.ЗаполнитьРеквизитыПоУмолчанию(), его необходимо удалить или закомментировать.Для УТ 10.3 вместо этого метода можно использовать типовые процедуры из общих модулей, если требуется заполнение недостающих реквизитов, например:
// Пример для УТ 10.3, если нужно заполнить счета учета или ответственных
// ЗаполнениеШапокДокументов.ЗаполнитьШапкуДокумента(Объект, глЗначениеПеременной("глТекущийПользователь"));
Если метаданные в правилах соответствуют реальности (вы обновили описание метаданных в КД 2.1 после добавления ТЧ), но данные все равно не выгружаются, проверим Правила выгрузки данных (ПВД). Посмотрим на два сценария:
Сценарий А: Выгрузка объекта целиком. Если контрагент выгружается по ПВД (например, при полной синхронизации), то табличная часть выгрузится автоматически, если для нее создано ПКС (Правило конвертации свойства) и сопоставлены колонки.
Сценарий Б: Выгрузка по ссылке. Если контрагент попадает в обмен «паровозом» за документом (например, Реализацией), то выгрузка ТЧ зависит от настроек ПКО. Проанализируем настройки ПКС для вашей табличной части. Убедитесь, что не установлена галочка Не выгружать объекты свойства непосредственно (выгружать только ссылку) в правилах для самого контрагента.
Посмотрим на пример кода, который можно использовать в обработчике ПередВыгрузкой для табличной части, если вы решили формировать ее программно, а не простым сопоставлением имен:
// Пример программного формирования коллекции ТЧ
КоллекцияОбъектов = Новый ТаблицаЗначений;
КоллекцияОбъектов.Колонки.Добавить("Вид");
КоллекцияОбъектов.Колонки.Добавить("Представление");
Для Каждого СтрокаКИ Из Источник.КонтактнаяИнформация Цикл
НоваяСтрока = КоллекцияОбъектов.Добавить();
НоваяСтрока.Вид = СтрокаКИ.Вид;
НоваяСтрока.Представление = СтрокаКИ.Представление;
КонецЦикла;
Чтобы окончательно решить проблему и запустить обмен, пройдем по шагам процесса обновления правил:
ВыгрузкаОписанияМетаданных.epf).КонтактнаяИнформация.ExchangeRules.xml.CorrespondentExchangeRules.xml.<Справочник.Контрагенты> появились узлы с данными вашей табличной части.Проанализировав ситуацию, мы видим, что большинство проблем обмена связаны не с логическими ошибками в коде, а с нарушением регламента подготовки транспортного пакета правил и несовместимостью программных интерфейсов разных поколений платформ (БСП vs Обычные формы). Следование четкой структуре имен файлов в архиве и очистка кода от специфичных для БП функций гарантируют стабильную работу обмена.