Почему вылетает 1С 7.7 при перепроведении документов и просмотре общего журнала?

Программист 1С v7.7 Бухгалтерский учет IT и автоматизация бизнеса
← На главную

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

Разберем детально, почему возникает такое поведение платформы, как локализовать поврежденные данные и какими методами восстановить нормальную работоспособность системы.

Основные причины падения платформы 1С 7.7 без ошибок

Проанализируем ключевые технические факторы, вызывающие аварийную остановку процесса 1cv7s.exe:

  1. Нарушение ссылочной целостности после прямого или ручного удаления проводок. В архитектуре 1С 7.7 таблицы общего журнала _1SJOURN, операций _1SOPER, проводок _1SENTRY и табличных частей документов DH* тесно связаны. Если движения или проводки были удалены некорректно, в таблице журнала остаются флаги проведенности (CLOSED) или битые ссылки на несуществующие операции. При попытке пересчитать итоги или отрисовать строку в интерфейсе платформа падает при обращении к пустому указателю.
  2. Появление «сиротских» записей (Orphan Records). Запись о документе присутствует в _1SJOURN, но отсутствует физическая строка в соответствующей таблице шапки DH<ID> (или наоборот).
  3. Некорректные значения системных полей и пустые даты. В MS SQL пустая дата в формате 1С сохраняется как 01.01.1753. При сбоях или ручных операциях могут возникнуть значения NULL или некорректные даты, ломающие расчет позиции документа DATE_TIME_IDDOC.
  4. Повреждение индексов таблиц. Нарушение целостности составных индексов приводит к сбою сортировки выборки документов при перемещении ТА.
  5. Ограничение 32-битной архитектуры по оперативной памяти. При непрерывном пакетном перепроведении документов за несколько лет (2–3 года) в базах объемом свыше 10–15 ГБ накапливаются утечки памяти, и процесс аварийно завершается при достижении лимита в 2 ГБ RAM.

Способ 1. Использование альтернативного режима проведения документов

Выясним разницу между штатными механизмами проведения, доступными в интерфейсе платформы:

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

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

Способ 2. Выгрузка и загрузка данных через Конфигуратор

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

Разберем процесс по шагам:

  1. Запустим Конфигуратор в монопольном режиме.
  2. Откроем пункт меню «Администрирование — Выгрузка данных...» и укажем путь для сохранения zip-архива.
  3. После успешного завершения выгрузки создадим чистую пустую базу данных на MS SQL Server.
  4. Инициализируем новую базу через Конфигуратор и выполним пункт меню «Администрирование — Загрузка данных...», выбрав созданный ранее архив.

Данный метод исправляет большинство ошибок, связанных с рассинхронизацией таблиц _1SJOURN и _1SENTRY.

Способ 3. Тестирование и исправление информационной базы

Если размер базы данных не позволяет быстро выполнить полную выгрузку и загрузку, применим штатные сервисные утилиты Конфигуратора:

  1. Зайдем в Конфигуратор монопольно.
  2. Откроем «Администрирование — Тестирование и исправление ИБ...».
  3. Установим флаги напротив следующих проверок:
    • Реиндексация;
    • Проверка физической целостности;
    • Проверка логической целостности;
    • Проверка ссылочной целостности (в действиях при наличии неразрешимых ссылок выберем Очищать ссылки или Создавать объекты).
  4. Запустим процедуру кнопкой «Выполнить».

Способ 4. Обслуживание на уровне СУБД MS SQL Server

Проанализируем состояние таблиц непосредственно в SQL Management Studio. При прямых операциях с базой данных необходимо убедиться в отсутствии физических повреждений страниц и актуальности индексов.

Выполним проверку базы командой:

DBCC CHECKDB ('ИмяБазыДанных') WITH NO_INFOMSGS, ALL_ERRORMSGS;

Если обнаружены повреждения индексов, выполним их полное перестроение (Rebuild Indexes):

EXEC sp_MSforeachtable @command1="ALTER INDEX ALL ON ? REBUILD";

Также проверим наличие документов с некорректной пустой датой (в SQL-представлении это значение 1753-01-01) в таблице журнала:


SELECT IDDOC, DOCNO, DATE_TIME_IDDOC 
FROM _1SJOURN 
WHERE DATE_TIME_IDDOC LIKE '17530101%';

При обнаружении подобных записей их необходимо скорректировать либо удалить средствами платформы или запросом с предварительным созданием резервной копии.

Рекомендации по безопасному массовому перепроведению

Чтобы избежать переполнения оперативной памяти и зависаний при перепроведении больших периодов, воспользуемся следующими практическими правилами:

  1. Дробление интервалов: не запускайте перепроведение за несколько лет одним непрерывным процессом. Разбивайте задачу на интервалы (помесячно или поквартально).
  2. Использование внешних обработок: для автоматизации пакетного проведения напишите или примените внешнюю обработку, которая выполняет проведение порциями и периодически перезапускает сеанс 1С для очистки памяти.
  3. Контроль последовательности: перед проведением убедитесь, что документы не содержат пустых ссылок на удаленные субконто, склады или номенклатурные позиции.
← На главную