Администрирование · 12 мин
Где 1С хранит изменения для обмена данными
Где 1С хранит зарегистрированные изменения для обмена: планы обмена, таблицы регистрации изменений в СУБД, сообщения обмена и способы просмотра и очистки.
Когда в 1С настроен обмен данными между базами (например, между «Управлением торговлей» и «Бухгалтерией» или через РИБ), система не пересылает все данные целиком, а отслеживает, что именно изменилось с момента последней выгрузки. Эти изменения регистрируются механизмом планов обмена и сохраняются в специальных служебных таблицах информационной базы. Понимание того, где физически лежат эти данные, нужно при диагностике «зависших» обменов, разрастании базы и ручной корректировке регистрации.
Механизм устроен в два уровня. Первый уровень — регистрация изменений: при записи объекта, включённого в состав плана обмена, платформа автоматически записывает ссылку на него в таблицу изменений для каждого узла-получателя. Второй уровень — сами сообщения обмена: сформированные XML-файлы (или пакеты EnterpriseData), которые передаются в другую базу. Это разные хранилища, и путать их нельзя: очистка файлов не снимает регистрацию, а удаление регистрации не удаляет уже подготовленные файлы.
Как устроена регистрация изменений в планах обмена
План обмена — это объект конфигурации, который описывает, какие данные участвуют в обмене и между какими узлами. У каждого плана обмена есть состав: список типов объектов (справочников, документов, регистров), изменения которых нужно отслеживать. Как только пользователь или код записывает объект из этого состава, платформа добавляет запись в таблицу регистрации изменений для каждого узла, кроме самого узла-отправителя.
Запись регистрации содержит минимум информации: ссылку на изменённый объект и номер сообщения, в котором изменение было отправлено. Пока изменение не выгружено, номер сообщения равен нулю. После успешной выгрузки платформа проставляет номер отправленного сообщения, а после подтверждения приёма от другой базы запись удаляется. Таким образом, таблица регистрации — это очередь «что ещё нужно передать» плюс журнал «что передано, но не подтверждено».
Важно, что регистрация выполняется на уровне платформы, а не прикладного кода. Даже если объект записан программно без вызова типовых процедур обмена, запись в таблицу изменений всё равно появится — при условии, что объект входит в состав плана обмена. Исключение — запись с отключённым механизмом регистрации, которая выполняется через специальные параметры или методы объекта «ПланыОбмена».
Где физически хранятся таблицы регистрации изменений
В файловом варианте работы вся информационная база, включая таблицы регистрации изменений, находится в одном файле 1Cv8.1CD в каталоге базы. Отдельно увидеть или скопировать только таблицы изменений нельзя — они внутри общего контейнера. Узнать, сколько места занимает регистрация, в файловом режиме напрямую невозможно, ориентироваться приходится на косвенные признаки: рост файла, замедление записи документов.
В клиент-серверном варианте (MS SQL Server, PostgreSQL, Oracle) платформа создаёт для каждого объекта конфигурации отдельные таблицы. Таблицы регистрации изменений имеют имена вида _ChngR с числовыми суффиксами, которые соответствуют внутренним идентификаторам объектов метаданных. Например, у плана обмена и у каждого типа объектов, входящего в его состав, есть своя таблица регистрации, связанная с конкретным узлом.
Сопоставить номер таблицы с конкретным объектом метаданных помогает функция «ПолучитьСтруктуруХраненияБазыДанных()» — она возвращает таблицу соответствия имён таблиц СУБД и объектов конфигурации. Работать с таблицами _ChngR напрямую через SQL следует крайне осторожно: платформа не гарантирует стабильность структуры, а некорректное изменение может нарушить целостность обмена.
Где посмотреть зарегистрированные изменения в интерфейсе
В типовых конфигурациях есть штатный способ увидеть, что зарегистрировано к выгрузке. Откройте настройку синхронизации данных, перейдите в нужный узел и используйте команду «Состав отправляемых данных» (в некоторых конфигурациях — «Зарегистрированные изменения»). Откроется список объектов по типам с количеством зарегистрированных элементов, откуда можно перейти к конкретным документам и справочникам.
Для более детальной работы существует обработка «Регистрация изменений для обмена данными» (входит в состав БСП и доступна в типовых решениях). Она позволяет по выбранному узлу просмотреть зарегистрированные объекты, добавить регистрацию вручную, снять её или посмотреть номера сообщений. Это основной безопасный инструмент администратора при разборе проблем с обменом.
Программно список изменений получают методом «ПланыОбмена.ВыбратьИзменения(Узел, НомерСообщения, Фильтр)», который возвращает выборку зарегистрированных данных. Тот же метод используется внутри типовых процедур выгрузки, поэтому выборка всегда соответствует тому, что реально уйдёт в сообщение обмена.
- 1Откройте раздел настройки синхронизации данных и найдите нужный узел обмена
- 2Откройте команду «Состав отправляемых данных» или запустите обработку «Регистрация изменений для обмена данными»
- 3Выберите узел и тип объектов, посмотрите количество и список зарегистрированных элементов
- 4Проверьте номер последнего отправленного сообщения — он показывает, до какого момента изменения подтверждены
- 5При необходимости снимите лишнюю регистрацию или добавьте недостающие объекты вручную
Где хранятся сами сообщения обмена
Регистрация изменений — это только «очередь». Сами данные передаются в виде сообщений обмена: XML-файлов с заголовком, в котором указаны узел-отправитель, узел-получатель и номер сообщения. При обмене через каталог (файловый обмен, FTP, электронная почта) эти файлы складываются в настроенный каталог обмена — его путь задаётся в настройках транспорта сообщений для конкретного узла.
При обмене через веб-сервисы или прямое подключение файлы могут не сохраняться на диск постоянно: они формируются во временное хранилище, передаются и удаляются. В типовых конфигурациях настройка «Архивировать сообщения обмена» или журнал регистрации позволяют отследить факт отправки, но само содержимое при таком транспорте обычно недоступно после завершения сеанса.
Накопление старых файлов в каталоге обмена — частая причина переполнения диска. Файлы с уже подтверждёнными номерами сообщений можно удалять вручную, но безопаснее периодически очищать каталог регламентным заданием или вручную после проверки, что обмен завершён успешно с обеих сторон.
Где искать данные обмена
Внутри информационной базы (1Cv8.1CD или _ChngR* в СУБД). Показывают, что ещё предстоит отправить. Очищаются автоматически после подтверждения приёма.
В каталоге обмена, заданном в настройках транспорта. Содержат сами выгруженные данные. Очищаются вручную или регламентно.
В базе и в типовом журнале «Результаты обмена данными». Показывают факты, ошибки и даты обменов, но не сами данные.
Как очистить или скорректировать регистрацию изменений
Штатная очистка выполняется методом «ПланыОбмена.УдалитьРегистрациюИзменений(Узел, Метаданные)» или через обработку регистрации изменений. Типовой сценарий: после первоначальной выгрузки и подтверждения приёма регистрация старых объектов снимается автоматически, но если обмен долго не выполнялся, очередь разрастается и её приходится чистить вручную.
Обратная задача — зарегистрировать изменения принудительно, например, чтобы повторно отправить справочник, который «потерялся» в другой базе. Для этого используется метод «ПланыОбмена.ЗарегистрироватьИзменения(Узел, Ссылка)» или кнопка регистрации в обработке. После регистрации объект уйдёт в ближайшем сеансе обмена.
Частая ошибка — снятие регистрации без понимания последствий. Если удалить регистрацию изменений, которые ещё не были отправлены, эти данные никогда не попадут в базу-приёмник, и узлы разойдутся. Перед массовой очисткой убедитесь, что последнее сообщение успешно загружено на принимающей стороне: сверьте номера отправленных и принятых сообщений в настройках узла.
Как диагностировать проблемы через места хранения изменений
Если обмен «не идёт», первый шаг — проверить, есть ли вообще зарегистрированные изменения по узлу. Пустая таблица регистрации при изменяющихся документах означает, что объект не входит в состав плана обмена, запись выполняется с отключённой регистрацией или срабатывают правила фильтрации (например, по дате начала выгрузки или по организации).
Второй шаг — сверить номера сообщений. В настройках узла хранятся номер последнего отправленного и номер последнего принятого сообщения. Если отправленный номер растёт, а принятый стоит на месте, проблема на стороне приёмника: сообщения доходят, но не загружаются, либо файлы копятся в каталоге. Если оба номера замерли — проблема на стороне отправителя или транспорта.
Третий признак — монотонный рост количества зарегистрированных изменений при регулярно работающем обмене. Это указывает на то, что подтверждения приёма не возвращаются (например, обмен настроен только в одну сторону без ответных квитанций) или сообщения формируются, но не отправляются. В такой ситуации таблицы регистрации будут расти бесконечно, и базу придётся чистить.
Как проверить результат
Стремится к нулю или к небольшому остатку свежих изменений
Постоянно растёт от обмена к обмену
Оба номера увеличиваются синхронно
Отправленный растёт, принятый не меняется
Содержит только свежие файлы текущего сеанса
Накоплены десятки старых файлов сообщений
Ограничения и особенности механизма
Регистрация изменений работает только для объектов, включённых в состав плана обмена. Константы, некоторые служебные регистры сведений и объекты, исключённые из состава, не отслеживаются — их перенос нужно реализовывать отдельно. Кроме того, в типовых конфигурациях поверх платформенной регистрации работают правила конвертации и события, которые могут фильтровать данные уже на этапе выгрузки.
В распределённых базах (РИБ) механизм тот же, но добавляется жёсткая связность узлов: периферийная база принимает сообщения только от своего главного узла и наоборот. Попытка подсунуть файл от другого узла будет отклонена по номеру и идентификатору. Поэтому при восстановлении РИБ из копии номера сообщений нужно корректировать штатными средствами («УстановитьНомерСообщения»), а не правкой таблиц.
Для высоконагруженных баз стоит помнить, что запись регистрации изменений выполняется в той же транзакции, что и запись объекта. Большой состав плана обмена и много узлов увеличивают накладные расходы на каждую запись документа. Разумный состав плана обмена и своевременная очистка регистрации — часть нормальной эксплуатации, а не разовая настройка.
Что важно запомнить
Изменения для обмена хранятся в таблицах регистрации изменений внутри базы (в СУБД — _ChngR*), а сформированные сообщения — в каталоге обмена. Просмотр и корректировку выполняйте штатными средствами: обработкой регистрации изменений и методами «ПланыОбмена». Контролируйте номера сообщений и рост очереди — это главные индикаторы здоровья обмена.
Частые вопросы
Можно ли посмотреть содержимое таблиц _ChngR обычным SQL-запросом?
Технически да, в клиент-серверной базе таблицы доступны для чтения через СУБД. Но имена таблиц привязаны к внутренним идентификаторам метаданных, поэтому сначала получите соответствие через «ПолучитьСтруктуруХраненияБазыДанных()». Чтение безопасно, а вот любые операции записи напрямую в СУБД недопустимы.
Почему таблица регистрации изменений не очищается, хотя обмен выполняется?
Записи удаляются только после получения подтверждения приёма от другого узла. Если обмен односторонний или ответная квитанция не доходит, регистрация копится. Проверьте номера принятых сообщений на обеих сторонах и настройки транспорта обратного канала.
Как повторно отправить объект, который не попал в базу-приёмник?
Зарегистрируйте его принудительно для нужного узла: через обработку «Регистрация изменений для обмена данными» или методом «ПланыОбмена.ЗарегистрироватьИзменения». При следующем сеансе обмена объект уйдёт повторно. Убедитесь, что он не отсекается правилами фильтрации по дате или организации.
Где лежат файлы обмена, если используется обмен через веб-сервис?
При обмене через веб-сервис постоянного каталога с файлами обычно нет: сообщение формируется во временном хранилище, передаётся и удаляется. Для диагностики включите ведение протокола обмена в настройках синхронизации — ошибки и события будут видны в журнале «Результаты обмена данными» и журнале регистрации.
Опасно ли удалять старые файлы из каталога обмена?
Файлы, номера сообщений которых уже подтверждены принимающей базой, удалять безопасно. Риск только в удалении свежих незагруженных сообщений: тогда данные потеряются, а регистрация на отправителе уже снята. Перед очисткой сверьте номера сообщений на обеих сторонах.