Как уменьшить размер файла итогов регистра RG4674 в 1С 7.7 при превышении лимита 2 ГБ

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

При активной работе в конфигурации «Торговля и Склад» редакции 9.2 на платформе 1С 7.7 в файловом режиме (DBF) часто возникает критическая ошибка с кодом -10, -100 или -120 при открытии нового месяца или проведении документов. Данная проблема указывает на то, что один из файлов базы данных достиг физического предела файловой системы DBF — 2 ГБ (2 147 483 647 байт). В частности, файл RG4674.dbf отвечает за хранение рассчитанных итогов регистра накопления «Заявки» (или «Заказы покупателей»). Разберем по шагам, почему разрастается этот файл и какими способами можно уменьшить его размер, вернув работоспособность системе.

Выясним причину разрастания файла RG*.dbf

Регистр «Заявки» в типовой конфигурации является остаточным. Это означает, что при проведении документа «Заявка покупателя» формируется приход в регистр. Чтобы запись закрылась, должен произойти расход — оформление документа «Реализация» или специального документа отмены.

Проанализируем механизм работы движка 1С 7.7 с файлами итогов:

  1. Накопление незакрытых «хвостов»: Если менеджеры выписывают заявки, которые отгружаются не полностью (например, заказали 10 штук, а отгрузили 8), остаток в 2 штуки зависает на неопределенный срок. Также причиной часто становятся «неподтвержденные заявки», по которым вообще не происходило отгрузок.
  2. Протягивание итогов по периодам: Платформа 1С 7.7 формирует таблицы итогов RG*.dbf попериодно (обычно по месяцам). Если запись регистра не закрылась в текущем месяце, платформа автоматически дублирует комбинацию всех измерений этого остатка на конец следующего месяца, затем на конец следующего и так далее до текущей даты.
  3. Комбинаторный взрыв: Чем больше в базе незакрытых заявок за прошлые годы и чем больше уникальных измерений (Номенклатура, Договор, Заявка), тем больше строк генерируется в файле RG4674.dbf в каждом новом периоде. В итоге размер таблицы перешагивает порог в 2 ГБ.

Почему удаление движений в документах и упаковка не помогают

Частая ошибка при попытке решить проблему — изменить код проведения документов (убрать движения по регистру), перепровести документы и выполнить стандартную процедуру «Упаковка таблиц». В результате размер файла RG4674.dbf не только не уменьшается, но может даже немного вырасти.

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

  1. Изменение кода документа или снятие его с проведения меняет записи в таблице движений регистра (RA*.dbf).
  2. Стандартная операция «Упаковка таблиц» (Pack) физически удаляет только те строки таблицы, которые были помечены на удаление, но она не пересчитывает таблицы итогов.
  3. Файл RG*.dbf продолжат хранить накопленные ранее виртуальные остатки до тех пор, пока не будет выполнен полноценный пересчет итогов регистров.

Способ 1. Штатное закрытие просроченных заявок (Рекомендуемый)

Самое правильное решение с точки зрения методики учета 1С — закрыть все зависшие остатки специальными документами. Для этого в конфигурации «Торговля и Склад» предусмотрен документ Отмена заявок покупателей.

Рассмотрим алгоритм действий по шагам:

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

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

Способ 2. Корректная очистка регистра, если учет по нему не требуется

Если бизнес-процесс компании не требует анализа невыполненных покупательских хотелок и менеджеры не работают с отчетами по заявкам, движения по регистру можно отключить. Однако делать это нужно строго в определенной последовательности.

Разберем порядок выполнения работ:

  1. Корректировка модулей: В конфигураторе уберем движения по регистру в документе Заявка покупателя (а также в документах Реализация, Отмена заявок и других, обращающихся к этому регистру).
  2. Перепроведение документов: Перепроведем все документы, затрагивавшие регистр «Заявки». Обратите внимание, что перепроводить нужно не только заявки, но и реализации, оформленные на их основании, так как они также пытаются списать остаток.
  3. Очистка и пересчет итогов: После снятия движений с документов обязательно запустим полное «Тестирование и исправление» с галочкой «Пересчет итогов» или воспользуемся обработкой управлением итогами.

Способ 3. Радикальный сброс таблицы итогов через очистку RG-файла

В критических ситуациях, когда файл RG4674.dbf уже ровно 2 ГБ и платформа не позволяет запустить штатные процедуры проведения или тестирования из-за ошибок доступа, применяют метод пересборки таблицы итогов.

Важно: Перед выполнением процедур обязательно создайте полную резервную копию каталога базы данных.

Проанализируем шаги выполнения сброса:

  1. Завершим работу всех пользователей в базе данных.
  2. Найдем в каталоге базы файл RG4674.dbf.
  3. Очистим содержимое файла RG4674.dbf сторонним DBF-редактором (удалив все записи) либо заменим его пустым аналогичным по структуре файлом. Файл индекса RG4674.cdx можно удалить — платформа пересоздаст его автоматически.
  4. Зайдем в режиме Конфигуратора, откроем меню «Администрирование» — «Управление регионами и итогами» и выполним смену периода / пересчет итогов. Платформа полностью пересчитает файл RG4674.dbf на основе существующих записей в таблице движений RA4674.dbf.

Способ 4. Полное удаление регистра из конфигурации

Если регистр «Заявки» не используется ни в одном из отчетов и резервирование товаров оформляется отдельным регистром «РезервыТМЦ», данный регистр является избыточным.

Для полного исключения проблемы выполним следующие действия:

  1. Проверим по конфигурации все ссылки на регистр Заявки в отчетах и модулях документов. При необходимости перепишем логику ввода документов на основании (например, ввод Реализации на основании Заявки по табличной части документа-основания, а не по остаткам регистра).
  2. Удалим регистр Заявки в Конфигураторе и сохраним структуру метаданных. Платформа физически удалит файлы RA4674.dbf и RG4674.dbf, что навсегда избавит базу от ошибки превышения лимита по данному объекту.

Подводя итог: главная причина разрастания файлов итогов и ошибок доступа к DBF-таблицам в 1С 7.7 — наличие незакрытых остатков за прошлые периоды. Регулярная отмена просроченных заказов или своевременная очистка ненужных регистров позволяет стабильно работать в файловом режиме без сбоев.

← На главную