В файловых версиях 1С:Предприятия 7.7 администраторы и программисты иногда сталкиваются со специфической ситуацией: документы проведения присутствуют в базе, файл движений регистра RA2351.dbf занимают сотни мегабайт и не выглядит поврежденным, однако отчеты по продажам формируются абсолютно пустыми за любой период, а в самих документах движения по регистру продаж перестают отображаться.
Полное перепроведение документов за несколько лет работы информационной базы может занять десятки часов монопольного режима. Проанализируем причины возникновения этой проблемы и разберем проверенные практические способы быстрого восстановления работы регистра продаж без полного перепроведения базы.
Выясним, почему система «перестает видеть» записи в таблице движений регистра, несмотря на сохранность самого файла на диске:
RA2351.dbf значение количества записей может сброситься в 0. Платформа 1С 7.7 считывает число строк из заголовка, поэтому считает файл пустым.RA2351.cdx запросы платформы к таблице возвращают пустые результаты.RFxxxx в общем журнале документов. Если этот флаг сброшен, отчеты не запрашивают данные из таблицы регистра.Рассмотрим первоочередные действия, которые не требуют правки кода и занимают минимум времени:
.cdx из каталога базы данных.RG2351.dbf и его индекс RG2351.cdx.RG2351.dbf на основе сохраненных движений из RA2351.dbf.Если файл движений рабочей базы серьезно поврежден, а полная база перепроводится слишком долго (например, содержит данные за 4–6 лет), применим комбинацию восстановления из архива и локального перепроведения.
RA2351.dbf, RG2351.dbf и их индексы из архива в созданную техническую копию.RA2351.dbf, RA2351.cdx, RG2351.dbf, RG2351.cdx из технической копии в рабочую базу данных.Если требуется сформировать движения регистра с нуля, но проведение по всем регистрам (партии, взаиморасчеты, остатки) занимает много времени, разберем вариант ускоренного перепроведения с помощью временной внешней обработки или корректировки модуля проведения.
Для этого в копии базы можно временно закомментировать проведение по тяжелым регистрам (партийный учет, взаиморасчеты) и оставить запись только в регистр продаж. Также можно написать внешнюю обработку, которая формирует движения регистра продаж на основе таблицы партий или табличных частей документов продаж:
// Пример логики внешней обработки для точечной записи движений в регистр Продажи
Процедура ВосстановитьДвиженияПродаж()
РегПродажи = СоздатьОбъект("Регистр.Продажи");
Док = СоздатьОбъект("Документ.Реализация");
Док.ВыбратьДокументы(ДатаНач, ДатаКон);
Пока Док.ПолучитьДокумент() = 1 Цикл
Если Док.Проведен() = 1 Тогда
// Очищаем существующие движения документа по регистру Продажи
РегПродажи.ОчиститьДвижения(Док.ТекущийДокумент());
// Записываем новые движения на основании табличной части документа
Док.ВыбратьСтроки();
Пока Док.ПолучитьСтроку() = 1 Цикл
РегПродажи.Фирма = Док.Фирма;
РегПродажи.Номенклатура = Док.Номенклатура;
РегПродажи.Покупатель = Док.Контрагент;
РегПродажи.Количество = Док.Количество;
РегПродажи.ПродСтоимость = Док.Сумма;
РегПродажи.ЗаписатьДвижениеВыборка(Док.ТекущийДокумент());
КонецЦикла;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
В случаях, когда файл RA2351.dbf физически содержит данные, но 1С не видит записи из-за сбоя счетчика в заголовке, проанализируем низкоуровневое восстановление:
RA2351.dbf в специализированном DBF-редакторе (например, DBF Commander или CDBF).* / 0x2A), выполним команду снятия пометки удаления (Recall) для всей таблицы.RA2351.cdx и запустим 1С в монопольном режиме для переиндексации.Важное примечание: Если размер файла RA2351.dbf или RG2351.dbf приближается к значению 2000 МБ, настоятельно рекомендуется выполнить свертку информационной базы за прошлые периоды или рассмотреть вариант перехода с файловой версии на SQL-версию 1С:Предприятие 7.7.