При длительной работе с конфигурациями на платформе 1С:Предприятие 7.7 (в частности, «Торговля и Склад 7.7») пользователи часто сталкиваются с ситуацией, когда при попытке сдвинуть точку актуальности или перевести расчетный период программа зависает, выгружается в аварийном режиме или выдает ошибку с кодом 120. Стандартные процедуры тестирования и исправления информационной базы через Конфигуратор на этапах пересчета служебных данных и итогов также перестают выполняться. Разберем технические причины такого поведения и рассмотрим проверенные способы восстановления работоспособности базы данных.
Проанализируем архитектуру хранения данных в файловом варианте 1С 7.7. Платформа использует движок CodeBase, оперирующий 32-битными адресами смещений. Из-за этого действует строгое ограничение:
.dbf) и индексного файла (.cdx) не может превышать 2 ГБ (2 147 483 647 байт). При приближении к этому порогу любая операция записи или переиндексации вызывает сбой.RG*.dbf) хранят срезы остатков по месяцам. Если в учете накапливаются «незакрывающиеся» остатки (например, несовпадение измерений прихода и расхода по партиям, номенклатуре или ценам), платформа каждый месяц переносит все образовавшиеся хвосты вперед, раздувая таблицу итогов в геометрической прогрессии..dbf, но и в индексе .cdx во время реиндексации.Перед началом любых действий обязательно создадим резервную копию каталога информационной базы. Далее выясним, какая именно таблица превысила допустимый объем или повреждена:
.dbf, размер которых приблизился к 2 ГБ (от 1.5 до 2 ГБ). Обратим внимание на файлы вида RG*.dbf (итоги регистров) или RA*.dbf (движения регистров).1Cv7.DD любым текстовым редактором и выполним поиск по имени файла (например, RG328). В описании найдем наименование регистра (например, регистр ПартииНаличные или ПартииТоваров).Если база перестала открываться в штатном режиме, а встроенная свертка зависает, применим прямое сжатие таблицы с помощью стороннего редактора (например, WinDBFview):
RG*.dbf.RG*.dbf (или удалить записи ранее определенной даты), после чего выполнить команду упаковки таблицы.Важно: При очистке только таблицы итогов RG*.dbf платформа попытается пересчитать остатки на основе движений из таблицы RA*.dbf при следующем пересчете. Если регистр больше не должен формировать старые остатки, очистку выполняют согласованно для обеих таблиц (RA и RG), после чего актуальные данные вносят документом «Ввод остатков».
Нередко сбой происходит из-за того, что при пересчете итогов размер генерируемого индексного файла .cdx превышает 2 ГБ, либо сам индекс оказывается поврежден. Выполним переиндексацию «с нуля»:
*.cdx.В реляционных СУБД отсутствует ограничение на размер одной таблицы в 2 ГБ. Это позволяет снять лимит для проведения регламентных процедур:
.dat.Если перевод периода через типовой диалог зависает, выполним пересчет небольшими порциями: