Где найти и как изменить правила переноса данных из УТ 11.4 в БП 3.0

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

При работе с современными конфигурациями на платформе 1С:Предприятие 8.3, такими как Управление торговлей 11.4 и Бухгалтерия предприятия 3.0, многие разработчики сталкиваются с вопросом: где находятся привычные файлы правил обмена (xml)? Часто возникает ситуация, когда типовая синхронизация работает не совсем корректно — например, документы переносятся, но в них отсутствуют важные реквизиты, такие как НомерВходящегоДокумента или ДатаВходящегоДокумента. Разберемся, как устроена современная система обмена и как внести в нее изменения.

Архитектура обмена через универсальный формат (EnterpriseData)

Первое и самое важное, что нам необходимо понять: в современных типовых решениях классические правила обмена, созданные в Конвертации данных 2.0, больше не используются для регулярной синхронизации. Вместо них применяется технология EnterpriseData.

В этой архитектуре нет отдельного внешнего файла правил ExchangeRules.xml. Вся логика сопоставления полей документов и справочников «зашита» непосредственно в программный код конфигурации. Рассмотрим, где именно она находится:

  1. За выгрузку данных из 1С:УТ 11 отвечает общий модуль МенеджерОбменаЧерезУниверсальныйФормат (внутри самой УТ).
  2. За загрузку данных в 1С:БП 3.0 отвечает аналогичный общий модуль МенеджерОбменаЧерезУниверсальныйФормат, но уже находящийся в составе конфигурации Бухгалтерии.

Таким образом, если вы хотите изменить логику переноса, вам не нужно искать файл на диске. Вам нужно работать либо с кодом этих модулей, либо использовать инструмент Конвертация данных 3.0.

Почему пропадают входящие номера и даты поставщиков?

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

Также часто встречается ситуация, когда в модуле МенеджерОбменаЧерезУниверсальныйФормат просто пропущена инициализация соответствующих свойств для конкретного типа документа. Выясним, как это проверить. Нам нужно найти процедуру, отвечающую за выгрузку нужного документа, например, ПриобретениеТоваровУслуг. В коде это выглядит примерно так:


Процедура Пр_Выгрузить_Документ_ПриобретениеТоваровУслуг(ДанныеИБ, ДанныеXDTO, КомпонентыОбмена)
    // Здесь происходит сопоставление реквизитов документа 1С
    // и свойств объекта формата XML (EnterpriseData)
    ДанныеXDTO.НомерВходящегоДокумента = ДанныеИБ.НомерВходящегоДокумента;
    ДанныеXDTO.ДатаВходящегоДокумента  = ДанныеИБ.ДатаВходящегоДокумента;
КонецПроцедуры

Если подобных строк в коде нет, то данные даже не попадут в файл обмена.

Как использовать Конвертацию данных 3.0

Если вы решили использовать официальный инструмент для правки правил, вам понадобится Конвертация данных 3.0 (КД 3). Важно понимать, что методика работы здесь в корне отличается от КД 2.0. Рассмотрим пошаговый алгоритм:

  1. Выгрузка структуры: Вам не нужно выгружать правила. Вам нужно выгрузить структуру конфигураций (УТ и БП) и структуру используемого формата EnterpriseData.xsd.
  2. Загрузка в КД 3.0: Загрузите полученные структуры в базу Конвертации данных.
  3. Настройка маппинга: В КД 3.0 вы настраиваете соответствие между объектами конфигурации и объектами универсального формата.
  4. Генерация модуля: После настройки КД 3.0 не выдает файл .xml. Она генерирует текст программного кода для модуля МенеджерОбменаЧерезУниверсальныйФормат.
  5. Внедрение: Полученный код необходимо скопировать и вставить в соответствующий модуль в 1С:Предприятии.

Корректировка обмена без изменения типовой конфигурации

Чтобы сохранить конфигурацию на поддержке, мы настоятельно рекомендуем использовать механизм расширений. Это позволит вам переопределить логику обмена, не затрагивая основной код системы. Проанализируем, как это сделать для исправления проблемы с входящими номерами:

Создадим расширение и добавим в него процедуру-перехватчик для модуля менеджера обмена. Мы можем использовать аннотацию &После для процедуры загрузки данных в БП 3.0:


&После("Пр_ПриЗагрузкеОбъекта")
Процедура Расш_Пр_ПриЗагрузкеОбъекта(Объект, ДанныеXDTO, КомпонентыОбмена)
    Если ТипЗнч(Объект) = Тип("ДокументОбъект.ПоступлениеТоваровУслуг") Тогда
        // Проверяем наличие данных в структуре XDTO и заполняем объект
        Если ДанныеXDTO.Свойства().Доступно("НомерВходящегоДокумента") Тогда
            Объект.НомерВходящегоДокумента = ДанныеXDTO.НомерВходящегоДокумента;
        КонецЕсли;
        Если ДанныеXDTO.Свойства().Доступно("ДатаВходящегоДокумента") Тогда
            Объект.ДатаВходящегоДокумента = ДанныеXDTO.ДатаВходящегоДокумента;
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры

Диагностика: на каком этапе пропадают данные?

Чтобы не делать лишнюю работу, сначала нужно выяснить, где именно происходит сбой: при выгрузке из УТ или при загрузке в БП. Рассмотрим, как провести диагностику самостоятельно:

  1. Зайдите в «Синхронизацию данных» и настройте обмен через локальный или сетевой каталог (через файл).
  2. Выполните выгрузку данных из УТ.
  3. Найдите созданный XML-файл в папке обмена и откройте его любым текстовым редактором (например, Notepad++).
  4. Найдите в файле ваш документ по номеру. Посмотрите, есть ли внутри узла документа теги, связанные с входящим номером (например, <NumberIn> или аналогичные, в зависимости от версии формата).

Результаты анализа:

Важные советы по работе с форматами

Посмотрим на настройки синхронизации. В узле обмена есть возможность выбрать версию формата (1.3, 1.5, 1.10 и т.д.). Каждая новая версия формата поддерживает больше полей и объектов. Попробуйте повысить версию формата в настройках обеих баз — возможно, ваша проблема уже решена разработчиками 1С в более свежих релизах формата EnterpriseData, и вам достаточно просто обновить конфигурации и перенастроить версию обмена.

Также помните, что для отладки обмена в формате EnterpriseData стандартная обработка V8Exch82.epf бесполезна. Вместо нее используйте встроенную обработку «Регистрация изменений для обмена данными», которая позволяет детально проанализировать состав выгружаемого сообщения обмена.

← На главную