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

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

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

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

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

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

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

Когда отмена регистрации действительно нужна

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

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

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

Способ 1: обработка «Регистрация изменений для обмена данными»

Это основной и самый наглядный инструмент. Обработка входит в поставку типовых конфигураций и доступна также как внешняя обработка с диска ИТС. В типовых решениях её можно найти через «Все функции» → «Обработки» либо открыть файлом через меню «Файл» → «Открыть».

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

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

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

Способ 2: программная отмена регистрации

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

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

// Отменить регистрацию конкретного документа

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

// Отменить регистрацию всех документов одного вида

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

// Отменить регистрацию всех изменений по узлу

ПланыОбмена.УдалитьРегистрациюИзменений(Узел);

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

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

Способ 3: типовые средства управляемого приложения

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

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

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

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

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

Второй способ — выполнить тестовую выгрузку и открыть файл сообщения обмена. Отменённые объекты не должны присутствовать в файле. Для XML-формата это проверяется поиском по представлению или GUID объекта.

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

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

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

Счётчик изменений в обработке
Норма

Количество по типу уменьшилось или тип исчез

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

Счётчик не изменился — снята регистрация не по тому узлу

Файл выгрузки
Норма

Объект отсутствует в сообщении обмена

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

Объект выгружается — проверьте выгрузку по ссылкам

База-приёмник
Норма

Объект не создан и не изменён

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

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

Типичные ошибки и ограничения

Первая ошибка — снятие регистрации не по тому узлу. В базе может быть несколько узлов одного плана обмена (для разных филиалов), и изменения хранятся отдельно для каждого. Отмена по узлу «Филиал А» никак не влияет на очередь для «Филиала Б».

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

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

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

Альтернативы отмене регистрации

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

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

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

Маршрут решения

Как выбрать действие

Нужно разово не отправлять конкретные объектыОтмените регистрацию через обработку или УдалитьРегистрациюИзменений()
Объекты не должны выгружаться никогдаНастройте правила регистрации или состав плана обмена
Нужно гарантированно отправить актуальное состояниеИспользуйте принудительную регистрацию объекта по узлу
Обмен «застрял» на ошибке загрузкиСначала устраните ошибку в приёмнике, отмену регистрации не используйте как обход

Часто задаваемые вопросы

Удалится ли объект из базы после отмены регистрации?

Нет. Отмена регистрации затрагивает только служебные таблицы изменений плана обмена. Сам документ, элемент справочника или запись регистра остаются в базе нетронутыми. Меняется лишь решение платформы о включении объекта в следующую выгрузку.

Можно ли отменить регистрацию сразу для всех узлов?

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

Почему после отмены регистрации объект всё равно выгрузился?

Три вероятные причины: регистрация снята не по тому узлу; объект выгружается принудительно по ссылке из другого выгружаемого объекта; между отменой и выгрузкой объект был изменён и зарегистрирован заново. Проверьте состав сообщения обмена и правила выгрузки по ссылкам.

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

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

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

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

Чем отмена регистрации отличается от удаления узла плана обмена?

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

Итог

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

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