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