Обмен при помощи Библиотеки Стандартных Подсистем (БСП) конфигурации ЗУП 2.5

Как организовать автообмен данными из базы Зарплата и Управление Персоналом 2.5? Очень просто. Кодирование нужно лишь для одной команды — всего несколько строчек кода.

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

Поскольку мне пришлось разрабатывать правила обмена, то их надо было где-то хранить. Покопав код БСП в ЗУПе, я обнаружил, что можно правила обмена сохранить в макете узла обмена. Этим я и воспользовался (Рисунок 1).

 

 Узел обмена

 

Но для использования этих правил – загрузки их в нужный регистр БСП ПравилаДляОбменаДанными, пришлось создать форму списка для моего узла обмена, добавив в нее кнопку с командой: «Обновить правила»:

 

Процедура ДействияФормыЗагрузитьПравила(Кнопка)
Узел = ЭлементыФормы.ПланОбменаСписок.ТекущаяСтрока;
ИмяПланаОбмена = Узел.Метаданные().Имя;
Отказ = Ложь;
СтруктураЗаписи = Новый Структура;
СтруктураЗаписи.Вставить("ИмяПланаОбмена", ИмяПланаОбмена);
СтруктураЗаписи.Вставить("ВидПравил", Перечисления.ВидыПравилДляОбменаДанными.ПравилаКонвертацииОбъектов);
СтруктураЗаписи.Вставить("ИмяМакетаПравил", "ПравилаОбмена");
СтруктураЗаписи.Вставить("ИсточникПравил", Перечисления.ИсточникиПравилДляОбменаДанными.МакетКонфигурации);
СтруктураЗаписи.Вставить("ИспользоватьФильтрВыборочнойРегистрацииОбъектов", Ложь);
// получаем набор записей регистра
НаборЗаписей = ОбменДаннымиСервер.СоздатьНаборЗаписейРегистраСведений(СтруктураЗаписи, "ПравилаДляОбменаДанными");
// добавляем только одну запись в новый набор записей
НоваяЗапись = НаборЗаписей.Добавить();
// заполняем значения свойств записи из структуры
ЗаполнитьЗначенияСвойств(НоваяЗапись, СтруктураЗаписи);
// Загружаем правила для обмена данными в ИБ
РегистрыСведений.ПравилаДляОбменаДанными.ЗагрузитьПравила(Отказ, НаборЗаписей[0]);
Если Не Отказ Тогда
НаборЗаписей.Записать();
КонецЕсли;
КонецПроцедуры

 

Теперь остался лишь шаг – создать сценарий обмена. Он прописывается в справочнике: СценарииОбменовДанными (Рисунок 2).

 

 Настройка сценария

 

Параметры подключения настраиваются ПКМ и выбором одноименного меню.

Сами обмены можно выполнять руками: кнопка Выполнить сценарий, — или создать расписание.

4 Comments

  1. gulchitai

    Доброго времени суток!

    Спасибо огромное за статью, очень пригодилась. Хочу уточнить на будущее некоторые моменты:

    1. В ЗУП надо включить константу «Использовать синхронизацию данных» иначе форма списка справочника «СценарииОбменовДанными» не активна.

    2. В модуль менеджера плана обмена необходимо добавить функции ВидОбмена() и ИспользуемыеТранспортыСообщенийОбмена()

    // Возвращает вид обмена данными, который обслуживает этот план обмена.
    //
    //  Возвращаемое значение:
    // Тип: Строка. Строковой идентификатор вида обмена данными.
    //
    // Возможны следующие идентификаторы:
    //
    // РаспределеннаяИнформационнаяБаза – обмен в распределенной ИБ.
    // ПравилаКонвертации               – обмен с использованием правил конвертации данных
    // XMLСхемаЭтойКонфигурации         – обмен с использованием XML-схемы текущей конфигурации
    // XMLСхема                         – обмен с использованием произвольной XML-схемы.
    //                                    Если функция возвращает этот вид обмена данными,
    //                                    то в модуле менеджера этого плана обмена должна быть определена функция XMLСхема.
    // Произвольный                     – произвольный алгоритм сериализации данных.
    //                                    Если функция возвращает этот вид обмена данными, то должны быть реализованы обработчики событий
    //                                    ПриВыгрузкеДанных и ПриЗагрузкеДанных в общем модуле ОбменДаннымиПереопределяемый
    //                                    или СтандартныеПодсистемыПереопределяемый.
    //
    Функция ВидОбмена() Экспорт
    
    Возврат «ПравилаКонвертации»;  //Невада 15.06.2016 Сыч
    
    КонецФункции

    Показать

    Функция ИспользуемыеТранспортыСообщенийОбмена() Экспорт
    
    Возврат ОбменДаннымиСервер.ВсеТранспортыСообщенийОбменаКонфигурации();
    
    КонецФункции
    Reply
  2. Йожкин Кот

    Откройте для себя документацию по БСП на ИТС Даже раздел Вам нашел Обмен данными

    Reply
  3. gulchitai

    (2) Йожкин Кот, Спасибо! Всегда главное знать где найти инфу)

    Reply
  4. elenapa22

    Как жалко, что картинки не отображаются.

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *