При ведении учета в конфигурации 1С:Торговля и склад 7.7 (ТиС 9.2) в файловом режиме многие сталкиваются с критической ошибкой, связанной с ограничением СУБД CodeBase: размер файла таблицы итогов RG328.DBF превышает 2 Гб. В этой таблице хранятся рассчитанные остатки регистра накопления ПартииНаличие. Если организация использует систему исключительно для количественного учета остатков и печати первичных документов (без необходимости расчета себестоимости и финансового анализа по партиям), ведение партионного учета становится избыточным.
Разберем природу возникновения проблемы, почему стандартная смена учетной политики не останавливает разрастание базы, и рассмотрим пошаговые решения для полного отключения партионного учета.
Проанализируем структуру хранения данных в платформе 1С 7.7. Объем таблицы RG328.DBF формируется из периодических итогов по комбинациям измерений: Номенклатура × Партия × Склад × Фирма за каждый расчетный месяц. Если в базе оформляется большое количество документов поступления, справочник Партии непрерывно растет, создавая уникальные записи в регистре.
Многие пользователи пытаются переключить метод расчета себестоимости в константах или настройках учетной политики фирм с FIFO на вариант «По среднему». Однако это не решает проблему полностью: типовая конфигурация все равно продолжает создавать партии и генерировать записи в регистр ПартииНаличие. При выполнении стандартной процедуры «Тестирование и исправление» (ТиИ) с пересчетом итогов документы перепроводятся, и файл RG328.DBF восстанавливает свой прежний критический объем.
Рассмотрим наиболее надежный способ остановить запись в партионный регистр с минимальным вмешательством в конфигурацию. Вся механика проведения документов по партиям в типовой «Торговле и склад 7.7» вынесена в общие глобальные процедуры.
Разберем по шагам, как отключить запись движений:
глДвижениеПартий и глСписаниеПартий.
Процедура глДвижениеПартий(Контекст, ВремРегистры, ...) Экспорт
Возврат;
// Исходный типовой код формирования движений регистра ПартииНаличие
КонецПроцедуры
Процедура глСписаниеПартий(Контекст, ВремРегистры, ...) Экспорт
Возврат;
// Исходный типовой код списания партий
КонецПроцедуры
Посмотрим на результат: документы при проведении перестают записывать движения в таблицы RA328.DBF (движения) и RG328.DBF (итоги). При этом количественный учет по регистру ОстаткиТМЦ продолжает работать в штатном режиме.
Важный момент: при проведении документов расхода типовой механизм может выводить в окно сообщений предупреждение Не распределилось по партиям.... Чтобы отключить вывод этих сообщений, закомментируем строки с оператором Сообщить() или вызовом функции глНеХватаетПартии() в соответствующих модулях.
Если требуется уменьшить размер файла RG328.DBF без изменения программного кода, проанализируем настройку периода рассчитанных итогов:
При сокращении количества расчетных периодов платформа удаляет устаревшие срезы итогов, что существенно уменьшает размер файла RG328.DBF на диске.
Если база данных используется строго для выписки накладных и количественного учета, а отчеты по расчету себестоимости и валовой прибыли не используются, разберем радикальное решение — удаление регистра:
*.DBF и *.MD).ПартииНаличие и удаляем его из конфигурации.Регистр.ПартииНаличие и убираем их (либо заменяем возвратом пустых значений).После сохранения структуры таблицы RG328 и RA328 полностью удаляются из каталога базы данных, что навсегда исключает ошибку переполнения по данному регистру.
Если требуется сохранить полную историю партионного учета и расчет себестоимости без изменения логики конфигурации, оптимальным решением является перевод информационной базы с файлового движка DBF на Microsoft SQL Server. В SQL-версии платформы 1С 7.7 отсутствует ограничение на размер отдельной таблицы в 2 Гб, что полностью устраняет проблему переполнения таблиц итогов.