В процессе работы с платформой «1С:Предприятие» многие специалисты сталкиваются с вопросом: обязательно ли регламентные операции закрытия периода должны быть физически последними документами в месяце? Сегодня в современных конфигурациях, таких как 1С:Бухгалтерия 3.0, этот вопрос практически стерт из повседневной повестки пользователей. Однако за этим удобством стоит многолетняя техническая эволюция платформы и прикладных решений.
В этой статье мы подробно разберем, как изменялась логика позиционирования документов во времени, вспомним исторические ограничения старых платформ и конфигураций (таких как 1С 7.7, БП 1.6, БП 2.0 и УПП 1.3), проанализируем проблемы бесконечных циклов восстановления последовательностей и выясним, за счет каких механизмов современная система автоматизировала эти процессы.
Рассмотрим, как функционировала система в эпоху «семерки». В версии 1С:Предприятие 7.7 проблема времени документов стояла максимально остро из-за жестких ограничений архитектуры хранения данных в СУБД (независимо от того, использовалась файловая СУБД DBF или сетевая MS SQL Server).
В этой архитектуре действовал строгий линейный физический порядок. Документы внутри информационной базы выстраивались в строго последовательную цепочку. Если несколько документов записывались в одну и ту же секунду (например, в самый конец дня — 23:59:59), они все равно имели четко определенное внутреннее позиционирование относительно друг друга. При этом ключевым понятием платформы была Точка актуальности (ТА) — граница, на которую рассчитывались все итоги регистров в реальном времени.
Проанализируем классическую проблему «последующих» документов того периода:
Закрытие месяца.Поступление товаров или Реализация) с тем же временем 23:59:59.Чтобы решить эту проблему, бухгалтерам и администраторам приходилось вручную контролировать последовательность. Схема действий выглядела следующим образом: открыть общий журнал документов, найти регламентный документ закрытия, вручную вызвать команду «Установить время -> В конец дня» (чтобы сдвинуть его физически ниже всех первичных документов) и только после этого запустить перепроведение.
С переходом на платформу «1С:Предприятие 8» разработчики отказались от концепции жесткой Точки Актуальности, однако проблема хронологической последовательности и позиционирования документов никуда не исчезла. В конфигурациях 1С:Бухгалтерия предприятия редакции 1.6 и 2.0 расчет себестоимости строился на классическом партионном учете.
Выясним, почему проведение документов задним числом приводило к коллапсу учета:
Кроме того, регламентные документы по НДС (такие как Распределение НДС, формирование книг покупок и продаж) были критичны ко времени проведения. Если первичный документ поступления проводился позже формирования книги покупок (даже в пределах одной секунды 23:59:59), НДС по нему не принимался к вычету автоматически, что требовало постоянного контроля времени проведения вручную.
Рассмотрим детально уникальную техническую проблему, с которой сталкивались пользователи и разработчики в конфигурации 1С:Управление производственным предприятием редакции 1.3 (и Комплексная автоматизация 1.1). Это явление получило название «петля последовательности» или «замкнутый цикл».
Логика работы выглядела следующим образом:
Расчет себестоимости. Этот документ по умолчанию проводился, например, в 17:00:00 или в произвольное время внутри дня.Расчет себестоимости делал новые движения по регистрам партий. Из-за этого граница последовательности автоматически сдвигалась назад — на время проведения этого регламентного документа (17:00:00).Расчет себестоимости (17:00:00), а после него есть первичные документы (которые записаны в 23:59:59). Система снова требовала перепровести документы после границы, что опять откатывало последовательность назад. Образовывался замкнутый цикл.Для кардинального решения этой проблемы разработчики 1С внедрили механизм РАУЗ (Расширенная аналитика учета затрат). Разберем по шагам, почему РАУЗ совершила революцию в учете затрат:
В современной конфигурации 1С:Бухгалтерия 3.0 ручной контроль времени документов и границ последовательности сведен к минимуму благодаря нескольким ключевым технологическим решениям платформы 8.3.
Проанализируем эти механизмы подробнее:
В настройках проведения документов (раздел Администрирование -> Проведение документов) задействован механизм автоматического распределения времени документов внутри дня. При активированном флаге «Время документов устанавливать автоматически» система самостоятельно распределяет документы по виртуальным временным интервалам:
В прошлых версиях для актуализации учета требовалось монопольно запускать групповое перепроведение документов за полгода или год, что парализовало работу компании. Сегодня в 1С 8.3 реализовано право интерактивного изменения границы.
Если изменения в прошлых периодах не повлияли на ключевые показатели (например, была исправлена просто опечатка в текстовом поле), ответственный пользователь с соответствующими правами может зайти в обработку Закрытие месяца и выбрать команду «Перепроведение не требуется». Система принудительно передвинет границу последовательности вперед без физического перепровода документов, сохранив неизменными сданные отчеты.
В качестве примера рассмотрим упрощенную схему программного анализа позиционирования документов, аналогичную той, которую система использует для контроля актуальности границы последовательности:
// Пример проверки наличия проведенных документов после даты регламентной операции
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| Регистратор КАК ДокументСсылка,
| Регистратор.Дата КАК ДокументДата
|ИЗ
| РегистрНакопления.Продажи КАК Продажи
|ГДЕ
| Период > &ДатаГраницы
| И Период <= &КонецМесяца";
Запрос.УстановитьПараметр("ДатаГраницы", Объект.РегламентнаяОперацияДата);
Запрос.УстановитьПараметр("КонецМесяца", КонецДня(Объект.РегламентнаяОперацияДата));
РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
ВызватьИсключение "Обнаружены документы, проведенные после регламентной операции. Требуется перезапуск закрытия месяца!";
КонецЕсли;
Благодаря интеграции подобных алгоритмов непосредственно в ядро конфигураций, современные версии 1С полностью освободили пользователя от необходимости следить за тем, чтобы документ закрытия месяца был проведен самым последним.