Изменить код узла обмена 1с

Обновлено: 07.07.2024

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

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

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

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

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

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



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

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

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





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



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

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

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

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

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



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



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



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



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

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

Способы регистрации изменений данных в механизмах обмена данными

В платформе 1С:Предприятие 8 реализовано два механизма обмена данными: универсальный механизм обмена данными и механизм распределенной информационной базы. Оба эти механизма базируются на одних тех же технологиях. Одной из этих технологий является служба регистрации изменений данных.

Изменения данных могут регистрироваться в автоматическом режиме. Для этого необходимо при включении объекта метаданных в состав плана обмена разрешить автоматическую регистрацию: установить признак Авторегистрация в значение Разрешить .

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

Для регистрации изменений всех данных для конкретного узла плана обмена необходимо вызвать метод ЗарегистрироватьИзменения() менеджера планов обмена, передав ему в качестве параметра Данные значение Неопределено .

Для регистрации изменений данных одного типа необходимо вызвать метод ЗарегистрироватьИзменения() менеджера планов обмена, передав ему в качестве параметра Данные объект описания метаданных, соответствующий данным.

Пример: регистрация изменения всех элементов справочника Номенклатура для узла Узел :

Для регистрации конкретных данных различных типов необходимо вызвать метод ЗарегистрироватьИзменения() менеджера планов обмена, передав ему в качестве параметра Данные либо сами данные, либо ссылку на них.

К объектным типам относятся справочники, документы, планы счетов, планы видов характеристик, планы расчета, бизнес-процессы, задачи. Для их регистрации необходимо вызвать метод ЗарегистрироватьИзменения() менеджера планов обмена, передав ему в качестве параметра Данные либо сам объект, либо ссылку на него.

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

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

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

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

Что же такое «План обмена»? План обмена в 1С – это объект, который входит в состав метаданных конфигурации и служит для синхронизации данных между информационными базами. В каждом плане есть определенный список элементов, информацию об изменении которых он может хранить. Этот список называется «Состав плана обмена». Состав можно расширять, но при этом поддержка конфигурации снимается. В «Макете плана» хранятся те самые правила, на основе которых работает синхронизация. Вот именно этот пакет конвертации (ПравилаРегистрации, ПравилаОбмена, ПравилаОбменаКорреспондента) нам и необходим для дальнейшего изучения.


Рассмотрим пример синхронизации данных между конфигурациями «1С:Зарплата и управление персоналом 3» (ЗУП) и «1С:Бухгалтерия предприятия 3» (БП). Отметим сразу, в данной задаче нам придется снять конфигурацию с поддержки. Данное потребуется по условию.

Живой пример потребности в доработке типовых правил обмена

Например, заказчик обратился к нам с такой проблемой: при синхронизации между ЗУП и БП нет возможности передать данные справочника «Регистрации в налоговом органе», которые необходимы для заполнения документа «Отражение зарплаты в бухучете». Сейчас табличная часть этого документа на стороне приемника БП содержит пустую «Регистрацию…» и пользователям приходится вручную создавать такие записи в справочнике. Согласитесь, это неудобно. Можем доработать этот момент.


Решение проблемы: доработаем пакет конвертации из плана обмена ОбменЗарплата3Бухгалтерия3. Добавим в типовые «Правила обмена 1С» новое «Правило конвертации объектов» (ПКО) для справочника «Регистрации в налоговом органе» и соответственно «Конвертацию свойств» этого справочника (ПКС). Обязательно доработаем типовые «Правила регистрации объектов», т.к. возникла необходимость зарегистрировать изменения справочника на узле обмена. И пересмотрим «Правила обмена 1С» базы корреспондента.

Где все это будем редактировать? для написания и изменения правил нам потребуется конфигурация «1С:Конвертация данных 2».

Доработка типовых правил конвертации из Плана обмена ЗУП – БП

Итак, доработку правил обмена 1С начнем с того, что в конфигураторе для плана обмена ОбменЗарплата3Бухгалтерия3 в состав добавим новый элемент – справочник РегистрацииВНалоговомОргане. Данное изменение сделаем в обоих конфигурациях «1С:Зарплата и управление предприятием 3» и «1С:Бухгалтерия предприятия 3».


Сохраним и обновим конфигурации.

В режиме предприятия для каждой базы выгрузим описание структуры метаданных с помощью обработки MD83Exp.epf для платформы «1С:Предприятие 8.3». Обработку можно найти в комплекте «1С:Конвертация данных».

На следующем этапе выгрузим пакет конвертации из ЗУП и БП. Пакет должен состоять из 3 файлов: ПравилаРегистрации, ПравилаОбмена, ПравилаОбменаКорреспондента.

В рамках данной статьи не будет описания как настраивается синхронизация данных, это можно прочитать на сайте компании «Кодерлайн» в разделе «Статьи экспертов» либо посмотреть записи вебинаров. Сейчас в базах уже настроена данная опция. Поэтому переходим в настройку синхронизации (Администрирование –> Синхронизация данных –> Настройка синхронизации данных), нажимаем кнопку «Загрузить правила». Перед нами откроется форма «Правил для синхронизации». По кнопке «Еще» выберем пункт «Сохранить правила в файл».



Вот такой пакет после выгрузки должен у нас получиться.



Аналогичные действия выполним и для другой информационной базы «1С:Бухгалтерия предприятия».
В итоге все подготовительные работы для редактирования правил готовы. У нас есть:

- описание структуры метаданных для загрузки в «1С:Конвертация данных 2» (для ЗУП и БП);

- пакет конвертации, который содержит правила обмена 1С и правила регистрации, необходимые для загрузки в «1С:Конвертация данных 2» (для ЗУП и БП).

Переходим в «1С:Конвертация данных 2» . Выполним следующие действия по порядку для обоих информационных баз:

- загружаем структуры метаданных наших конфигураций;

- создаем конвертации и загружаем правила обмена данными 1С из пакетов конвертации (файл правил называется ExchangeRules);

- создаем регистрации и загружаем правила регистрации из пакетов конвертации (файл правил называется RegistrationRules).




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



Переходим к правилам регистрации нового элемента. Добавляем справочник «Регистрации в налоговом органе». Выгружаем правила регистрации в соответствующий файл из пакета RegistrationRules. Это действие также выполняем для обоих баз.


Доработанные правила обмена и правила регистрации готовы. Теперь в правила корреспондента (CorrespondentExchangeRules) из пакета ЗУП копируем содержимое правил обмена (ExchangeRules) из пакета БП. В правила корреспондента (CorrespondentExchangeRules) из пакета БП копируем содержимое правил обмена (ExchangeRules) из пакета ЗУП.

В итоге должно получиться следующее:


На этом работа в «1С:Конвертация данных 2» завершена. Доработанные пакеты правил конвертации готовы, осталось загрузить их обратно в информационные базы и проверить синхронизацию.

Архивируем файлы из пакетов в Архив ZIP и загружаем в ЗУП и БП свои пакеты конвертации.


Все готово. Осталось протестировать.

Вспомним условия задачи. Необходимо было зарегистрировать к выгрузке справочник «Регистрации в налоговом органе» и проверить, как заполняется ТЧ документа «Отражение зарплаты в бухучете» на стороне «1С:Бухгалтерия предприятия 3».

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


Проверяем на стороне «1С:Бухгалтерия предприятия 3»:



Подведем итог. Результат поставленной задачи выполнен успешно. Мы доработали план обмена ЗУП – БП, добавив новый элемент для регистрации изменений и дописали правила конвертации для синхронизации данных.

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

Читайте также: