Как настроить обмен новым документом между двумя базами 1С:УПП и сопоставить несовпадающую номенклатуру

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

При организации обмена данными между двумя независимыми конфигурациями 1С:Управление производственным предприятием (УПП) разработчики часто сталкиваются с ситуацией, когда в базы добавляется новый самописный документ, а нормативно-справочная информация (в частности, справочник Номенклатура) велась автономно в каждой из баз. В результате уникальные идентификаторы (GUID) одних и тех же позиций номенклатуры не совпадают.

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

Шаг 1. Добавление документа в планы обмена и регистрация прошлых объектов

Для организации обмена между двумя конфигурациями УПП в составе метаданных используются специальные планы обмена. Проанализируем, что необходимо сделать в Конфигураторе и пользовательском режиме:

  1. Включение документа в состав планов обмена: В режиме Конфигуратора откройте состав планов обмена ОбменУППУПП и ОбменУППУППФоновый. Включите созданный документ в состав обоих планов обмена. Флаг автоматической регистрации установите в значение Авторегистрация (или настройте алгоритм автоматической регистрации при проведении/записи).
  2. Регистрация ранее созданных документов: Документы, которые были введены в базе-источнике до включения их в состав плана обмена, автоматически на узел зарегистрированы не будут. Чтобы не перепроводить их вручную, воспользуйтесь стандартной обработкой Регистрация изменений для обмена данными.

Если требуется зарегистрировать объекты программно по определенному условию, разберем следующий пример кода:


УзелОбмена = ПланыОбмена.ОбменУППУПП.НайтиПоКоду("УЗЕЛ_ПРИЕМНИК");
Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |	ТекДок.Ссылка КАК Ссылка
    |ИЗ
    |	Документ.МойНовыйДокумент КАК ТекДок
    |ГДЕ
    |	ТекДок.Проведен = ИСТИНА";

РезультатЗапроса = Запрос.Выполнить().Выбрать();
Пока РезультатЗапроса.Следующий() Цикл
    ПланыОбмена.ЗарегистрироватьИзменения(УзелОбмена, РезультатЗапроса.Ссылка);
КонецЦикла;

Шаг 2. Выгрузка и корректировка правил обмена через Конвертацию Данных 2.1

Стандартный обмен УПП–УПП построена на правилах конвертации объектов (ПКО) и правилах выгрузки данных (ПВД), созданными в программе «1С:Конвертация данных 2.1» (КД 2.1).

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

  1. Выгрузите структуру метаданных конфигурации УПП с помощью обработки MD82.epf (так как УПП работает в режиме совместимости с платформой 8.2).
  2. Найдите типовые правила обмена. В конфигурации они находятся в макете ПравилаОбмена_УПП_УПП. Сохраните содержимое макета в файл XML.
  3. Загрузите полученный XML-файл правил в программу «1С:Конвертация данных 2.1».
  4. В КД 2.1 создайте новое ПКО для доработанного документа и соответствующее ПВД. В табличных частях документа укажите правила конвертации свойств (ПКС) для номенклатуры, контрагентов, складов и других справочников.
  5. Сохраните обновленные правила конвертации в новый XML-файл.

Шаг 3. Загрузка обновленных правил обмена без изменения макетов конфигуратора

Один из частых вопросов — обязательно ли править типовой макет ПравилаОбмена_УПП_УПП в конфигураторе? Ответ — нет. В УПП предусмотрен механизм подмены правил обмена напрямую в пользовательском режиме.

Выполним следующие действия в режиме «1С:Предприятие»:

  1. Перейдите в справочник Настройки обмена данными.
  2. Выберите или создайте настройку для нужного узла обмена.
  3. На вкладке настройки правил обмена загрузите подготовленный XML-файл с правилами из КД 2.1.

Типовой механизм УПП при выполнении обмена автоматически отдаст приоритет правилам, загруженным в справочник Настройки обмена данными, игнорируя макет из конфигуратора.

Шаг 4. Настройка сопоставления Номенклатуры с разным GUID

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

Выясним, как штатно решить проблему дублирования НСИ в 1С:УПП. Существует три основных подхода:

Вариант А. Использование регистра сведений «Соответствия объектов информационных баз»

В конфигурации УПП есть встроенный регистр сведений Соответствия объектов информационных баз. Этот регистр хранит связи вида:

[Узел обмена + УИД объекта в базе-источнике] -> [Ссылка на объект в базе-приемнике]

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

Вариант Б. Настройка полей поиска в Конвертации Данных 2.1

В КД 2.1 в ПКО справочника Номенклатура проанализируем настройки поиска:

  1. Снимите флаг Искать объект по уникальному идентификатору (или оставьте его, но настройте поля поиска при ненайденном УИД).
  2. Отметьте галочками Поиск ключевые поля сопоставления (например, Артикул и Наименование или Код).
  3. В свойствах ПКО включите опцию запоминания соответствий. В этом случае после первого успешного поиска по артикулу приемник сам создаст запись в регистре соответствий, и последующие выгрузки будут проходить по зарегистрированной ссылке.

Вариант В. Предварительное выравнивание GUID элементов

Если справочники полностью идентичны по составу, перед запуском регулярного обмена рекомендуется выполнить разовую синхронизацию GUID. С помощью специальной обработки ссылкам номенклатуры в базе-приемнике присваиваются аналогичные GUID из базы-источника. После выравнивания ГУИДов необходимость в поддержании регистра соответствий полностью отпадает.

Важное различие обработок: ОбменДаннымиXML и УниверсальныйОбменДаннымиXML

Проанализируем ключевое техническое различие между обработками загрузки данных, с которым часто путаются разработчики:

1. Штатная обработка ОбменДаннымиXML:
Используется системой по умолчанию при регламентном и интерактивном обмене через справочник Настройки обмена данными. Она полноценно поддерживает работу с регистром Соответствия объектов информационных баз. При загрузке объектов система сначала ищет соответствие в этом регистре, и лишь при его отсутствии переходит к поиску по GUID или полям поиска из правил.

2. Внешняя обработка УниверсальныйОбменДаннымиXML:
Предназначена для ручного обмена файлами. В своем стандартном виде она не обращаеся к специфическому регистру соответствий УПП и производит поиск strictly по GUID или по полям поиска, заданным непосредственно в правилах конвертации.

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

← На главную