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

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

Как зарегистрировать объекты для обмена в 1С

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

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

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

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

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

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

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

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

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

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

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

Регистрация объектов через типовые средства интерфейса

В типовых конфигурациях (УТ, ERP, БП, ЗУП) есть встроенные инструменты ручной регистрации. Основной путь: откройте список узлов обмена (обычно «Администрирование → Синхронизация данных» или «Настройки синхронизации данных»), выберите нужный узел и найдите команду «Зарегистрировать изменения» или «Зарегистрировать данные для отправки». В открывшейся форме можно выбрать типы объектов и зарегистрировать их все либо по отбору.

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

Третий способ — регистрация прямо из формы объекта. В некоторых типовых конфигурациях в меню «Ещё» формы документа или элемента справочника есть команда «Зарегистрировать для обмена» / «Зарегистрировать изменения». Она удобна для точечной довыгрузки одного документа.

Ручная регистрация через обработку
  1. 1
    Откройте узел плана обмена в разделе синхронизации данных
  2. 2
    Выполните команду «Зарегистрировать изменения» (или откройте обработку регистрации изменений)
  3. 3
    Выберите тип объектов и задайте отбор при необходимости
  4. 4
    Нажмите «Зарегистрировать» и дождитесь сообщения о количестве зарегистрированных объектов
  5. 5
    Выполните обмен и проверьте, что объекты появились в базе-приёмнике

Программная регистрация объектов на встроенном языке

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

bsl
// Регистрация одного объекта
ПланыОбмена.ЗарегистрироватьИзменения(Узел, СсылкаНаДокумент);

// Регистрация всех объектов типа
ПланыОбмена.ЗарегистрироватьИзменения(Узел, Метаданные.Справочники.Номенклатура);

// Отмена регистрации
ПланыОбмена.УдалитьРегистрациюИзменений(Узел, СсылкаНаДокумент);

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

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

Начальная выгрузка и регистрация при настройке нового узла

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

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

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

Типичные ошибки и как их избежать

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

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

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

Типичные ошибки
01
Регистрация в неверном узле — данные уходят не в ту базу или не уходят вовсе
02
Попытка зарегистрировать тип, не входящий в состав плана обмена — регистрация не выполняется
03
Игнорирование правил регистрации в обменах через Конвертацию данных — объекты отсекаются при выгрузке
04
Сброс номеров сообщений без копии базы — дубли и рассинхронизация узлов

Проверка результата регистрации

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

Затем выполните обмен (выгрузку) и проверьте базу-приёмник: объект должен появиться там с корректными реквизитами. Если обмен прошёл, а объекта нет — смотрите журнал регистрации и протокол обмена: типовые конфигурации пишут туда ошибки конвертации и отказов от загрузки.

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

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

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

Объект присутствует до выгрузки и исчезает после подтверждения приёма

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

Объекта нет в списке — регистрация не выполнилась

Наличие объекта в базе-приёмнике после обмена
Норма

Объект загружен, реквизиты совпадают

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

Объекта нет или есть ошибки в протоколе обмена

Номера сообщений в узлах обеих баз
Норма

Номера последовательно увеличиваются, расхождений нет

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

Номера сбиты — обмен требует восстановления

FAQ

Можно ли зарегистрировать для обмена регистр сведений?

Да, если конкретный регистр сведений включён в состав плана обмена. Регистрация выполняется по наборам записей: вручную — через обработку регистрации изменений с отбором по измерениям, программно — передавая в ЗарегистрироватьИзменения набор записей или ключ записи.

Чем отличается регистрация от отмены регистрации изменений?

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

Почему объект зарегистрирован, но не выгружается?

Чаще всего причина в правилах регистрации или правилах конвертации, которые отсекают объект при выгрузке, либо в рассинхронизации номеров сообщений. Проверьте протокол обмена, настройки отборов в правилах и номера отправленных/принятых сообщений в обоих узлах.

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

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

Опасна ли массовая регистрация на большой базе?

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

Итог

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

Регистрация выполняется привязано к узлу плана обмена и только для типов из его состава. Используйте типовые команды и обработку регистрации изменений для ручной работы, метод ПланыОбмена.ЗарегистрироватьИзменения — для программной. После регистрации всегда проверяйте результат в базе-приёмнике и номера сообщений.