Почему дата запрета изменения данных не блокирует регламентированную отчетность и как настроить запрет?

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

При ведении учета в программах 1С (например, 1С:Управление производственным предприятием 1.3, 1С:Комплексная автоматизация 1.1 или 1С:Зарплата и управление персоналом 2.5) пользователи нередко сталкиваются с ситуацией: дата запрета изменения данных установлена, документы учетного периода надежно заблокированы, однако уже сданные регламентированные отчеты по-прежнему открываются на редактирование и позволяют перезаписывать данные. Выясним причину такого поведения и рассмотрим практические способы защиты регламентированных отчетов от случайных или несанкционированных изменений.

Причина поведения типового механизма

Проанализируем архитектуру работы подсистемы «Даты запрета изменения данных». Типовой механизм границ запрета изначально спроектирован для контроля первичных учетных документов, формирующих проводки по бухгалтерскому и налоговому учету или движения по регистрам накопления. Его главная цель — сохранить неизменность рассчитанной финансовой и налоговой базы.

Документ РегламентированныйОтчет и связанные с ним регистры сведений (где сохраняются таблицы показателей, расшифровки и выгруженные файлы) не формируют бухгалтерских проводок или движений по регистрам. Разработчики типовых конфигураций намеренно исключили этот объект из типовых алгоритмов автоматической проверки границы запрета. В результате, даже если дата запрета установлена корректно и распространяется на всех пользователей (включая администраторов с полными правами), при попытке открыть, изменить или перезаписать регламентированный отчет проверка даты запрета просто не вызывается.

Вариант 1. Программная доработка проверки даты запрета

Если необходимо, чтобы регламентированные отчеты строго подчинялись общей или специализированной дате запрета, разберем программное решение. Реализовать контроль можно в модуле объекта документа РегламентированныйОтчет либо с помощью механизма подписок на события.

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


Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
    
    // Проверяем заполненность организации и даты запрета
    Если Не ЗначениеЗаполнено(Организация) Тогда
        Возврат;
    КонецЕсли;
    
    // Определяем проверяемую дату (например, дату подписи отчета)
    ДатаОтчета = ?(ЗначениеЗаполнено(ДатаПодписи), ДатаПодписи, Дата);
    
    // Вызываем типовую функцию проверки границы запрета изменения данных
    Если ГраницыЗапретаИзмененияДанных.Проверить(Организация, ДатаОтчета) Тогда
        ВызватьИсключение "Редактирование регламентированного отчета запрещено: период закрыт датой запрета изменения данных!";
        Отказ = Истина;
    КонецЕсли;

КонецПроцедуры

Для создания удобного интерфейса также рекомендуется в модуле формы отчета (в процедуре ПриОткрытии) проверять дату запрета и переводить форму в режим чтения:


Процедура ПриОткрытии()
    
    // Если период закрыт, блокируем возможность ручных правок
    Если ГраницыЗапретаИзмененияДанных.Проверить(ЭтотОбъект.Организация, ЭтотОбъект.ДатаПодписи) Тогда
        ЭтаФорма.ТолькоПросмотр = Истина;
    КонецЕсли;

КонецПроцедуры

Вариант 2. Контроль по статусу отчета

В некоторых типовых решениях (например, в современных версиях на базе БСП) редактирование показателей отчета напрямую привязано к его статусу. Если для отчета установлен статус «Сдано» или «Отправлено», форма блокируется для ручных изменений.

Разберем, как реализовать аналогичную логику при доработке:

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

Важно: в типовых версиях конфигураций статус отчета часто носит исключительно информационный характер (если не используется встроенный сервис отправки отчетности через 1С-Отчетность). Аппаратная блокировка отчета в таких конфигурациях наступает только после получения положительного протокола/квитанции от контролирующего органа.

Вариант 3. Ограничение прав доступа и аудит изменений

Если внесение изменений в программный код нежелательно, рассмотрим административные методы защиты:

  1. Ограничение ролей пользователей: создадим или настроим профиль доступа, в котором у бухгалтеров убирается право интерактивного изменения и удаления документов вида РегламентированныйОтчет за прошлые периоды с помощью механизма RLS (ограничение доступа на уровне записей).
  2. Настройка версионирования объектов: включим версионирование для документа РегламентированныйОтчет. Это позволит в любой момент увидеть историю изменений, автора правок и восстановить исходную версию отчета.
  3. Анализ журнала регистрации: настроим отбор по событиям изменения документа РегламентированныйОтчет для оперативного контроля действий пользователей.

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

← На главную