Как отключить регистрацию изменений в УРБД 1С 7.7 при групповой обработке документов?

Программист 1С v7.7 1С:Управление торговлей Управленческий учет IT и автоматизация бизнеса
← На главную

При выполнении регламентных операций в распределенной информационной базе (УРБД) 1С:Предприятие 7.7 — например, при групповом перепроведении или исправлении реквизитов за прошлые периоды — система автоматически фиксирует изменения всех затронутых объектов. Это приводит к формированию огромных пакетов обмена, перегрузке каналов связи и неоправданной перезаписи данных в периферийных базах.

Разберем основные практические способы, которые позволяют выполнить групповую обработку объектов в центральной базе без регистрации изменений для выгрузки в УРБД.

Способ 1. Программное отключение регистрации методом РегистрацияИзменений

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

Синтаксис метода:

Объект.РегистрацияИзменений(Параметр)

Где Параметр — числовое значение:

  1. 1 — включить регистрацию изменений;
  2. 0 — отключить регистрацию изменений (изменения останутся исключительно в текущей информационной базе);
  3. Если параметр не передан, текущий режим регистрации объекта не изменяется. Метод возвращает предыдущее состояние (1 или 0).

Рассмотрим пример кода для группового изменения документов без фиксации в таблице обмена:


Док = СоздатьОбъект("Документ.РасходнаяНакладная");
Док.ВыбратьДокументы(НачДата, КонДата);
Пока Док.ПолучитьДокумент() = 1 Цикл
    // Запрещаем регистрацию изменений для позиционированного объекта
    Док.РегистрацияИзменений(0);
    
    // Выполняем запись или проведение
    Док.Записать();
КонецЦикла;

Важные особенности использования метода РегистрацияИзменений():

  1. Метод действует строго от момента вызова до перепозиционирования объекта. Вызывать его необходимо после методов позиционирования (ПолучитьДокумент(), НайтиДокумент()), но непосредственно перед методом Записать() или Провести().
  2. При следующем позиционировании режим регистрации автоматически сбрасывается к настройке по умолчанию, заданной в метаданных конфигурации.
  3. Метод применим только к программно созданным объектам через СоздатьОбъект(). Типовые встроенные обработки группового перепроведения документов данный метод не вызывают, поэтому для их использования требуется доработка кода обработки.

Способ 2. Резервное копирование таблицы регистрации 1SUPDTS (для файловых баз DBF)

Все изменения объектов, подлежащие отправке в другие узлы распределенной информационной базы, платформой 1С 7.7 записываются в служебную таблицу 1SUPDTS. Если обработку необходимо выполнить штатным инструментом без модификации программного кода, можно временно сохранить состояние этой таблицы.

Разберем по шагам порядок действий:

  1. Выполняем полный цикл обмена данными со всеми узлами УРБД до состояния, когда в очереди выгрузки нет неотправленных пакетов.
  2. Завершаем работу всех пользователей в информационной базе и открываем базу в монопольном режиме.
  3. Копируем из каталога базы данных во временную папку два служебных файла: 1SUPDTS.DBF (таблица регистрации изменений) и 1SUPDTS.CDX (индексный файл таблицы).
  4. Запускаем типовую групповую обработку или перепроведение документов.
  5. После завершения обработки закрываем 1С:Предприятие.
  6. Возвращаем ранее сохраненные файлы 1SUPDTS.DBF и 1SUPDTS.CDX обратно в каталог базы данных с перезаписью поверх измененных.

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

Ограничения и потенциальные риски при работе с 1SUPDTS

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

  1. Риск потери актуальных изменений: если перед групповой обработкой в базе находились невыгруженные изменения других документов или справочников, замена файла на старую копию полностью сотрет эти записи, что приведет к рассинхронизации данных в периферийных узлах.
  2. Монопольный доступ: манипуляции с файлами DBF и CDX допустимы только при закрытых сеансах 1С, иначе возникнет конфликт блокировок операционной системы или повреждение индексов.
  3. Формат базы данных: файловая подмена работает только для формата DBF. Для SQL-версий 1С 7.7 таблица _1SUPDTS находится внутри базы данных Microsoft SQL Server, и очистка или выборочное удаление записей там выполняется с помощью прямых SQL-запросов (DELETE или TRUNCATE).
  4. Реиндексация: если файл 1SUPDTS.DBF копировался без индексного файла 1SUPDTS.CDX, перед продолжением работы обязательно требуется выполнить переиндексацию таблиц при входе в монопольном режиме.
← На главную