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