Как настроить обмен контактной информацией между БП 3.0 и УТ 10.3 через табличные части и исправить ошибки загрузки правил

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

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

Разбираемся с именованием файлов в архиве правил обмена

Одной из самых частых причин, по которым изменения в правилах «не подхватываются» базой, является путаница в файлах внутри ZIP-архива, который загружается в узлы обмена. Проанализируем структуру этого архива. В нем всегда должны присутствовать два основных файла:

  1. ExchangeRules.xml — это правила выгрузки для «текущей» базы. Если мы загружаем архив в БП 3.0 для выгрузки данных в УТ, то в этом файле должны быть правила, где источником выступает БП, а приемником — УТ.
  2. CorrespondentExchangeRules.xml — это правила для «базы-корреспондента». Текущая база хранит их внутри себя только для того, чтобы передать во вторую базу (например, при инициализации обмена), чтобы та знала, как выгружать данные обратно.

Рассмотрим важный нюанс: если вы редактируете правила в Конвертации данных 2.1, сохраняя их по отдельности, очень легко перепутать их местами при упаковке в архив. Выясним причину ошибки автора: он загружал правила в БП, но файл ExchangeRules.xml фактически содержал логику для УТ. При попытке выгрузки система не находила нужных метаданных или свойств, и табличная часть игнорировалась. Запомним правило: для корректной работы в БП 3.0 файл ExchangeRules.xml должен содержать схему «БП -> УТ».

Устранение ошибки ЗаполнитьРеквизитыПоУмолчанию при загрузке в УТ 10.3

Когда данные успешно выгружены в XML-файл, может возникнуть ошибка уже на стороне приемника (в нашем случае — УТ 10.3). Типичный текст ошибки сообщает о невозможности вызвать метод ЗаполнитьРеквизитыПоУмолчанию. Проанализируем ситуацию: этот метод является стандартным для конфигураций на базе Библиотеки стандартных подсистем (БСП), к которым относится БП 3.0. Однако УТ 10.3 построена на обычных формах и не содержит этого метода в модулях объектов.

Как эта процедура попадает в правила? Обычно это происходит при автоматической генерации правил или использовании типовых шаблонов из БП 3.0. Чтобы решить проблему, необходимо выполнить следующие действия в конфигурации «Конвертация данных»:

  1. Найдем ПКО (Правила конвертации объектов) для справочника Контрагенты.
  2. Перейдем на закладку «Обработчики событий».
  3. Проверим события ПриЗагрузке и ПослеЗагрузки.
  4. Если там встречается вызов Объект.ЗаполнитьРеквизитыПоУмолчанию(), его необходимо удалить или закомментировать.

Для УТ 10.3 вместо этого метода можно использовать типовые процедуры из общих модулей, если требуется заполнение недостающих реквизитов, например:


// Пример для УТ 10.3, если нужно заполнить счета учета или ответственных
// ЗаполнениеШапокДокументов.ЗаполнитьШапкуДокумента(Объект, глЗначениеПеременной("глТекущийПользователь"));

Настройка выгрузки табличных частей

Если метаданные в правилах соответствуют реальности (вы обновили описание метаданных в КД 2.1 после добавления ТЧ), но данные все равно не выгружаются, проверим Правила выгрузки данных (ПВД). Посмотрим на два сценария:

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

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

Посмотрим на пример кода, который можно использовать в обработчике ПередВыгрузкой для табличной части, если вы решили формировать ее программно, а не простым сопоставлением имен:


// Пример программного формирования коллекции ТЧ
КоллекцияОбъектов = Новый ТаблицаЗначений;
КоллекцияОбъектов.Колонки.Добавить("Вид");
КоллекцияОбъектов.Колонки.Добавить("Представление");

Для Каждого СтрокаКИ Из Источник.КонтактнаяИнформация Цикл
    НоваяСтрока = КоллекцияОбъектов.Добавить();
    НоваяСтрока.Вид = СтрокаКИ.Вид;
    НоваяСтрока.Представление = СтрокаКИ.Представление;
КонецЦикла;

Итоговый алгоритм синхронизации правил

Чтобы окончательно решить проблему и запустить обмен, пройдем по шагам процесса обновления правил:

  1. В базе «Конвертация данных» убедимся, что загружены актуальные метаданные из обеих баз (через обработку ВыгрузкаОписанияМетаданных.epf).
  2. В правилах «БП -> УТ» сопоставим новую ТЧ КонтактнаяИнформация.
  3. Выгрузим правила из КД. Полученный файл назовем ExchangeRules.xml.
  4. Выгрузим правила «УТ -> БП» (даже если вы их не меняли) и назовем файл CorrespondentExchangeRules.xml.
  5. Запакуем оба файла в ZIP-архив.
  6. Загрузим этот архив в БП 3.0 в настройках синхронизации данных (через «Параметры обмена данными» -> «Загрузить правила»).
  7. Выполним интерактивную выгрузку для проверки: откроем файл выгрузки (XML) любым текстовым редактором и убедимся, что внутри узла <Справочник.Контрагенты> появились узлы с данными вашей табличной части.

Проанализировав ситуацию, мы видим, что большинство проблем обмена связаны не с логическими ошибками в коде, а с нарушением регламента подготовки транспортного пакета правил и несовместимостью программных интерфейсов разных поколений платформ (БСП vs Обычные формы). Следование четкой структуре имен файлов в архиве и очистка кода от специфичных для БП функций гарантируют стабильную работу обмена.

← На главную