Разберем распространенную критическую ситуацию в файловых информационных базах 1С:Предприятие 7.7: при открытии периода, пересчете итогов или восстановлении последовательности документов программа аварийно завершает работу с ошибкой CodeBase Error #: -310, а размер одного из файлов базы данных (например, RG1130.dbf) превышает 2 ГБ.
Выясним причину такого поведения движка базы данных, проанализируем структуру регистров и рассмотрим по шагам все возможные способы решения проблемы.
Файловый движок базы данных 1С 7.7 (CodeBase) имеет жесткие технические ограничения:
-310 (Not a correct Index File / Corrupt Index File) часто возникает при превышении порога в 16 777 215 ($2^{24}-1$) записей, когда система перестает корректно адресовать элементы индексного дерева .cdx (в частности, по системному тегу IDELETED).RG*.dbf хранит срезы на начало каждого расчетного месяца. Если в регистре остатков (например, «ПартииТоваров») ведутся только приходные движения без регулярного списания в ноль по всем измерениям (включая конкретный документ партии ПрихДокумент), остатки не закрываются. При наступлении каждого нового месяца платформа дублирует все незакрытые записи прошлых периодов, вызывая лавинообразный рост объема таблицы.Чтобы понять, какая именно таблица вызывает сбой, обратимся к файлу словаря данных 1Cv7.DD, расположенному в каталоге информационной базы. Откроем его любым текстовым редактором и выполним поиск по имени сбойного файла (например, RG1130):
#==TABLE no 89 : Регистр ПартииТоваров
# Name |Descr |Type[A/S/U]|DBTableName|ReUsable
T=RG1130 |Регистр ПартииТоваров |A |RG1130 |1
#-----Fields-------
F=PERIOD |Period Registr |D |8 |0
F=SP2654 |(P)Фирма |C |9 |0
F=SP1131 |(P)Товар |C |9 |0
F=SP1132 |(P)ПрихДокумент |C |13 |0
F=SP1133 |(P)ОстатокТовара |N |16 |5
Таблица RG1130 хранит периодические итоги регистра, а таблица RA1130 — его движения. Наличие уникального разреза ПрихДокумент при отсутствии регулярных расходных накладных приводит к бесконечному разрастанию таблицы итогов.
Если база данных используется в упрощенном режиме (например, только для фиксации приходных цен, взаиморасчетов или как справочная записная книжка), партионный учет фактически не востребован. Рассмотрим по шагам, как быстро восстановить работоспособность базы:
1cv7s.exe или 1cv7.exe не активны.RG1130.dbf, RA1130.dbf, а также соответствующие индексные файлы RG1130.cdx, RA1130.cdx.глДвижениеПартий) и отключим расчет:
Процедура глДвижениеПартий(Контекст, ВремРегистры = 0) Экспорт
// Полное отключение избыточного партионного учета
Возврат;
КонецПроцедуры
Если движения по регистру нужны для истории, но переполнилась именно таблица рассчитанных итогов RG*.dbf, применим процедуру сброса накопленных остатков:
RG*.dbf и индексные файлы *.cdx.Проанализируем конфигурацию: если количественные остатки номенклатуры на складе нужны, но учет по конкретным партиям поставки не имеет значения, целесообразно изменить метаданные:
ПрихДокумент (партия), оставив только Товар и Фирма.Если учет партий необходим в полном объеме, а документооборот слишком велик для 32-битного файлового движка, единственным системным решением является переход на 1С:Предприятие 7.7 для SQL:
dbeng32.dll или специализированные утилиты для корректного чтения переполненной таблицы и формирования файла выгрузки .zip через конфигуратор.