Как в 1С:УПП разрешить или запретить проведение документов задним числом?

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

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

Вариант 1. Настройка механизма дат запрета изменения данных

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

Разберем по шагам, как настроить индивидуальные и общие границы запрета:

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

Рассмотрим подробнее возможности механизма дат запрета в УПП:

  1. Динамические (относительные) даты: чтобы не менять дату вручную ежедневно, система позволяет использовать динамические границы, такие как «Конец прошлого дня», «Конец прошлой недели» или «Конец прошлого месяца» со смещением на заданное количество дней.
  2. Разделение по разделам учета: дату запрета можно задавать отдельно для разделов «Бухгалтерский и налоговый учет», «Управленческий учет», «Торговля» и других, а также детализировать границы по организациям.
  3. Контроль полных прав: по умолчанию пользователи с ролью ПолныеПрава могут игнорировать дату запрета. Чтобы ограничение действовало и на них, необходимо в настройках параметров учета активировать признак применения даты запрета для пользователей с полными правами.

Вариант 2. Ограничение права на неоперативное проведение в ролях

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

Разберем процесс настройки прав в конфигураторе:

  1. Откроем нужную пользовательскую роль в дереве метаданных.
  2. В списке прав для документов найдем право Интерактивное проведение: Неоперативное и снимем с него флаг.
  3. Сохраним изменения конфигурации и обновим конфигурацию базы данных.

Проанализируем важные ограничения данного способа:

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

Вариант 3. Программный контроль через подписки на события

Если требуется строго заблокировать проведение задним числом и при интерактивных действиях, и при выполнении внешних обработок, создадим подписку на события для контроля даты проведения.

Разберем пример программной реализации. Создадим подписку на событие ОбработкаПроведения для источника ДокументОбъект и добавим проверку в общий модуль:


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

Также в типовой конфигурации УПП проверку можно интегрировать с планом видов характеристик ПраваПользователей и регистром сведений ЗначенияДополнительныхПравПользователей. Это позволит централизованно назначать дополнительное право «Разрешить проведение задним числом» конкретным пользователям в режиме «1С:Предприятие» без необходимости корректировки метаданных ролей.

Методологические последствия проведения задним числом

Выясним, к чему приводит неконтролируемое изменение документов в прошлых периодах. Проведение документов задним числом смещает последовательности партионного учета, взаиморасчетов и регламентированного учета по НДС. В результате нарушается хронология движений по регистрам, искажается себестоимость и расчет налога на прибыль.

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

← На главную