Как отключить партионный учет в 1С:Торговля и склад 7.7 и остановить рост файла RG328.DBF?

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

При ведении учета в конфигурации 1С:Торговля и склад 7.7 (ТиС 9.2) в файловом режиме многие сталкиваются с критической ошибкой, связанной с ограничением СУБД CodeBase: размер файла таблицы итогов RG328.DBF превышает 2 Гб. В этой таблице хранятся рассчитанные остатки регистра накопления ПартииНаличие. Если организация использует систему исключительно для количественного учета остатков и печати первичных документов (без необходимости расчета себестоимости и финансового анализа по партиям), ведение партионного учета становится избыточным.

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

Почему таблица RG328.DBF превышает лимит 2 Гб

Проанализируем структуру хранения данных в платформе 1С 7.7. Объем таблицы RG328.DBF формируется из периодических итогов по комбинациям измерений: Номенклатура × Партия × Склад × Фирма за каждый расчетный месяц. Если в базе оформляется большое количество документов поступления, справочник Партии непрерывно растет, создавая уникальные записи в регистре.

Многие пользователи пытаются переключить метод расчета себестоимости в константах или настройках учетной политики фирм с FIFO на вариант «По среднему». Однако это не решает проблему полностью: типовая конфигурация все равно продолжает создавать партии и генерировать записи в регистр ПартииНаличие. При выполнении стандартной процедуры «Тестирование и исправление» (ТиИ) с пересчетом итогов документы перепроводятся, и файл RG328.DBF восстанавливает свой прежний критический объем.

Способ 1. Отключение движений в коде глобального модуля

Рассмотрим наиболее надежный способ остановить запись в партионный регистр с минимальным вмешательством в конфигурацию. Вся механика проведения документов по партиям в типовой «Торговле и склад 7.7» вынесена в общие глобальные процедуры.

Разберем по шагам, как отключить запись движений:

  1. Открываем конфигурацию в режиме Конфигуратор.
  2. Переходим в Глобальный модуль (меню «Действия — Глобальный модуль»).
  3. Находим процедуры проведения по партиям: глДвижениеПартий и глСписаниеПартий.
  4. Вставляем безусловный оператор выхода в самом начале этих процедур:

Процедура глДвижениеПартий(Контекст, ВремРегистры, ...) Экспорт
    Возврат;
    // Исходный типовой код формирования движений регистра ПартииНаличие
КонецПроцедуры

Процедура глСписаниеПартий(Контекст, ВремРегистры, ...) Экспорт
    Возврат;
    // Исходный типовой код списания партий
КонецПроцедуры

Посмотрим на результат: документы при проведении перестают записывать движения в таблицы RA328.DBF (движения) и RG328.DBF (итоги). При этом количественный учет по регистру ОстаткиТМЦ продолжает работать в штатном режиме.

Важный момент: при проведении документов расхода типовой механизм может выводить в окно сообщений предупреждение Не распределилось по партиям.... Чтобы отключить вывод этих сообщений, закомментируем строки с оператором Сообщить() или вызовом функции глНеХватаетПартии() в соответствующих модулях.

Способ 2. Управление периодичностью расчета итогов

Если требуется уменьшить размер файла RG328.DBF без изменения программного кода, проанализируем настройку периода рассчитанных итогов:

  1. Запускаем базу в режиме 1С:Предприятие монопольно с правами администратора.
  2. Открываем меню «Операции — Управление итогами».
  3. Устанавливаем границу расчета итогов на текущий рабочий период (или на 1–2 месяца назад от Точки Актуальности), исключая расчет итогов за прошлые годы.
  4. Выполняем пересчет итогов.

При сокращении количества расчетных периодов платформа удаляет устаревшие срезы итогов, что существенно уменьшает размер файла RG328.DBF на диске.

Способ 3. Полное удаление регистра из метаданных

Если база данных используется строго для выписки накладных и количественного учета, а отчеты по расчету себестоимости и валовой прибыли не используются, разберем радикальное решение — удаление регистра:

  1. Создаем полную резервную копию базы данных (архив каталога с файлами *.DBF и *.MD).
  2. В Конфигураторе открываем дерево метаданных, ветку «Регистры».
  3. Находим регистр ПартииНаличие и удаляем его из конфигурации.
  4. В коде конфигурации через глобальный поиск находим все прямые обращения к регистру Регистр.ПартииНаличие и убираем их (либо заменяем возвратом пустых значений).
  5. Сохраняем конфигурацию и принимаем изменения структуры данных.

После сохранения структуры таблицы RG328 и RA328 полностью удаляются из каталога базы данных, что навсегда исключает ошибку переполнения по данному регистру.

Способ 4. Переход на клиент-серверную версию (SQL)

Если требуется сохранить полную историю партионного учета и расчет себестоимости без изменения логики конфигурации, оптимальным решением является перевод информационной базы с файлового движка DBF на Microsoft SQL Server. В SQL-версии платформы 1С 7.7 отсутствует ограничение на размер отдельной таблицы в 2 Гб, что полностью устраняет проблему переполнения таблиц итогов.

← На главную