18.07.2019 Вадим Хоменко 114361
Создание и регистрация плана обмена

Содержание

1. Создание и регистрация, узлы плана обмена.

2. 1С Выгрузка планов обмена.

3. Порядок снятия с регистрации.

 

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


Итак, какие причины могут заставить задуматься о создании собственного плана обмена? План обмена помогает регистрировать изменения объектов. После чего получить список этих объектов, и выгрузить их в необходимый формат или обработать нужным образом. После обработки объектов 1С их можно пометить, как отправленные. Это не снятие с регистрации, а лишь пометка о том, что объекты уже были обработаны. Такой механизм удобен, когда необходимо контролировать прием получателем выгруженной информации. Когда информационная система-приемник получит пакет обмена и успешно его обработает, она может отправить подтверждение о приеме. После чего в нашем плане обмена можно снять с регистрации отправленные объекты.


Также в плане обмена есть несколько стандартных реквизитов. Например, «Номер принятого» и «Номер отправленного». Эти реквизиты удобно использовать для того, чтобы принимать только актуальную информацию, которая не была ранее принята. А теперь обо всем этом подробней и с примерами. Хоть планы обмена кому-то и кажутся чем-то страшным и необъяснимым, после прочтения статьи, думаю, все станет просто и понятно. 


1. Создание и регистрация, узлы плана обмена.


Приведем пример, когда нам нужно выгружать измененные номенклатуры (для ТСД, мобильного устройства, промежуточной базы или пр.).

Ищем в дереве конфигурации ветку «Общие» -- «Планы обмена». Добавляем новый план обмена.


Назовем его «ОбменНоменклатурой_Тест». Включаем в состав нужные объекты. В этом примере справочник «Номенклатура».



Авторегистрацию устанавливаем в значение «Разрешить». Смысл авторегистрации в том, что если объект был изменен, он будет автоматически зарегистрирован к обмену, и никаких дополнительных манипуляций для регистрации делать больше не нужно.
Если же выбрать значение для авторегистрации «Запретить», тогда придется вручную регистрировать объекты к обмену. Это нужно, когда есть необходимость в дополнительных отборах; когда, например, у каждого узла плана обмена (приемника) будет свой набор номенклатуры, и разделятся он будет в настройках плана обмена, где каждому узлу будет закреплен свой список номенклатуры.
Чтобы зарегистрировать вручную объект к обмену, можно создать подписку на событие «При записи» справочника. И в обработчике после наложенных отборов указать следующее:



Процедура РегистрацияИзмененийДляВыгрузки(Источник,Отказ) Экспорт

//Здесь налаживаем отборы

//и сам код регистрации
Узел = ПланыОбмена.ОбменНоменклатурой_Тест.НайтиПоКоду("Тест");
ПланыОбмена.ЗарегистрироватьИзменения(Узел, Источник);


Сохраним изменения и откроем конфигурацию в режиме предприятия.
Так как конфигурация в данном случае пустая, дополнительно будут использоваться две обработки «РегистрацияИзмененийДляОбмена82 (управляемое приложение).epf» (its.1c.ru/db/metod8dev/content/5013/hdoc) и консоль запросов (its.1c.ru/db/metod8dev/content/4500/hdoc). Обе обработки доступны для свободного скачивания.


В режиме предприятия создадим новый узел плана обмена. Это, по сути, элемент плана обмена, который будет использоваться только для одного приемника. Хотя, если не требуется подтверждение о приеме данных, то с одного узла можно рассылать данные всем, но здесь мы такой вариант не рассматриваем, так как он намного проще и будет понятен по ходу статьи. 


Переходим через все «Все функции» в наш план обмена, добавляем новый узел плана обмена. Имя назначим «Тест», а код 1. Код в дальнейшем будет очень важен, если требуется идентификация. То есть в сообщение обмена можно вкладывать код отправителя и код получателя. Тогда получатель всегда будет знать, что пакет обмена предназначен именно ему, и от кого он пришел.
Для предопределенного узла можно задать код «ЦБ», так как это наша база.



Откроем обработку «Регистрация изменений для обмена», выберем наш узел «Тест». И видим, что пока не зарегистрировано ни одного объекта.



Создадим новый элемент в справочнике «Номенклатура» в 1С. Переходим снова в обработку, нажимаем кнопку «Обновить» и видим, что у нас этот объект зарегистрировался автоматически.



 


2. 1С Выгрузка планов обмена.


Здесь мы рассматриваем именно планы обмена, поэтому метод передачи данных нам неважен. Будь то прямое подключение к базе-приемнику, формирование файла или текста, который будет передан в двоичном виде через 1С http сервисы, выборка изменений при этом будет идти одинаково.


Например, создадим кнопку в списке плана обмена и назначим на нее обработчик на сервере.

Есть возможность выбирать изменения объектной моделью, вот так:



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

Пока ВыборкаИзменений.Следующий() Цикл
КонецЦикла;

«НомерСообщения» – это стандартный реквизит плана обмена «НомерОтправленного». Его необходимо прочитать из узла и самостоятельно увеличить после отправки данных.


Также есть возможность выбора изменений запросом:
В процедуре на сервере давайте откроем конструктор запроса с обработкой результата и посмотрим, как выбрать изменения. В конструкторе есть кнопка «Отображать таблицы изменений». После нажатия на эту кнопку мы увидим таблицы, в которых хранятся наши изменения.



Накладывая отбор на узел, мы можем получить изменения только по определенному приемнику, а в ссылке хранится объект, то есть ссылка на номенклатуру. Но при выборе запросом, выгруженные изменения придется помечать вручную.
В итоге процедура будет выглядеть так:




После того как мы воспользуемся кнопкой в обработке регистрации изменений для обмена данными, мы увидим, что данные помечены, как выгруженные. И в колонке «Номер отправленного» мы видим номер пакета, в котором была произведена 1С выгрузка объекта.



 

3. Порядок снятия с регистрации.


После того как объект будет получен приемником, он может отправить нам подтверждение получения. Опять-таки, это может быть сделано любым удобным способом, например, через файл. Мы его читаем, и теперь пришло время узнать порядок снятия с регистрации. Если от приемника мы получим объекты (гуиды, например), которые успешно были приняты, мы можем снять с регистрации только их. А если мы условились, что принимаем весь пакет, то можем снять с регистрации пакет по номеру. В коде это выглядит так:



После этого, регистрация изменений будет снята.
Если приемник не получил данные, то при следующей выборке все данные, для которых не снята регистрация будут выгружены повторно.


План обмена служит для хранения информации о данных, которые должны быть переданы в другую систему. Для каждого узла плана обмена (приемника) такая информация хранится отдельно, то есть можно четко разделить - кому, что и при каких условиях отправлять. Регистрацию изменений можно делать автоматически (все для всех) или вручную (сами решаем, кому, что отправить). Контроль того, что приемник получил данные осуществляется при помощи стандартного реквизита «НомерОтправленного». Когда узел плана обмена, получивший данные, обработает их, он может сообщить номер пакета, который успешно получен. По нему мы снимем регистрацию с объектов плана обмена. 


В общем, повторюсь, план обмена помогает организовать обмен данными со сторонними системами. И в этой статье мы разобрали, как на самом деле просто с ним работать.


Специалист компании ООО «Кодерлайн» 

Вадим Хоменко.

Наши проекты

Внедрение ПП "1С:CRM ПРОФ" в ООО «Торговый Дом Факел»
ООО «Торговый Дом Факел»

Отрасль:
Производство

Внедренное типовое решение:
1С:CRM ПРОФ

- Управление отношениями с клиентами (CRM) ...

ПЭК
ПЭК

Отрасль:
Грузоперевозки

Внедренное типовое решение:
1С:Зарплата и управление персоналом

- Перевод зарплатных баз с версии ЗУП 2.5 на версию ЗУП 3.1.
- Сопровождение в п...

ООО «Лаборатория успеха»
ООО «Лаборатория успеха»

Отрасль:
Общественное и плановое питание, гостиничный бизнес, туризм

Внедренное типовое решение:
1С:Зарплата и управление персоналом 8. КОРП

Кадровый учет;
Расчет зарплаты;...

ООО «ТейблТок»
ООО «ТейблТок»

Отрасль:
Общественное питание и рестораны

Внедренное типовое решение:
1С:Управление торговлей

Оформление заказов поставщикам Оформление заказов покупателей Управление ...

ООО «Мир Аксиомы»
ООО «Мир Аксиомы»

Отрасль:
Аудиторские и консалтинговые услуги

Внедренное типовое решение:
1С:Бухгалтерия КОРП

- Бухгалтерский учет:
Банк и касса
Завершение периода
Нематериальные ...

Внедрение 1С:Управление торговлей
ООО «Амперсенд»

Отрасль:
Оптовая торговля

Внедренное типовое решение:
1С:Управление торговлей

- Оформление заказов поставщикам;
- Управление отношениями с поставщиками;...

ООО «Иви.ру»
ООО «Иви.ру»

Отрасль:
Медиаиндустрия

Внедренное типовое решение:
1С:Управление корпоративными финансами

Подсистема казначейства
Модуль бюджетного контроля по ДДС ...

 ЗАО "Инвестгеосервис" -ДО
ЗАО «Инвестгеосервис»

Отрасль:
Нефтесервис

Внедренное типовое решение:
1С:Документооборот КОРП

- Работа с файлами;
- Делопроизводство;
- Процессы движения документов; ...

ООО «Фипар»
ООО «Фипар»

Отрасль:

Внедренное типовое решение:
1С:Предприятие 8. ERP Управление предприятием 2

Специалисты «Кодерлайн» внедрили «1С:ERP. Управление предприятием 2» и автома...

ООО “РТИТС”
ООО “РТИТС”

Отрасль:
Транспортные системы

Внедренное типовое решение:
1С:ERP Управление предприятием 2.0

Блок регламентированного кадрового учета и расчета заработной платы в 1С:ERP;...

Московский филиал ООО «Авиакомпания «Икар»
Московский филиал ООО «Авиакомпания «Икар»

Отрасль:
Авиаперевозки

Внедренное типовое решение:
1С:Бухгалтерия КОРП

Бухгалтерский учет Производственные операции Регламентированная отчетнос...

Внедрение ПП "1С:Управление небольшой фирмой 8 ПРОФ" в ООО «Шокостайл»
ООО «Шокостайл»

Отрасль:
Производство

Внедренное типовое решение:
1С:Управление небольшой фирмой 8 ПРОФ

Управление продажами, логистикой и транспортом (SFM, WMS, TMS):
- Планирование п...

Наши соц. сети

Telegram-канал «Koderline 1С» Группа в Вконтакте «Кодерлайн КОРП» Rutube

Остались вопросы - обратитесь к нам!

Впишите свои Имя и Телефон, чтобы мы ответили на все интересующие Вас вопросы.
ФИО*
E-mail*
Телефон*
Сообщение