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