Как в ЗУП дать доступ только к записи документа, без возможности его проведения

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

В крупных организациях часто возникает потребность в разделении функций сотрудников при работе с документами. Распространенный сценарий — когда один сотрудник (оператор или младший менеджер) должен только завести данные и сохранить «черновик», а другой (старший кадровик или расчетчик) — проверить и провести документ. В системе 1С:Зарплата и управление персоналом 3.1 этот механизм можно реализовать несколькими способами: от штатных настроек профилей до разработки небольших расширений. Разберем подробно, как это сделать правильно, учитывая технические нюансы платформы 1С:Предприятие 8.3.

Вариант 1. Настройка прав на уровне ролей

Для реализации задачи через механизм ролей нам необходимо создать новую роль и четко разграничить права на объект. Рассмотрим подробнее, какие именно флажки в конфигураторе отвечают за нужное нам поведение. Проанализируем стандартную матрицу прав:

  1. Добавление и Изменение — эти права позволяют пользователю создавать новый объект в базе данных и редактировать уже существующий.
  2. Интерактивное добавление и Редактирование — позволяют пользователю видеть кнопки «Создать» и изменять поля в форме документа.
  3. Проведение и Интерактивное проведение — именно эти права нужно отключить. Если снять эти галочки, кнопка «Провести» станет недоступной или выдаст ошибку нарушения прав.
  4. Отмена проведения и Интерактивная отмена проведения — их также следует отключить, чтобы пользователь не мог перевести уже готовый документ обратно в состояние «записан».

Важный нюанс: выясним причину, по которой простая запись может не срабатывать. В системе 1С, если документ уже был когда-то проведен, то при обычном нажатии кнопки «Записать» платформа инициирует процедуру перепроведения. Если у пользователя нет прав на проведение, он не сможет даже просто перезаписать уже проведенный документ. Поэтому такая схема идеально работает только для новых, еще не проведенных документов («черновиков»).

Вариант 2. Использование стандартных профилей доступа ЗУП 3.1

Прежде чем приступать к изменению конфигурации, проанализируем штатные возможности программы. Разработчики 1С уже предусмотрели похожие сценарии работы. В справочнике «Профили групп доступа» обратим внимание на следующие профили:

Посмотрим на логику работы этих профилей: они позволяют вводить информацию, но оставляют документ в состоянии «не проведен». Это исключает влияние документа на учет (движения по регистрам не формируются) до момента проверки ответственным лицом.

Вариант 3. Разделение функций кадровика и расчетчика

В ЗУП 3.1 реализована уникальная технология двухэтапного заполнения документов, таких как Больничный лист, Отпуск или Командировка. Это позволяет решить задачу без изменения ролей. Разберем по шагам, как это работает:

  1. Кадровая часть: Кадровик вносит данные о периоде отсутствия, причине и сотруднике. Он нажимает «Провести», но при этом финансовые результаты (суммы) еще не рассчитаны.
  2. Расчетная часть: Расчетчик видит в списке «недозаполненные» документы, заходит в них, проверяет расчет среднего заработка и начислений, и устанавливает флаг Расчет утвержден (или «Документ рассчитан»).

Если ваша «мартышка» (оператор ввода) должна просто вносить первичку, возможно, ей стоит назначить профиль кадровика с ограниченными правами, а расчетчик уже будет завершать работу с документом.

Вариант 4. Техническое решение через расширение (для программистов)

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

Проанализируем ситуацию: нам нужно перехватить момент записи и, если режим записи — «Проведение», проверить права или принадлежность пользователя к группе. Посмотрим на пример кода в процедуре ПередЗаписью:


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

Такой подход позволяет оставить типовую конфигурацию на поддержке и гибко управлять логикой запрета. Мы можем даже не выдавать ошибку доступа, а просто принудительно менять РежимЗаписи на Запись, хотя явное уведомление пользователя через Отказ = Истина является более правильным с точки зрения интерфейсной логики.

Вариант 5. Настройка видимости интерфейса

Чтобы не вводить пользователя в заблуждение наличием кнопок, которые он не может нажать, проанализируем возможность настройки формы. В управляемом приложении мы можем управлять видимостью команд через:

Выясним причину популярности этого метода: он убирает «визуальный шум». Пользователь видит только кнопку «Записать», и у него не возникает вопросов, почему «Провести» выдает ошибку.

Резюме

Для реализации задачи «запись без проведения» в ЗУП 3.1 рекомендуется придерживаться следующей последовательности действий:

  1. Сначала попробуйте использовать стандартный профиль «Кадровик (без права проведения кадровых приказов)».
  2. Если этого недостаточно, создайте свою роль, где права Проведение и Интерактивное проведение сняты, но оставлены права на Добавление и Редактирование.
  3. Помните о техническом ограничении: запись уже проведенного документа невозможна без прав на проведение.
  4. Если требуется максимально гибкое решение — используйте расширение с проверкой в методе ПередЗаписью.

Выбор метода зависит от того, насколько часто вы планируете обновлять конфигурацию и насколько критично строгое соблюдение регламента ввода данных в вашей компании.

← На главную