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