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