В каких конфигурациях 1С требовалось строгое позиционирование документа «Закрытие месяца» в конце периода и как эволюционировал этот механизм?

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

В процессе работы с платформой «1С:Предприятие» многие специалисты сталкиваются с вопросом: обязательно ли регламентные операции закрытия периода должны быть физически последними документами в месяце? Сегодня в современных конфигурациях, таких как 1С:Бухгалтерия 3.0, этот вопрос практически стерт из повседневной повестки пользователей. Однако за этим удобством стоит многолетняя техническая эволюция платформы и прикладных решений.

В этой статье мы подробно разберем, как изменялась логика позиционирования документов во времени, вспомним исторические ограничения старых платформ и конфигураций (таких как 1С 7.7, БП 1.6, БП 2.0 и УПП 1.3), проанализируем проблемы бесконечных циклов восстановления последовательностей и выясним, за счет каких механизмов современная система автоматизировала эти процессы.

Эпоха 1С 7.7: Физический порядок в базе и «Точка актуальности» (ТА)

Рассмотрим, как функционировала система в эпоху «семерки». В версии 1С:Предприятие 7.7 проблема времени документов стояла максимально остро из-за жестких ограничений архитектуры хранения данных в СУБД (независимо от того, использовалась файловая СУБД DBF или сетевая MS SQL Server).

В этой архитектуре действовал строгий линейный физический порядок. Документы внутри информационной базы выстраивались в строго последовательную цепочку. Если несколько документов записывались в одну и ту же секунду (например, в самый конец дня — 23:59:59), они все равно имели четко определенное внутреннее позиционирование относительно друг друга. При этом ключевым понятием платформы была Точка актуальности (ТА) — граница, на которую рассчитывались все итоги регистров в реальном времени.

Проанализируем классическую проблему «последующих» документов того периода:

  1. Пользователь проводил регламентный документ Закрытие месяца.
  2. После этого в базу вводился или перепроводился любой первичный документ (например, Поступление товаров или Реализация) с тем же временем 23:59:59.
  3. Физически в таблице базы данных этот новый первичный документ записывался ниже регламентного документа.
  4. При проведении закрытия программа физически «не видела» этот документ, так как он находился позже него в цепочке. Как результат — на счетах учета затрат (например, 20, 26, 44) оставались «зависшие» сальдовые остатки («хвосты»), которые не распределялись.

Чтобы решить эту проблему, бухгалтерам и администраторам приходилось вручную контролировать последовательность. Схема действий выглядела следующим образом: открыть общий журнал документов, найти регламентный документ закрытия, вручную вызвать команду «Установить время -> В конец дня» (чтобы сдвинуть его физически ниже всех первичных документов) и только после этого запустить перепроведение.

Переходный период 1С 8.0–8.2 (БП 1.6 и 2.0): Кошмар «сбитой последовательности»

С переходом на платформу «1С:Предприятие 8» разработчики отказались от концепции жесткой Точки Актуальности, однако проблема хронологической последовательности и позиционирования документов никуда не исчезла. В конфигурациях 1С:Бухгалтерия предприятия редакции 1.6 и 2.0 расчет себестоимости строился на классическом партионном учете.

Выясним, почему проведение документов задним числом приводило к коллапсу учета:

Кроме того, регламентные документы по НДС (такие как Распределение НДС, формирование книг покупок и продаж) были критичны ко времени проведения. Если первичный документ поступления проводился позже формирования книги покупок (даже в пределах одной секунды 23:59:59), НДС по нему не принимался к вычету автоматически, что требовало постоянного контроля времени проведения вручную.

Петля последовательности в УПП 1.3 и решение проблемы через РАУЗ

Рассмотрим детально уникальную техническую проблему, с которой сталкивались пользователи и разработчики в конфигурации 1С:Управление производственным предприятием редакции 1.3 (и Комплексная автоматизация 1.1). Это явление получило название «петля последовательности» или «замкнутый цикл».

Логика работы выглядела следующим образом:

  1. В системе существует партионная последовательность. При запуске процедуры закрытия месяца система сначала восстанавливает последовательность — перепроводит все первичные документы. В результате граница последовательности устанавливается на самый последний документ в месяце (например, на время 23:59:59).
  2. Затем проводится регламентный документ Расчет себестоимости. Этот документ по умолчанию проводился, например, в 17:00:00 или в произвольное время внутри дня.
  3. В процессе проведения Расчет себестоимости делал новые движения по регистрам партий. Из-за этого граница последовательности автоматически сдвигалась назад — на время проведения этого регламентного документа (17:00:00).
  4. При следующей проверке система видела, что граница последовательности находится на документе Расчет себестоимости (17:00:00), а после него есть первичные документы (которые записаны в 23:59:59). Система снова требовала перепровести документы после границы, что опять откатывало последовательность назад. Образовывался замкнутый цикл.

Для кардинального решения этой проблемы разработчики 1С внедрили механизм РАУЗ (Расширенная аналитика учета затрат). Разберем по шагам, почему РАУЗ совершила революцию в учете затрат:

Современные механизмы в 1С:Бухгалтерии 3.0 (на платформе 8.3)

В современной конфигурации 1С:Бухгалтерия 3.0 ручной контроль времени документов и границ последовательности сведен к минимуму благодаря нескольким ключевым технологическим решениям платформы 8.3.

Проанализируем эти механизмы подробнее:

1. Автопозиционирование документов

В настройках проведения документов (раздел Администрирование -> Проведение документов) задействован механизм автоматического распределения времени документов внутри дня. При активированном флаге «Время документов устанавливать автоматически» система самостоятельно распределяет документы по виртуальным временным интервалам:

2. Интерактивный перенос границы последовательности

В прошлых версиях для актуализации учета требовалось монопольно запускать групповое перепроведение документов за полгода или год, что парализовало работу компании. Сегодня в 1С 8.3 реализовано право интерактивного изменения границы.

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

3. Пример технической проверки последовательности

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


// Пример проверки наличия проведенных документов после даты регламентной операции
Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ РАЗЛИЧНЫЕ
    |	Регистратор КАК ДокументСсылка,
    |	Регистратор.Дата КАК ДокументДата
    |ИЗ
    |	РегистрНакопления.Продажи КАК Продажи
    |ГДЕ
    |	Период > &ДатаГраницы
    |	И Период <= &КонецМесяца";

Запрос.УстановитьПараметр("ДатаГраницы", Объект.РегламентнаяОперацияДата);
Запрос.УстановитьПараметр("КонецМесяца", КонецДня(Объект.РегламентнаяОперацияДата));

РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
    ВызватьИсключение "Обнаружены документы, проведенные после регламентной операции. Требуется перезапуск закрытия месяца!";
КонецЕсли;

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

← На главную