gifts2017

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

Опубликовал Олег Веселов (sml) в раздел Обмен - Перенос данных из 1C8 в 1C8

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

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

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

 

 Узел обмена

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

 

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

 

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

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

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

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

См. также

Подписаться Добавить вознаграждение
Комментарии
1. gulchitai (gulchitai) 16.06.16 09:51
Доброго времени суток!
Спасибо огромное за статью, очень пригодилась. Хочу уточнить на будущее некоторые моменты:
1. В ЗУП надо включить константу "Использовать синхронизацию данных" иначе форма списка справочника "СценарииОбменовДанными" не активна.
2. В модуль менеджера плана обмена необходимо добавить функции ВидОбмена() и ИспользуемыеТранспортыСообщенийОбмена()

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



Функция ИспользуемыеТранспортыСообщенийОбмена() Экспорт
	
	Возврат ОбменДаннымиСервер.ВсеТранспортыСообщенийОбменаКонфигурации();
	
КонецФункции
...Показать Скрыть
2. Артем Бардюг (Йожкин Кот) 23.06.16 21:56
Откройте для себя документацию по БСП на ИТС Даже раздел Вам нашел Обмен данными
3. gulchitai (gulchitai) 05.07.16 01:58
(2) Йожкин Кот, Спасибо! Всегда главное знать где найти инфу)
4. Лена Кармалитова (elenapa22) 03.10.16 15:30
Как жалко, что картинки не отображаются.