При выполнении регламентных операций в распределенной информационной базе (УРБД) 1С:Предприятие 7.7 — например, при групповом перепроведении или исправлении реквизитов за прошлые периоды — система автоматически фиксирует изменения всех затронутых объектов. Это приводит к формированию огромных пакетов обмена, перегрузке каналов связи и неоправданной перезаписи данных в периферийных базах.
Разберем основные практические способы, которые позволяют выполнить групповую обработку объектов в центральной базе без регистрации изменений для выгрузки в УРБД.
В платформе 1С 7.7 для объектов встроенного языка Справочник и Документ предусмотрен штатный метод РегистрацияИзменений(). Он позволяет явно указать системе, нужно ли записывать сведения об изменениях текущего объекта в распределенную базу данных.
Синтаксис метода:
Объект.РегистрацияИзменений(Параметр)
Где Параметр — числовое значение:
Рассмотрим пример кода для группового изменения документов без фиксации в таблице обмена:
Док = СоздатьОбъект("Документ.РасходнаяНакладная");
Док.ВыбратьДокументы(НачДата, КонДата);
Пока Док.ПолучитьДокумент() = 1 Цикл
// Запрещаем регистрацию изменений для позиционированного объекта
Док.РегистрацияИзменений(0);
// Выполняем запись или проведение
Док.Записать();
КонецЦикла;
Важные особенности использования метода РегистрацияИзменений():
ПолучитьДокумент(), НайтиДокумент()), но непосредственно перед методом Записать() или Провести().СоздатьОбъект(). Типовые встроенные обработки группового перепроведения документов данный метод не вызывают, поэтому для их использования требуется доработка кода обработки.Все изменения объектов, подлежащие отправке в другие узлы распределенной информационной базы, платформой 1С 7.7 записываются в служебную таблицу 1SUPDTS. Если обработку необходимо выполнить штатным инструментом без модификации программного кода, можно временно сохранить состояние этой таблицы.
Разберем по шагам порядок действий:
1SUPDTS.DBF (таблица регистрации изменений) и 1SUPDTS.CDX (индексный файл таблицы).1SUPDTS.DBF и 1SUPDTS.CDX обратно в каталог базы данных с перезаписью поверх измененных.В результате таблица очереди обмена вернется к состоянию, предшествующему запуску групповой обработки, и платформа не будет формировать пакеты обмена на перепроведенные документы.
Проанализируем технические нюансы, которые необходимо учитывать при манипуляциях с файлами базы данных напрямую:
DBF и CDX допустимы только при закрытых сеансах 1С, иначе возникнет конфликт блокировок операционной системы или повреждение индексов._1SUPDTS находится внутри базы данных Microsoft SQL Server, и очистка или выборочное удаление записей там выполняется с помощью прямых SQL-запросов (DELETE или TRUNCATE).1SUPDTS.DBF копировался без индексного файла 1SUPDTS.CDX, перед продолжением работы обязательно требуется выполнить переиндексацию таблиц при входе в монопольном режиме.