Работа с планами обмена в 1С

План обмена в 1С —  объект метаданных конфигурации, служащий для реализации синхронизации данных между информационными базами 1С(а также для обмена с другими системами).

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

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

Рассмотрим подробнее структуру плана обмена:

Объект метаданных план обмена расположен в ветке «Общие» конфигуратора.

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

В таблице «Выбранные объекты» отображается текущий состав плана обмена. В колонке «Авторегистрация» можно выбрать значения «Разрешить» и «Запретить». Если для объекта включенного в состав плана обмена авторегистрация установлена в значение «Разрешить», то при записи/проведении такой объект автоматически будет регистрироваться во всех узлах данного плана обмена. Если же авторегистрация установлена в значение «Запретить», то регистрировать такой объект нужно либо программно, либо через стандартную обработку «Регистрация изменений для обмена данными».

Программная регистрация изменений в конкретном узле плана обмена

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

Также зарегистрировать элемент в плане обмена можно в пользовательском режиме при помощи обработки «Регистрация изменений для обмена данными».

Открываем обработку «Регистрация изменений для обмена данными», выбираем в дереве объектов конфигурации объект который хотим зарегистрировать и нажимаем кнопку «Зарегистрировать изменения одиночного объекта». Также можно «Зарегистрировать изменения всех объектов выбранных типов» или «Отменить регистрацию изменений».

Чтение зарегистрированных изменений из узла плана обмена

После регистрации изменений мы можем выполнить чтение зарегистрированных изменений для дальнейшей выгрузки изменений в файл формата XML или передачи в другую информационную систему посредством Web-сервисов.

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

Виртуальная таблица изменений доступна в конструкторе запросов в следующем виде:

Удаление зарегистрированных изменений из узла плана обмена

После передачи зарегистрированных изменений в XML-файл или другую информационную систему их необходимо снять с регистрации чтобы они не считывались из узла плана обмена повторно.

 

Comments

So empty here ... leave a comment!

Добавить комментарий

Sidebar