Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

1C_CHANGE_TRACKING_OVERFLOW 1С:Предприятие и СУБД

Гайд 1С: Очистка зависших таблиц регистрации изменений планов обмена

Обновлено: 26.08.2026 · Официальная документация ↗

При некорректной работе узлов обмена возникают следующие симптомы:

  • Физический размер базы данных 1С вырастает на сотни гигабайт за счет таблиц регистрации изменений (_ReferenceXX_ChangeRec, _DocumentXX_ChangeRec).
  • Катастрофическое замедление операций INSERT / UPDATE для всех типовых документов и справочников.
  • Один из неактивных узлов плана обмена не забирает данные месяцами, аккумулируя регистрацию всех изменений базы.

1. Анализ объема зарегистрированных изменений

Проверьте количество зарегистрированных записей по каждому узлу через обработку РегистрацияИзмененийДляОбменаДанными (из состава БСП) или программным запросом:

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

2. Полная или выборочная очистка регистрации изменений

// Полная очистка всех изменений для мертвого узла
УзелОбмена = ПланыОбмена.Синхронизация.НайтиПоКоду("OLD_NODE");
ПланыОбмена.УдалитьРегистрациюИзменений(УзелОбмена);

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

3. Физическая очистка в СУБД (TRUNCATE _ChangeRec)

Если размер таблицы _ChangeRec исчисляется сотнями миллионов строк и штатный метод 1С зависает по таймауту, удалите неактивный узел в конфигураторе/предприятии либо очистите таблицу изменений на уровне СУБД с последующим перезапуском кэша 1С.

💡 Практика специалистов: Регулярно удаляйте тестовые и неиспользуемые узлы из планов обмена. Забытый узел, созданный для тестирования год назад, будет непрерывно накапливать копии изменений всех таблиц базы, приводя к деградации производительности дисков.

Частые вопросы (FAQ)

Почему при записи объекта в 1С всегда происходит обращение к таблицам _ChangeRec?

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

Как отключить авторегистрацию изменений для тяжелых регистров?

В дереве метаданных в свойствах состава Плана обмена для конкретного объекта измените свойство 'Авторегистрация' со значения 'Разрешить' на 'Запретить'.

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

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

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

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

Полезные материалы
Рекомендуем