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