Как создать роль Кладовщик в 1С:Бухгалтерия 3.0 через расширение без снятия конфигурации с поддержки?

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

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

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

Методология реализации: почему не нужно заимствовать всё подряд

Типичная ошибка при создании роли в расширении — заимствование сотен типовых объектов (документов, справочников, регистров) для настройки прав «с нуля». Это превращает обновление базы данных в кошмар, так как любое изменение структуры заимствованных объектов в основной конфигурации вызовет конфликт совместимости расширения.

Мы применим комбинированный подход:

  1. Базовые права на запуск программы и чтение нормативно-справочной информации (НСИ) мы предоставим с помощью типовых ролей БСП в режиме «1С:Предприятие».
  2. В расширении мы создадим точечную роль Расш1_Кладовщик, которая будет отвечать за добавление/изменение конкретных документов склада и покупок в непроведенном состоянии.
  3. Для ограничения печати непроведенных документов и гибкой настройки интерфейса мы используем программный код в расширении.

Рассмотрим весь процесс по шагам.


Шаг 1. Создание расширения и решение проблемы с ошибкой авторизации

Создадим новое расширение конфигурации в конфигураторе:

  1. Перейдем в меню Конфигурация — Управление расширениями конфигурации.
  2. Нажмем кнопку Добавить. Зададим имя, например, УправлениеДоступомКладовщик, и синоним. Назначение укажем как Адаптация. Снимем флажки «Активно» на время разработки, если база рабочая.
  3. Откроем конфигурацию расширения.

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

После этого добавим в расширение новую роль с именем Кладовщик.


Шаг 2. Настройка прав на документы в роли расширения

Заказчик требует дать права на создание и корректировку только непроведенных документов для следующего списка объектов:

Разберем, как правильно заимствовать эти документы в расширение и настроить права:

  1. В конфигураторе основной базы найдем нужный документ (например, ПеремещениеТоваров), кликнем по нему правой кнопкой мыши и выберем Добавить в расширение.
  2. В окне расширения откроем нашу роль Кладовщик.
  3. Найдем в списке объектов заимствованный документ ПеремещениеТоваров и установим для него следующие права:
    • Чтение — Да.
    • Просмотр — Да.
    • Ввод новых — Да.
    • Редактирование — Да.
    • Интерактивное добавление — Да.
    При этом флажки Проведение, Отмена проведения, Удаление и Интерактивное удаление должны быть строго сняты!

Типичная ловушка: Ошибка видимости реквизитов документа
Часто разработчики забывают дать права на стандартные и пользовательские реквизиты документа. Если дать права только на сам документ, но не предоставить доступ на чтение его реквизитов (таких как Дата, Номер, Проведен), программа не сможет вывести форму списка или форму документа, возвращая ошибку доступа. Убедимся, что в роли на вкладке «Поля» для каждого заимствованного документа установлены флажки «Чтение» и «Просмотр» для всех реквизитов и табличных частей.


Шаг 3. Запрет создания контрагентов (Только выбор)

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

  1. Добавим справочник Контрагенты в наше расширение.
  2. В свойствах роли Кладовщик для справочника Контрагенты установим только права Чтение и Просмотр.
  3. Флажки Изменение, Добавление, Интерактивное добавление и Редактирование оставляем пустыми.

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


Шаг 4. Настройка видимости командного интерфейса (меню)

Автор темы столкнулся с проблемой: документ добавлен в расширение, права выданы, подсистема заимствована, но сам документ не отображается в интерфейсе программы.

Проанализируем причины этой проблемы и устраним их:

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

Шаг 5. Запрет печати непроведенных документов

Для реализации этого требования напишем небольшой код в расширении. Мы можем перехватить процедуру печати в общем модуле БСП УправлениеПечатьюКлиент или выполнить перехват непосредственно перед выводом на печать.

Рассмотрим пример создания программного перехватчика для клиентской печати. Добавим в расширение общий модуль УправлениеПечатьюКлиент с возможностью вызова серверных методов. Создадим процедуру-предобработку:


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

Этот код надежно заблокирует печать любых непроведенных документов (как складских, так и документов поступления) для любого пользователя, подпадающего под ограничения роли кладовщика.


Шаг 6. Назначение роли в режиме «1С:Предприятие»

Для корректного запуска сеанса пользователя под созданной ролью выполним следующие настройки в режиме Предприятия:

  1. Запустим программу под учетной записью с административными правами.
  2. Перейдем в раздел Администрирование — Настройки пользователей и прав — Профили групп доступа.
  3. Создадим новый профиль с наименованием Профиль Кладовщик (Склад).
  4. В списке разрешенных ролей для этого профиля отметим галочками:
    • Наша роль из расширения: Кладовщик (УправлениеДоступомКладовщик).
    • Минимальные системные роли БСП: Запуск тонкого клиента, Запуск веб-клиента, Вывод (необходима для работы экранных форм и базовой печати).
    • Для просмотра НСИ (без возможности редактирования) добавим роли: Чтение базовой нормативно-справочной информации или Чтение данных бухгалтерии.
  5. Перейдем в справочник Группы доступа, создадим новую группу доступа, выберем созданный профиль и добавим туда нашего пользователя-кладовщика.

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

← На главную