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