Содержание:
1. Постановка задачи о двухстороннем обмене
2. Модули менеджера для УТ и Автосервиса
1. Постановка задачи о двухстороннем обмене
У клиента бизнес связан с ремонтом автомобилей и продажей автозапчастей. На момент нашей с ним работы были куплены два программных продукта 1С:Управление торговлей, 11 и 1С:Автосервис 8.3. На тот момент стояла задача «разделить» ремонт и торговлю. Это означало, что отдел торговли занимается продажей запчастей, а автосервис выполняет только ремонт. И по факту автосервис использует свой программный продукт, а торговля - свой. На начальном этапе разговор шел об одностороннем обмене. При этом все понимали, что данные о запчастях общие для двух программных продуктов. Значит, нужны данные о запасах склада и ценах (чисто информационно) в автосервисе. В процессе реализации задачи стало понятно, что и запасные части, используемые в документе «Заказ покупателя» в автосервисе, должны переноситься в заказ клиента в Управление торговли. Это полноценная продажа для Управления торговли. И после отработки данного документа в Управлении торговлей статус состояния заказа также должен переносится в автосервис. Тем самым мы получим факт подтверждения наличия запасных частей и возможности выполнить ремонт. Выходит, нужен полноценный двухсторонний обмен. Вот такая постановка задачи по обмену.
Стандартных обменов между конфигурациями 1С:Управление торговлей11 (УТ 11) и 1С:Автосервис (Автосервис) нет. Обмен должен быть выполнен с использованием Библиотеки стандартных подсистем (БСП). Подсистема «Обмен данными» объединяет функциональность, связанную с обменом информацией между различными информационными базами: обмен данными через универсальный формат (ОУФ), и обмен данными по правилам обмена (УОП, т.е. правила обмена создаются при помощи конфигурации «Конвертация данных», 2.1). Из-за своей универсальности, гибкости и больших возможностей в настройках был выбран обмен данными УОП.
2. Модули менеджера для УТ и Автосервиса
На момент реализации обмена использовалась УТ 11.2.3.182, а в ней БСП 2.3.2.72 и более свежая конфигурация Автосервиса 1.6.14.93 и БСП 2.4.5.53. Каждая из конфигураций имеет свою БСП 2 их релизы 2.3 и 2.4. Для работы подсистемы обмена данными необходимо создать подписки на события в каждой из конфигураций. Для каждого плана обмена создается свой набор подписок на события. В общем случае для одного плана обмена может быть создано до шести подписок. А так как БСП 2 разные, то и в процессе внедрения в конфигурацию возникли особенности внедрения каждой из них. Рекомендация следующая. При настройке модуля менеджера созданного плана обмена - воспользоваться демо-базой каждой из БСП 2. В моем случае понадобились демо-базы БСП 2.3 и БСП 2.4. Кроме того, использовать рекомендации по очистке модуля менеджера плана обмена из описания внедрения данной БСП. Вот такие подарки, если используются в конфигурациях разные БСП. Использовать подписки на события только если используются соответствующие объекты конфигурации.
Для УТ модуль менеджера получил вот такой:
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
//
Процедура ОпределитьНастройки(Настройки, ИдентификаторНастройки = "") Экспорт
//
Функция НастройкаОтборовНаУзле(ВерсияКорреспондента, ИмяФормы, ИдентификаторНастройки = "") Экспорт
//
Функция НастройкаОтборовНаУзлеБазыКорреспондента(ВерсияКорреспондента, ИмяФормы, ИдентификаторНастройки = "") Экспорт
//
Функция ЗначенияПоУмолчаниюНаУзле(ВерсияКорреспондента, ИмяФормы, ИдентификаторНастройки = "") Экспорт
//
Функция ЗначенияПоУмолчаниюНаУзлеБазыКорреспондента(ВерсияКорреспондента, ИмяФормы, ИдентификаторНастройки = "") Экспорт
//
Функция ОписаниеОграниченийПередачиДанных(НастройкаОтборовНаУзле, ВерсияКорреспондента, ИдентификаторНастройки = "") Экспорт
//
Функция ОписаниеОграниченийПередачиДанныхБазыКорреспондента(НастройкаОтборовНаУзле, ВерсияКорреспондента, ИдентификаторНастройки = "") Экспорт
//
Функция ОписаниеЗначенийПоУмолчанию(ЗначенияПоУмолчаниюНаУзле, ВерсияКорреспондента, ИдентификаторНастройки = "") Экспорт
//
Функция ОписаниеЗначенийПоУмолчаниюБазыКорреспондента(ЗначенияПоУмолчаниюНаУзле, ВерсияКорреспондента, ИдентификаторНастройки = "") Экспорт
//
Функция ИмяФайлаНастроекДляПриемника() Экспорт
//
Функция ИспользуемыеТранспортыСообщенийОбмена() Экспорт
//
Функция ИмяФормыСозданияНачальногоОбраза() Экспорт
//
Функция ИспользоватьПомощникСозданияОбменаДанными() Экспорт
//
Функция КорреспондентВМоделиСервиса() Экспорт
//
Функция КраткаяИнформацияПоОбмену(ИдентификаторНастройки = "") Экспорт
//
Функция ПодробнаяИнформацияПоОбмену(ИдентификаторНастройки = "") Экспорт
//
Функция ПланОбменаИспользуетсяВМоделиСервиса() Экспорт
//
Функция ИмяКонфигурацииИсточника() Экспорт
#Область ОбработчикиСобытий
//
Процедура ПриПодключенииККорреспонденту(ВерсияКорреспондента) Экспорт
//
Процедура ПриОтправкеДанныхОтправителя(Отправитель, Игнорировать) Экспорт
//
Процедура ПриПолученииДанныхОтправителя(Отправитель, Игнорировать) Экспорт
//
Функция ОбщиеДанныеУзлов(ВерсияКорреспондента, ИмяФормы) Экспорт
Функция ПояснениеДляНастройкиПараметровУчета() Экспорт
Функция ПояснениеДляНастройкиПараметровУчетаБазыКорреспондента(ВерсияКорреспондента) Экспорт
//
Процедура ОбработчикПроверкиПараметровУчета(Отказ, Получатель, Сообщение) Экспорт
#Область ПереопределяемаяНастройкаДополненияВыгрузки
//
Процедура НастроитьИнтерактивнуюВыгрузку(Получатель, Параметры) Экспорт
//
Функция ПредставлениеОтбораИнтерактивнойВыгрузки(Получатель, Параметры) Экспорт
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
#КонецОбласти
Для УТ модуль менеджера - получил вот такой:
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
//
Процедура ПриПолученииНастроек(Настройки) Экспорт
//
Процедура ПриПолученииВариантовНастроекОбмена(ВариантыНастроекОбмена, ПараметрыКонтекста) Экспорт
//
Процедура ПриПолученииОписанияВариантаНастройки(ОписаниеВарианта, ИдентификаторНастройки, ПараметрыКонтекста) Экспорт
//
Функция НастройкаОтборовНаУзлеБазыКорреспондента(ИдентификаторНастройки)
Функция НастройкаОтборовНаУзле(ИдентификаторНастройки)
//
Функция ЗначенияПоУмолчаниюНаУзлеБазыКорреспондента(ИдентификаторНастройки)
//
Функция ЗначенияПоУмолчаниюНаУзле(ИдентификаторНастройки)
Функция ОбщиеДанныеУзлов()
Функция ПояснениеДляНастройкиПараметровУчета(ИдентификаторНастройки)
//
Функция КраткаяИнформацияПоОбмену(ИдентификаторНастройки = "") Экспорт
//
Функция ИспользуемыеТранспортыСообщенийОбмена() Экспорт
//
Функция ПодробнаяИнформацияПоОбмену(ИдентификаторНастройки = "") Экспорт
//
Процедура ОпределитьНастройки(Настройки, ИдентификаторНастройки) Экспорт
//
Функция ОписаниеОграниченийПередачиДанных(НастройкаОтборовНаУзле, ВерсияКорреспондента, ИдентификаторНастройки) Экспорт
//
Функция ОписаниеЗначенийПоУмолчанию(ЗначенияПоУмолчаниюНаУзле, ВерсияКорреспондента, ИдентификаторНастройки) Экспорт
//
Функция ОписаниеЗначенийПоУмолчаниюБазыКорреспондента(ЗначенияПоУмолчаниюНаУзле, ВерсияКорреспондента, ИдентификаторНастройки) Экспорт
//
Функция ИмяПланаОбменаДляПереходаНаНовыйОбмен() Экспорт
//
Функция ОписаниеОграниченийПередачиДанныхБазыКорреспондента(НастройкаОтборовНаУзле, ВерсияКорреспондента, ИдентификаторНастройки) Экспорт
Функция ИнициализироватьСценарийРаботыПомощникаИнтерактивногоОбмена(УзелИнформационнойБазы) Экспорт
#КонецОбласти
#Область ПереопределяемаяНастройка
//
Процедура НастроитьИнтерактивнуюВыгрузку(Получатель, Параметры) Экспорт
//
Функция ПредставлениеОтбораИнтерактивнойВыгрузки(Получатель, Параметры) Экспорт
#КонецОбласти
#КонецЕсли
Как видно по названию функций и названиям процедур, это совершенно другая реализация.
Были созданы правила для переноса данных из УТ 11 в Автосервис и, соответственно, из Автосервиса в УТ 11. Со стороны УТ данные из регистра сведений «Цены номенклатуры» переносились в соответствующий регистр сведений Автосервиса. Особенностью реализации явилось то, что переносились остатки регистра накопления «Товары на складах» в созданный регистр сведений «Остатки номенклатуры УТ». Для реализации переноса остатков товаров на складе в Правилах выгрузки данных для регистра сведений «Остатки номенклатуры УТ» сделан запрос на дату выгрузки.
Настройка такого обмена ничем не отличается от настроек стандартных обменов.
Рисунок 1
На данный момент обмен работает более 3-х месяцев. Для выполнения данной работы необходимо знать библиотеку стандартных подсистем, уметь настраивать правила обмена данными с помощью конфигурации «Конвертация данных» 2.1 и понимать, как работают стандартные обмены между конфигурациями.
Специалист компании ООО «Кодерлайн»
Евгений Мазай.