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