Обмен при помощи Библиотеки Стандартных Подсистем (БСП) конфигурации ЗУП 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 не будет опубликован. Обязательные поля помечены *