Как добавить правила обмена из Конвертации данных 2.1 в 1С:УНФ для работы регламентных заданий

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

При разработке обмена данными между конфигурациями 1С часто возникает ситуация, когда правила, созданные в Конвертации данных 2.1 (КД 2.1), отлично работают в ручном режиме через обработку УниверсальныйОбменДаннымиXML, но вызывают сложности при попытке автоматизировать процесс. Особенно это актуально для 1С:Управление нашей фирмой (УНФ), где пользователи могут работать на разных компьютерах, а обмен должен выполняться стабильно по расписанию на сервере без необходимости указывать путь к файлу правил на каждом рабочем месте.

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

Метод 1. Использование встроенных механизмов БСП (без изменения конфигурации)

Поскольку 1С:УНФ построена на базе Библиотеки стандартных подсистем (БСП), нам доступен мощный функционал синхронизации данных. Рассморим, как загрузить внешние правила так, чтобы система хранила их в базе данных, а не в отдельном XML-файле на диске. Для типовых задач перехода из других конфигураций предусмотрен раздел с решениями для переноса данных в 1С:УНФ.

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

  1. Откроем программу в режиме «1С:Предприятие» под правами администратора.
  2. Перейдем в раздел Администрирование — Синхронизация данных.
  3. Если мы используем типовой план обмена, выберем его и найдем пункт «Загрузить правила».
  4. В открывшейся форме выберем вариант «Из файла на компьютере» и загрузим наш XML-файл, сформированный в КД 2.1.

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

Метод 2. Интеграция правил в макет плана обмена (через Конфигуратор)

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

  1. Создание Плана обмена: В конфигураторе создадим новый объект ПланОбмена. Назовем его, например, ОбменУНФ_БухгалтерияCustom.
  2. Добавление макета: В дереве метаданных нашего нового плана обмена перейдем на закладку «Макеты». Создадим макет с типом «Текстовый документ» и назовем его ПравилаКонвертации.
  3. Загрузка XML: Откроем XML-файл с правилами, сформированный в КД 2.1, скопируем все его содержимое и вставим в созданный макет.
  4. Регистрация изменений: На вкладке «Состав» нашего плана обмена укажем объекты (справочники, документы), которыми планируем обмениваться, и установим для них режим «Авторегистрация».

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


Функция ПолучитьПравилаИзМакета() Экспорт
    Макет = ПланыОбмена.ОбменУНФ_БухгалтерияCustom.ПолучитьМакет("ПравилаКонвертации");
    Возврат Макет.ПолучитьТекст();
КонецФункции

Метод 3. Автоматизация через регламентные задания

Выясним, как заставить обмен работать автоматически на стороне сервера. Для этого нам понадобится создать РегламентноеЗадание. Основная проблема автора темы заключалась в том, что файлы правил не были доступны на всех компьютерах. Интеграция в макет или регистр решает эту проблему, так как сервер берет данные прямо из информационной базы.

Рассмотрим пример программного вызова выгрузки данных с использованием встроенной обработки УниверсальныйОбменДаннымиXML:


Процедура ВыполнитьОбменПоРасписанию() Экспорт
    ОбработкаОбмена = Обработки.УниверсальныйОбменДаннымиXML.Создать();
    
    // Получаем правила из макета, который мы создали ранее
    ТекстПравил = ПланыОбмена.ОбменУНФ_БухгалтерияCustom.ПолучитьМакет("ПравилаКонвертации").ПолучитьТекст();
    
    // Записываем во временный файл, так как обработка работает с файлами
    ИмяФайлаПравил = ПолучитьИмяВременногоФайла("xml");
    ТекстовыйДокумент = Новый ТекстовыйДокумент;
    ТекстовыйДокумент.УстановитьТекст(ТекстПравил);
    ТекстовыйДокумент.Записать(ИмяФайлаПравил);
    
    // Настраиваем параметры обработки
    ОбработкаОбмена.ИмяФайлаПравилОбмена = ИмяФайлаПравил;
    ОбработкаОбмена.ИмяФайлаВыгрузки = "C:\Exchange\data_out.xml"; // Путь, доступный серверу 1С
    ОбработкаОбмена.РежимОбмена = "Выгрузка";
    
    // Загружаем правила в обработку
    ОбработкаОбмена.ЗагрузитьПравилаОбмена();
    
    // Выполняем выгрузку
    ОбработкаОбмена.ВыполнитьВыгрузку();
    
    // Удаляем временный файл
    УдалитьФайлы(ИмяФайлаПравил);
КонецПроцедуры

Обратите внимание: При работе в клиент-серверном варианте путь к файлу выгрузки должен быть доступен пользователю, под которым запущен агент службы 1С:Предприятие.

Настройка правил регистрации (ПРД)

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

Разберем, как это работает вместе с планом обмена:

  1. В КД 2.1 создаем правила регистрации, где прописываем условия (например, выгружать только проведенные документы или документы по определенной организации).
  2. Выгружаем ПРД в отдельный XML-файл.
  3. В 1С:УНФ, если мы используем БСП, загружаем этот файл в соответствующее поле в настройках синхронизации (рядом с правилами конвертации). Для постоянной синхронизации без доработки кода можно автоматизировать регулярный обмен данными по расписанию с использованием XML-правил.

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

ПланыОбмена.ВыбратьИзменения(УзелСсылка, НомерСообщения);

Подготовка описания конфигурации (MD)

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

  1. В папке с установленной КД 2.1 (обычно в шаблонах конфигураций) найдите обработку MD82.epf.
  2. Запустите её в своей базе 1С:УНФ через Файл — Открыть.
  3. Снимите галочку «Выгружать движения документов», если они не нужны, чтобы ускорить процесс и уменьшить размер файла.
  4. Нажмите «Выгрузить», сохранив результат в Config.xml.
  5. В базе КД 2.1 загрузите этот файл в справочник «Конфигурации».

Итоги

Проанализировав ситуацию, мы видим, что наиболее современным и правильным подходом для 1С:УНФ является использование подсистемы синхронизации БСП. Она позволяет хранить правила внутри информационной базы, автоматически управляет регистрацией изменений и предоставляет удобный интерфейс для настройки расписания регламентных заданий. Если же требуется максимально индивидуальный подход, макеты в плане обмена в сочетании с программным вызовом УниверсальныйОбменДаннымиXML решают задачу централизованного хранения правил на всех рабочих местах.

← На главную