Почему исчезают данные из журнала расчетов в 1С 7.7 и как это исправить?

Системный администратор 1С v7.7
← На главную

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

Причина 1: Повреждение индексных файлов (.cdx) из-за зависаний и снятия сессий

Самая распространенная причина «пропадания» записей — повреждение индексных файлов. В файловой базе 1С 7.7 таблицы данных хранятся в файлах с расширением .dbf, а их индексы — в файлах .cdx. Когда пользователи работают через терминальный сервер и закрывают зависшую программу принудительно (через Диспетчер задач), файловый движок не успевает корректно закрыть файлы базы данных. В результате индекс разрушается, и система «перестает видеть» часть записей, хотя физически в .dbf они остаются.

Рассмотрим, как правильно выполнить восстановление индексов:

  1. Ручное удаление индексных файлов:
    1. Завершим работу всех пользователей в базе 1С 7.7.
    2. Зайдем в каталог информационной базы на сервере.
    3. Найдем и удалим абсолютно все файлы с расширением *.cdx.
    4. Запустим 1С:Предприятие в монопольном режиме — программа автоматически пересоздаст все индексные файлы с нуля.
  2. Переиндексация через Конфигуратор:
    1. Запустим базу в режиме Конфигуратор.
    2. Откроем пункт меню Администрирование — Тестирование и исправление ИБ.
    3. Установим флаг исключительно напротив пункта Реиндексация.
    4. Нажмем кнопку Выполнить.

Причина 2: Особенности механики перерасчета зарплаты в файловом режиме

Выясним, как именно работает платформа 1С 7.7 при расчете зарплаты. Записи журнала расчетов хранятся в файлах с префиксом CJ*.dbf (например, CJ123.dbf).

Когда бухгалтер запускает перерасчет по отдельному сотруднику или всей организации (с помощью обработки РасчетЗарплата или прямо из журнала расчетов), платформа работает по следующему алгоритму:

  1. Существующие расчетные записи сотрудника помечаются платформой как удаленные (устанавливается флаг удаления в заголовке строки DBF).
  2. Платформа производит вычисления и записывает новые рассчитанные строки в конец файла.
  3. Обновляются соответствующие индексные файлы .cdx.

Важный момент: если один бухгалтер выполнял перерасчет, а второй в этот же момент формировал расчетный листок или ведомость, отчет может прочитать таблицу в момент, когда старые записи уже помечены на удаление, а новые еще не сформированы. В итоге отчет покажет пустой результат. Чтобы избежать этой ситуации, необходимо разграничить во времени массовые расчеты и формирование отчетности.

Причина 3: Переполнение файлов базы данных и журнала регистрации

В файловой версии 1С 7.7 существуют строгие ограничения на размер файлов. Если база приближается к размеру 2 Гигабайта, могут возникать аномальные сбои в работе механизмов расчета и индексации.

Разберем комплекс мер по обслуживанию базы данных:

  1. Очистка журнала регистрации:

    Файл журнала регистрации расположен по пути SYSLOG\1cv7.mlg. При достижении размера в несколько сотен мегабайт он вызывает сильные задержки при записи и принудительных блокировках файлов. Рекомендуется архивировать и очищать этот файл.

  2. Упаковка и очистка таблиц расчетов от удаленных записей:

    Обычная реиндексация не удаляет физически помеченные на удаление строки из файлов CJ*.dbf. При частых перерасчетах файл журнала расчетов разрастается «мусорными» записями. Чтобы полностью сжать таблицы, проделаем операцию выгрузки и загрузки:

    1. Откроем базу в Конфигураторе в монопольном режиме.
    2. Перейдем в меню Администрирование — Выгрузка данных и сохраним ZIP-архив.
    3. В этом же меню выберем Загрузка данных и загрузим архив обратно. В процессе загрузки файлы DBF пересоздадутся без удаленных строк.
  3. Контроль размера отдельных файлов:

    Проверим размеры файлов с расширением .dbf в каталоге базы. Ни один из файлов не должен превышать 1–1.5 ГБ (в особенности 1CV77.DBF, 1CRG*.DBF и CJ*.DBF).

Причина 4: Сетевые блокировки Windows и параметры терминального сервера

Проанализируем ситуацию, когда сеансы пользователей регулярно зависают при выходе из программы. Это прямое следствие неоптимальной работы сетевого кэширования (Opportunistic Locking / OpLocks) на сервере.

При активном кэшировании SMB2/SMB3 операционная система задерживает запись измененных байтов файлов .cdx на диск, из-за чего терминальные сессии начинают конфликтовать за доступ к одним и тем же диапазонам байт. При закрытии программы 1cv7s.exe подвисает, ожидая освобождения файловых хэндлов.

Для решения сетевых зависаний системному администратору рекомендуется:

← На главную