Почему пропадают данные из регистра бухгалтерии в 1C:ERP и как это исправить

Программист 1С v8.3 (Управляемые формы) 1С:ERP Управление предприятием Бухгалтерский учет IT и автоматизация бизнеса
← На главную

Многие пользователи и даже опытные специалисты, переходящие с «1С:Бухгалтерии» на 1C:ERP или «1С:Комплексную автоматизацию» (КА), сталкиваются с пугающим явлением: после массового перепроведения документов или в моменты пиковой нагрузки Оборотно-сальдовая ведомость (ОСВ) может оказаться пустой за огромные периоды времени. Через 10–15 минут данные «самопроизвольно» возвращаются. В рамках этой статьи мы подробно проанализируем, почему это происходит, разберем внутреннюю архитектуру системы и выясним, как настроить программу, чтобы минимизировать подобные инциденты.

Разбираем архитектурное различие: Онлайн vs Оффлайн

Главная причина «пропадания» данных кроется в фундаментальном отличии 1C:ERP от привычной «1С:Бухгалтерии». В обычной бухгалтерии проводки формируются в момент нажатия кнопки «Провести». В ERP-системах используется механизм отложенного формирования проводок. Рассмотрим подробнее, что происходит «под капотом» при проведении документа в 1C:ERP:

  1. При проведении документа система записывает данные в оперативные регистры (например, регистры накопления по складским остаткам или выручке).
  2. Если документ уже был отражен в регламентированном учете ранее, то при перепроведении старые проводки физически удаляются из регистра бухгалтерии Хозрасчетный.
  3. Вместо немедленной записи новых проводок, документ помещается в специальный регистр сведений — Очередь отражения документов в регламентированном учете.
  4. Далее система ожидает срабатывания регламентного задания или ручного запуска отражения, чтобы сформировать новые записи в регистре бухгалтерии.

Проанализируем ситуацию: если вы запустили массовое перепроведение документов за три года, система сначала очистит проводки по всем этим документам. Пока регламентное задание по формированию проводок не закончит свою работу, в физической таблице регистра бухгалтерии данных действительно не будет. Именно поэтому бухгалтеры видят пустую ОСВ.

Влияние регламентных заданий и массовой обработки данных

Выясним причину того самого «окна» в 15 минут. В 1C:ERP за формирование проводок отвечает регламентное задание Формирование проводок по рег. учету. Если оно настроено на запуск раз в 15 минут, то это и будет минимальным временем ожидания актуализации данных.

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

Роль настроек «Отражать в учете при проведении»

Многие полагают, что включение опции Отражать документы в рег. учете при проведении (находится в разделе НСИ и администрирование -> Регламентированный учет) решает проблему. Однако разберем по шагам, как это работает на самом деле:

Даже при включенной опции система часто выполняет формирование проводок в фоновом режиме. Это сделано для того, чтобы пользователь не ждал по несколько минут завершения проведения сложного документа, по которому нужно рассчитать себестоимость и сформировать десятки проводок — для решения этой проблемы есть расширение для оперативного расчета себестоимости при проведении в ERP и КА. В результате документ «провелся», форма закрылась, но проводки появятся в базе спустя несколько секунд или минут. В этот интервал отчет по счету будет пустым.

Проблема виртуальных таблиц и итогов

Посмотрим на ситуацию со стороны платформы 1С:Предприятие 8.3. Отчеты типа «Оборотно-сальдовая ведомость» строятся не на прямых запросах к основной таблице движений, а на обращении к виртуальным таблицам оборотов и остатков. Эти таблицы опираются на предварительно рассчитанные итоги.

Проанализируем сценарий: если в системе идет интенсивная запись в регистр бухгалтерии, платформа может временно блокировать доступ к таблицам итогов для их актуализации. В некоторых случаях, если оптимизатор запросов СУБД сталкивается с интенсивным обновлением индексов, запрос к виртуальной таблице может вернуть пустой результат вместо ожидания, чтобы не вызывать критическую блокировку (Deadlock).

Настройка SQL-сервера: Режим RCSI

Выясним техническую причину, почему данные могут «исчезать» именно при чтении. Если база данных работает на MS SQL Server, критически важно проверить режим Read Committed Snapshot Isolation (RCSI). Посмотрим, как это влияет на работу:

Как принудительно увидеть проводки в документе

Если бухгалтеру жизненно необходимо увидеть результат проведения «здесь и сейчас», не дожидаясь регламентного задания, разберем стандартный алгоритм действий в 1C:ERP:

  1. Откройте форму документа.
  2. Нажмите на кнопку Дт/Кт (Проводки регламентированного учета).
  3. Если проводки еще не сформированы, нажмите кнопку «Отразить в рег. учете» непосредственно в открывшейся форме.

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

Разберем пример кода для мониторинга очереди

Для программиста полезно понимать, как программно проверить наличие документов, ожидающих отражения. Рассмотрим пример обращения к регистру сведений ОчередьОтраженияДокументовВРегламентированномУчете:


Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |	КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Очередь.Документ) КАК КолВоДокументов
    |ИЗ
    |	РегистрСведений.ОчередьОтраженияДокументовВРегламентированномУчете КАК Очередь";

РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();

Если Выборка.Следующий() И Выборка.КолВоДокументов > 0 Тогда
    Сообщить("В очереди на отражение в бухучете находится: " + Выборка.КолВоДокументов + " документов.");
КонецЕсли;

Если этот запрос возвращает значимое число, то строить ОСВ преждевременно — данные в ней будут неактуальны или частично отсутствовать.

Рекомендации по устранению проблемы

Проанализировав все причины, выделим комплекс мер по стабилизации отображения данных:

  1. Настройка регламентных заданий: Установите минимально разумный интервал для задания Формирование проводок по рег. учету (например, каждые 30–60 секунд), если ресурсы сервера позволяют.
  2. Использование многопоточности: В настройках регламентированного учета ERP 2.5 можно настроить количество потоков для формирования проводок. Увеличение числа потоков значительно ускоряет «появление» данных в ОСВ при массовой загрузке.
  3. Проверка SQL: Убедитесь, что для базы данных включен режим READ_COMMITTED_SNAPSHOT. Это снимет проблему конфликтов чтения и записи.
  4. Контроль закрытия месяца: Помните, что после выполнения этапов закрытия месяца проводки могут переформировываться — автоматизировать процесс поможет модуль фонового закрытия месяца и исправления ошибок в ERP и КА. В 1C:ERP 2.5 реализован механизм «актуальности расчетов», который может помечать проводки как требующие пересчета.
  5. Рабочее место бухгалтера: Обучите пользователей использовать рабочее место Настройка отражения документов в регламентированном учете. Оно наглядно показывает, сколько документов еще не отражено и по каким причинам возникли ошибки.

Таким образом, «исчезновение» данных в 1C:ERP — это не программная ошибка, а следствие работы механизма отложенного проведения. Понимая эту логику, системный администратор и программист могут настроить систему так, чтобы задержки были практически незаметны для конечного пользователя.

← На главную