К статье
Практический материал

Администрирование · 13 мин

План обмена в 1С: что такое авторегистрация и как она работает

Авторегистрация в плане обмена 1С: что это, как работает регистрация изменений, когда авторегистрацию стоит отключить и как настроить состав узла обмена.

План обмена в 1С — это механизм платформы, который описывает, какие данные и между какими информационными базами должны синхронизироваться. Каждый узел плана обмена представляет собой отдельную базу-участницу обмена, а платформа отслеживает изменения объектов и передаёт их между узлами. Авторегистрация — одна из ключевых настроек состава плана обмена, определяющая, как именно изменения объектов попадают в очередь на выгрузку.

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

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

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

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

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

Именно момент «объект записан — запись попала в таблицу регистрации» и определяется настройкой авторегистрации. Если она разрешена, платформа делает это сама при каждой записи объекта. Если запрещена — таблицы регистрации остаются пустыми, пока разработчик явно не вызовет метод регистрации.

Как работает авторегистрация на практике

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

При очередном запуске синхронизации (вручную или по расписанию) механизм обмена выбирает все зарегистрированные изменения, сериализует их в сообщение и отправляет. В базе-приёмнике объект создаётся или обновляется. После подтверждения доставки регистрация для этого узла удаляется. Если обмен не выполнялся, а объект изменялся несколько раз, в таблице остаётся одна запись — выгружается всегда актуальное состояние объекта, а не история его правок.

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

Таблицы регистрации быстро растутСлишком широкий состав или лишние перезаписи

Проверить, какие типы данных включены в состав и нет ли массовых перезаписей объектов регламентными заданиями

Объект не уходит в другую базуАвторегистрация запрещена или объект отфильтрован

Проверить настройку авторегистрации для типа данных и правила регистрации

Данные уходят, но не должныАвторегистрация разрешена без фильтров

Настроить правила регистрации или отключить авторегистрацию и регистрировать программно

Где настраивается авторегистрация

Настройка выполняется в конфигураторе. Откройте ветку «Общие» → «Планы обмена», выберите нужный план и перейдите на закладку «Основные» либо откройте палитру свойств плана обмена — в зависимости от версии платформы состав редактируется через кнопку «Состав» в форме объекта метаданных. Для каждого типа данных в составе доступно свойство «Авторегистрация» с двумя значениями: «Разрешить» и «Запретить».

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

Как проверить настройку авторегистрации
  1. 1
    Откройте конфигуратор и найдите нужный план обмена в ветке «Общие» → «Планы обмена»
  2. 2
    Откройте состав плана обмена и найдите интересующий тип данных, например справочник или документ
  3. 3
    Посмотрите значение свойства «Авторегистрация»: «Разрешить» — платформа регистрирует изменения сама, «Запретить» — требуется программная регистрация
  4. 4
    При изменении настройки обновите конфигурацию базы данных и проверьте обмен на тестовом объекте

Когда авторегистрацию стоит запретить

Запрет авторегистрации оправдан в нескольких ситуациях. Первая — большие объёмы данных и высокая интенсивность изменений. Если в базе ежедневно перезаписываются десятки тысяч документов, а в другую систему нужна лишь малая часть, автоматическая регистрация всего подряд раздувает таблицы регистрации и замедляет как запись объектов, так и формирование сообщений обмена.

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

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

Сравнение подходов

Авторегистрация разрешена

Подходит для типовых обменов и умеренных объёмов данных. Не требует кода, но регистрирует все изменения без разбора

Авторегистрация запрещена + программная регистрация

Подходит для высоконагруженных систем и сложной логики отбора. Требует разработки и контроля при доработках

Авторегистрация + правила регистрации объектов

Компромисс: платформа регистрирует изменения, а правила отсекают лишнее. Доступно в типовых конфигурациях с БСП

Программная регистрация изменений

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

bsl
Процедура ЗарегистрироватьДляОбменаПриЗаписи(Источник, Отказ) Экспорт
	Если Источник.ОбменДанными.Загрузка Тогда
		Возврат;
	КонецЕсли;
	Если Не Источник.Проведен Тогда
		Возврат;
	КонецЕсли;
	Узел = ПланыОбмена.ОбменСБухгалтерией.НайтиПоКоду("БП");
	Если Не Узел.Пустая() Тогда
		ПланыОбмена.ЗарегистрироватьИзменения(Узел, Источник.Ссылка);
	КонецЕсли;
КонецПроцедуры

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

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

Типичные проблемы и их диагностика

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

Обратная проблема — в обмен попадает слишком много лишнего. Признаки: сообщения обмена большого размера, долгая выгрузка, в приёмнике обновляются объекты, которые там никто не менял. Причины обычно такие: включён слишком широкий состав плана обмена, регламентные задания массово перезаписывают объекты, или в подписках на запись отсутствует проверка на загрузку.

Типичные ошибки
01
Отсутствие проверки ОбменДанными.Загрузка в подписках — объекты зацикливаются между базами, таблицы регистрации растут бесконечно
02
Запрет авторегистрации без написания кода регистрации — изменения вообще перестают попадать в обмен, расхождение баз обнаруживается поздно
03
Массовая перезапись объектов регламентными заданиями — каждая перезапись создаёт регистрацию, сообщения обмена раздуваются
04
Изменение состава плана обмена без анализа — добавленный тип данных начинает регистрироваться для всех узлов, включая те, где он не нужен

Контрольные точки после настройки

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

Контрольные точки

Как проверить результат

Регистрация нового объекта
Норма

Объект появился в списке зарегистрированных изменений узла после записи

Тревожный признак

Объекта нет в регистрации — проверяйте авторегистрацию и подписки

Повторная запись без изменений
Норма

Регистрация не создаёт лишних записей или отсекается правилами

Тревожный признак

Каждая перезапись добавляет объект в очередь выгрузки

Загрузка из другой базы
Норма

Загруженный объект не регистрируется для обратной выгрузки

Тревожный признак

Объект сразу попадает в очередь на отправку обратно — риск зацикливания

Часто задаваемые вопросы

Авторегистрация влияет на обе стороны обмена?

Нет. Настройка авторегистрации задаётся в составе плана обмена каждой конкретной базы и управляет регистрацией изменений только в этой базе. Если обмен двусторонний, аналогичная настройка должна быть проверена и в базе-корреспонденте — там может стоять другое значение.

Что происходит с регистрацией, если обмен долго не выполнялся?

Записи регистрации накапливаются в таблицах изменений до тех пор, пока не будет выполнена успешная выгрузка с подтверждением приёма. Повторные изменения одного объекта не плодят записи — регистрируется факт изменения, а выгружается актуальное состояние. Однако длительный простой обмена приводит к большому первому сообщению и росту таблиц.

Можно ли отключить авторегистрацию только для отдельных документов?

Да, настройка задаётся индивидуально для каждого типа данных в составе плана обмена. Например, для справочников можно оставить «Разрешить», а для документов установить «Запретить» и регистрировать их программно по условиям. Внутри одного типа данных отбор возможен только через правила регистрации или код.

Чем авторегистрация отличается от правил регистрации объектов?

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

Как зарегистрировать все существующие данные для нового узла?

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

Почему после отключения авторегистрации обмен всё равно что-то выгружает?

Отключение действует только на новые записи: объекты, зарегистрированные ранее, остаются в очереди и будут выгружены при ближайшем сеансе обмена. Кроме того, в конфигурации могут работать подписки на события или регламентные задания, которые регистрируют изменения программно независимо от настройки авторегистрации.

Итог

Что важно запомнить

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