Администрирование · 11 мин
Авторегистрация в плане обмена 1С: принцип работы и настройка
Как работает авторегистрация в плане обмена 1С: режимы, настройка состава узла, типовые ошибки, очистка регистрации и проверка результатов обмена.
Авторегистрация — это механизм плана обмена 1С, который автоматически отслеживает изменения объектов и помечает их к выгрузке в другие узлы обмена. Благодаря ей при записи документа, элемента справочника или набора записей регистра система сама решает, какие узлы должны получить это изменение, и сохраняет служебную запись о регистрации.
Без авторегистрации разработчику пришлось бы вручную вызывать методы регистрации изменений в каждой точке записи данных, что практически нереализуемо в типовой конфигурации. Поэтому механизм встроен на уровне платформы: он срабатывает при любом способе записи — интерактивном, программном, через обмен данными.
Понимание того, как именно работает авторегистрация, критично при настройке распределённых баз, синхронизации между конфигурациями (например, УТ и БП) и при диагностике проблем «документ не уехал в другую базу». Большинство таких проблем связано именно с регистрацией изменений, а не с самим транспортом данных.
Что такое регистрация изменений и зачем она нужна
План обмена в 1С описывает, какие данные и между какими узлами синхронизируются. Каждый узел (кроме главного в РИБ, где роль распределена иначе) хранит список изменений, которые ещё не отправлены в другие узлы. Этот список и есть регистрация изменений.
Когда объект записывается, платформа проверяет: входит ли тип этого объекта в состав плана обмена и разрешена ли для него авторегистрация. Если да — в служебные таблицы регистрации добавляется запись: ссылка на объект (или ключ записи регистра), узел-получатель и номер сообщения, в котором изменение будет отправлено. Пока сообщение не сформировано, номер равен NULL или служебному значению.
При выгрузке данных механизм обмена читает зарегистрированные изменения, формирует сообщение обмена (XML или в формате EnterpriseData), проставляет номер сообщения и после подтверждения приёма от узла-получателя очищает регистрацию. Таким образом обеспечивается гарантированная доставка: если приём не подтверждён, изменение уйдёт повторно.
Как платформа решает, что регистрировать
Решение о регистрации принимается на уровне состава плана обмена. В конфигураторе у плана обмена есть свойство «Состав», где перечислены объекты метаданных: справочники, документы, регистры сведений, регистры накопления и другие. Для каждого объекта задаётся режим авторегистрации: «Разрешить» или «Запретить».
Если для объекта авторегистрация запрещена, платформа не будет автоматически помечать его изменения. Регистрацию придётся выполнять программно — методами ПланыОбмена.ЗарегистрироватьИзменения() или через процедуры подписки на события. Такой подход используют, когда нужен точный контроль: например, отправлять в филиал только проведённые документы, а не все изменённые.
Важный нюанс: регистрация выполняется для каждого узла плана обмена отдельно. Если в плане обмена три узла-получателя, при записи документа появится три записи регистрации. Поэтому лишние узлы и избыточный состав плана обмена напрямую увеличивают объём служебных данных и нагрузку при записи объектов.
Проверить состав плана обмена и режим авторегистрации для этого типа объекта
Проверить сообщение обмена, правила конвертации и ошибки при загрузке
Проверить расписание синхронизации и актуальность узлов
Режимы авторегистрации и их настройка
Настройка выполняется в конфигураторе: откройте план обмена, перейдите на вкладку состава и для каждого объекта установите нужный режим. В типовых конфигурациях большинство объектов включено с разрешённой авторегистрацией, но состав можно корректировать под задачи интеграции.
Авторегистрация разрешена
Стандартный режим. Подходит для справочников, документов и регистров, которые должны синхронизироваться полностью. Платформа регистрирует любую запись объекта, включая запись без изменения данных — например, перезапись документа той же кнопкой «Записать».
Авторегистрация запрещена
Используется для объектов, которыми нужно управлять программно, или для исключения лишнего трафика. Например, регистры сведений с технической информацией часто выводят из состава или запрещают авторегистрацию, чтобы не гонять между базами служебные данные. В этом случае регистрацию выполняют в подписках на события или в регламентных заданиях с отбором по условиям.
Где посмотреть зарегистрированные изменения
В пользовательском режиме типовых конфигураций есть обработка «Регистрация изменений для обмена данными» (обычно доступна из настроек синхронизации данных). Она показывает дерево объектов, зарегистрированных для выбранного узла, позволяет снять регистрацию вручную или зарегистрировать объект принудительно.
Программно состав регистрации читается через метод ПланыОбмена.ВыбратьИзменения(), а проверка конкретного объекта — через запрос к таблице регистрации изменений. У каждого объекта, входящего в состав плана обмена, существует служебная таблица «Изменения», доступная в запросах.
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| РеализацияТоваровУслугИзменения.Ссылка,
| РеализацияТоваровУслугИзменения.Узел,
| РеализацияТоваровУслугИзменения.НомерСообщения
|ИЗ
| Документ.РеализацияТоваровУслуг.Изменения КАК РеализацияТоваровУслугИзменения
|ГДЕ
| РеализацияТоваровУслугИзменения.Узел = &Узел";
Запрос.УстановитьПараметр("Узел", УзелОбмена);
Результат = Запрос.Выполнить().Выгрузить();Если запрос возвращает строки с пустым номером сообщения — изменения зарегистрированы, но ещё ни разу не выгружались. Заполненный номер сообщения означает, что изменение включено в отправленное сообщение и ожидает подтверждения приёма от узла-получателя.
Программная регистрация и снятие регистрации
Для точечного управления используются методы объекта ПланыОбменаМенеджер. Зарегистрировать изменения можно для конкретного объекта, для выборки по запросу или для всех данных определённого типа. Снятие регистрации выполняется методом УдалитьРегистрациюИзменений() — по узлу, по типу данных или по конкретной ссылке.
Типовой сценарий — начальная выгрузка: перед первой синхронизацией нужно зарегистрировать все существующие данные для нового узла, иначе он получит только будущие изменения. В типовых конфигурациях это делает помощник настройки синхронизации, но при самописных обменах регистрацию выполняют вручную.
- 1Создайте узел в плане обмена и заполните его параметры
- 2Программно вызовите ПланыОбмена.ЗарегистрироватьИзменения() для нужных типов данных или используйте обработку регистрации изменений
- 3Проверьте запросом к таблице изменений, что регистрация появилась
- 4Выполните выгрузку сообщения обмена и убедитесь, что файл сформирован
- 5Загрузите сообщение в базу-приёмник и проверьте наличие данных
Массовая регистрация больших объёмов (например, всех документов за несколько лет) может занять значительное время и увеличить размер базы за счёт таблиц регистрации. Выполняйте такую операцию в нерабочее время и контролируйте свободное место на сервере СУБД.
Типовые проблемы и их диагностика
Самая частая жалоба — «документ не уехал в другую базу». Диагностику начинайте с цепочки: зарегистрировано ли изменение → включено ли в сообщение → выгружено ли сообщение → загружено ли на приёмнике → не отклонено ли правилами конвертации. Разрыв на любом звене даёт один и тот же внешний симптом.
Вторая типовая ситуация — разрастание таблиц регистрации. Причины: неактивный узел, для которого продолжают копиться изменения; сбойное регламентное задание синхронизации; узел, созданный для теста и забытый. Лечится удалением неиспользуемых узлов (с удалением их регистрации) и восстановлением расписания обмена.
Третья проблема — ложная регистрация при перезаписи без изменений. Если в подписках на события или расширениях объекты перезаписываются «на всякий случай», регистрация растёт без реальных изменений, а обмены становятся тяжёлыми. Проверяйте логику записи: сравнивайте данные до и после, используйте ДополнительныеСвойства для управления регистрацией.
Как проверить, что обмен работает корректно
Контроль строится на трёх показателях: регистрация появляется при изменении данных, сообщения формируются и отправляются по расписанию, подтверждения приёма очищают регистрацию. Все три проверяются штатными средствами без сторонних инструментов.
Как проверить результат
В таблице изменений появилась строка с нужным узлом
Записи нет — проверяйте состав плана обмена и авторегистрацию
У отправленных изменений проставлен номер сообщения
Номер пустой — выгрузка не выполнялась или завершилась ошибкой
Регистрация по отправленным объектам очищена
Регистрация висит — подтверждение не пришло, проверяйте загрузку на той стороне
Для постоянного мониторинга полезно периодически смотреть количество зарегистрированных изменений по узлам. Плавный рост между сеансами обмена — норма; непрерывный рост без убывания — признак остановленного обмена, который нужно расследовать до того, как объём станет критичным.
Что важно запомнить
Авторегистрация автоматически помечает изменённые объекты для отправки узлам плана обмена и управляется составом плана обмена. Проверяйте цепочку «регистрация → сообщение → подтверждение», не удаляйте регистрацию вслепую и следите за неактивными узлами — это закрывает большинство проблем обмена.
Частые вопросы
Почему объект регистрируется, хотя данные в нём не менялись?
Платформа регистрирует факт записи, а не факт изменения значений. Перезапись документа или элемента справочника той же кнопкой «Записать» создаёт новую регистрацию. Если это мешает, ищите лишние перезаписи в подписках на события, расширениях и обработках.
Как отправить в другую базу объект, который не зарегистрирован?
Откройте обработку «Регистрация изменений для обмена данными», добавьте объект вручную для нужного узла и выполните выгрузку. Либо программно вызовите ПланыОбмена.ЗарегистрироватьИзменения() с указанием узла и ссылки.
Что происходит с регистрацией после успешного обмена?
После того как узел-получатель подтвердил приём сообщения, платформа удаляет соответствующие записи регистрации. Если подтверждение не пришло, изменения будут включены в следующее сообщение повторно — это обеспечивает гарантированную доставку.
Можно ли отключить авторегистрацию только для части документов?
Режим авторегистрации задаётся для типа объекта целиком, а не для отдельных экземпляров. Если нужна выборочная отправка, запретите авторегистрацию для типа и регистрируйте изменения программно в подписке на событие с проверкой условий — например, только для проведённых документов определённой организации.
Чем опасен рост таблиц регистрации изменений?
Каждая запись объекта добавляет строки регистрации по числу узлов, поэтому большие таблицы замедляют запись данных и увеличивают размер базы. Регулярно проверяйте неактивные узлы и удаляйте их вместе с регистрацией, а также следите, чтобы регламентные задания синхронизации выполнялись без ошибок.
Нужно ли регистрировать данные вручную при подключении нового узла?
Да. Авторегистрация отслеживает только новые изменения, поэтому существующие данные для нового узла регистрируют отдельно — штатным помощником настройки синхронизации или программно. Без этого узел получит только те изменения, что появятся после его создания.