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