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

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

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

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

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

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

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

Как работает регистрация изменений и когда она нужна вручную

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

Ручная регистрация требуется в нескольких ситуациях. Первая — начальная настройка обмена, когда данные в базе уже есть, а план обмена только создан: без регистрации в другую базу не уйдёт ничего. Вторая — загрузка данных внешними обработками с отключёнными триггерами обмена или в режиме «ОбменДанными.Загрузка = Истина». Третья — восстановление после сбоя, когда сообщение обмена было потеряно или принудительно удалено.

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

Регистрация изменений через интерфейс плана обмена

Штатный способ подходит, когда нужно отправить несколько конкретных объектов. Откройте раздел «Администрирование» → «Синхронизация данных» (в некоторых конфигурациях — «НСИ и администрирование» → «Обмены данными») и перейдите в нужный план обмена. Выделите узел-получатель — именно для него будет выполнена регистрация.

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

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

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

Массовая регистрация через обработку «Регистрация изменений для обмена данными»

Для массовых операций используется стандартная обработка, входящая в состав библиотеки стандартных подсистем и доступная во многих типовых конфигурациях. Найти её можно через «Все функции» → «Обработки» → «Регистрация изменений для обмена данными» либо скачать с диска информационно-технологического сопровождения (ИТС) как внешнюю обработку.

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

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

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

Во встроенном языке регистрация выполняется методом ПланыОбмена.ЗарегистрироватьИзменения(). Метод принимает узел-получатель и объект данных (или массив объектов). Типовые сценарии: регистрация одного документа, пакетная регистрация по запросу, регистрация целого типа метаданных.

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

// Регистрация всех документов вида по запросу
Запрос = Новый Запрос("ВЫБРАТЬ Ссылка ИЗ Документ.РеализацияТоваровУслуг ГДЕ Дата >= &Дата");
Запрос.УстановитьПараметр("Дата", ДатаНачала);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
    ПланыОбмена.ЗарегистрироватьИзменения(Узел, Выборка.Ссылка);
КонецЦикла;

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

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

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

Как проверить, что изменения зарегистрированы

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

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

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

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

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

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

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

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

Состояние после обмена
Норма

Список регистрации очистился, данные появились в базе-получателе

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

Список не очищается — выгрузка не выполнялась или завершилась с ошибкой

Данные в базе-получателе
Норма

Объекты доступны и корректны

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

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

Снятие регистрации и очистка очереди изменений

Иногда требуется обратная операция: объект зарегистрирован ошибочно, или очередь изменений разрослась из-за старых данных, которые отправлять не нужно. Снять регистрацию можно той же обработкой «Регистрация изменений для обмена данными» — в ней есть команда удаления регистрации по выбранным типам или объектам.

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

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

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

Частые вопросы по регистрации изменений

Итог

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

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

Зарегистрировал изменения, но в другую базу ничего не ушло. Что проверить?

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

Нужно ли регистрировать изменения после создания начального образа узла?

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

Как зарегистрировать изменения сразу для всех узлов плана обмена?

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

Почему список зарегистрированных изменений не очищается после обмена?

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

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

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

Чем регистрация изменений отличается от полной выгрузки данных?

Полная выгрузка (например, через универсальный обмен XML) передаёт данные независимо от планов обмена и не использует таблицы регистрации. Регистрация — штатный механизм планов обмена для инкрементальной передачи только изменённых объектов. Для разового переноса проще полная выгрузка, для постоянной синхронизации — план обмена с регистрацией.