Как отключить дату запрета изменения данных в 1С на обычных формах?

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

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

Способ 1. Штатное отключение через пользовательский интерфейс

Для отключения контроля стандартными средствами программы воспользуемся встроенной обработкой настройки. Рассмотрим алгоритм действий:

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

Способ 2. Очистка набора записей в регистре сведений

Иногда форма настройки недоступна в интерфейсе или требуется напрямую очистить сохраненные данные. Границы запрета в типовых конфигурациях хранятся в специализированном регистре. Проанализируем этот путь:

  1. Откроем главное меню: Операции → Регистры сведений.
  2. Найдем в списке регистр Границы запрета изменения данных и откроем его.
  3. Выделим все присутствующие записи и удалим их (комбинация клавиш Ctrl + A, затем Delete).

После удаления строк регистр станет пустым, что снимет все зафиксированные границы на уровне базы данных.

Способ 3. Программный сброс параметров сеанса

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

Посмотрим на пример программного сброса значения параметра сеанса в текущем подключении:


// Сброс значения параметра сеанса, хранящего границы запрета
ПараметрыСеанса.ГраницыЗапретаИзмененияДанных = Новый ХранилищеЗначения(Неопределено, Новый СжатиеДанных(0));

Если в конфигурации реализована экспортная процедура очистки, вызовем ее из общего модуля:


// Вызов типовой процедуры очистки границ (для конфигураций УПП / УТ)
ПолныеПрава.ОчиститьГраницыЗапрета();

Почему запрет продолжает действовать: перезапуск сеансов и изоляция памяти

Очень часто администраторы очищают дату в интерфейсе или регистре, но пользователи по-прежнему получают сообщение об ошибке: «Редактирование данных этого периода запрещено». Выясним причину такого поведения платформы.

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

Для применения изменений выполним одно из следующих действий:

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

Альтернативные варианты обхода запрета без полного отключения

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

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