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