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