Что такое регламентный документ в 1С и как его реализовать?

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

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

Понятие и сущность регламентного документа в 1С

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

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

Примерами регламентных документов в типовых конфигурациях 1С («1С:Бухгалтерия», «1С:ERP») являются документы вида «Закрытие месяца», «Начисление амортизации ОС», «Списание расходов будущих периодов» или «Выбытие оборудования».

Варианты архитектурной реализации

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

  1. Интерактивное создание с кнопкой автозаполнения: Пользователь самостоятельно создает документ в конце периода, а на форме документа располагается кнопка «Заполнить». По нажатию этой кнопки выполняется серверный запрос к базе данных, вычисляется список оборудования, подлежащего списанию, и заполняется табличная часть. Затем пользователь вручную проводит документ.
  2. Полная автоматизация (Регламентное + Фоновое задание): В конфигурации настраивается расписание регламентного задания (например, первое число каждого месяца в 01:00). Задание вызывает экспортную процедуру общего модуля, которая автоматически создает экземпляр документа, заполняет его данными из запроса и проводит его в неоперативном режиме без участия человека.
  3. Двухэтапная схема с контролем ответственного лица: Регламентное задание автоматически создает и заполняет документ, но оставляет его непроведенным. Ответственный сотрудник получает уведомление или задачу, проверяет корректность рассчитанных показателей и самостоятельно нажимает кнопку проведения.

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

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

Проверку можно выполнять в обработчике события ПередЗаписью объекта документа с помощью запроса к базе данных:


Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ ПЕРВЫЕ 1
    |	ВыбытиеОборудования.Ссылка КАК Ссылка
    |ИЗ
    |	Документ.ВыбытиеОборудования КАК ВыбытиеОборудования
    |ГДЕ
    |	ВыбытиеОборудования.Дата МЕЖДУ &НачалоПериода И &КонецПериода
    |	И ВыбытиеОборудования.Ссылка <> &ТекущийДокумент";

Запрос.УстановитьПараметр("НачалоПериода", НачалоМесяца(ЭтотОбъект.Дата));
Запрос.УстановитьПараметр("КонецПериода", КонецМесяца(ЭтотОбъект.Дата));
Запрос.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.Ссылка);

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

Особенности работы и технические ограничения платформы

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

  1. Режим проведения: Регламентные документы формируются за прошлый или строго фиксированный период, поэтому их проведение всегда выполняется в неоперативном режиме (РежимПроведенияДокумента.Неоперативный).
  2. Права доступа и привилегированный режим: Если проведение документа осуществляется регламентным заданием, работающим от имени служебного пользователя, код общего модуля должен исполняться с вызовом функции УстановитьПривилегированныйРежим(Истина), чтобы избежать ошибок недостатка прав.
  3. Работа в Распределенных Информационных Базах (РИБ): Чтобы избежать ситуации, когда регламентный документ создается одновременно в нескольких узлах РИБ и вызывает коллизии при синхронизации, запуск регламентного задания необходимо ограничивать только главным узлом системы через проверку ПланыОбмена.ГлавныйУзел() = Неопределено.
  4. Файловый и клиент-серверный режимы: Помним, что в клиент-серверном режиме регламентные задания выполняются сервером автоматически, а в файловом режиме требуется активный сеанс пользователя или запущенный выделенный клиентский сеанс.
← На главную