Можно ли настроить права доступа в 1С для автоматической подстановки ответственного в печатную форму?

Программист IT и автоматизация бизнеса
← На главную

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

Ограничение механизма прав доступа и принципы работы печати

Проанализируем, почему нельзя решить задачу подстановки ответственного через права пользователя (роли и механизмы RLS):

  1. Назначение прав доступа: Роли и ограничения на уровне записей (RLS) в платформе 1С служат исключительно для разграничения прав на чтение, добавление, изменение или удаление данных из информационной базы. Они не содержат алгоритмов вычисления значений «на лету» и не предназначены для подмены значений при формировании печатных форм.
  2. Логика формирования печатных форм: Печатная форма создается программным кодом, который запрашивает значения реквизитов непосредственно из объекта документа или базы данных. Если реквизит Ответственный не заполнен при создании документа, алгоритм печати считает из базы пустое значение и выведет его в макет.

Таким образом, настроить подстановку значений в печатные формы стандартными правами доступа невозможно — требуется либо настройка параметров пользователя, либо доработка логики системы.

Способ 1. Настройка значений по умолчанию (без изменения кода)

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

Разберем порядок действий:

  1. Перейдем в настройки пользователя (или настройки параметров учета) в режиме 1С:Предприятие.
  2. Установим значение по умолчанию для поля Основной ответственный.
  3. При создании новых документов Реализация товаров и услуг поле Ответственный будет автоматически заполняться текущим пользователем. Соответственно, стандартная печатная форма выведет актуальные данные.

Способ 2. Использование внешней печатной формы

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

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


Если НЕ ЗначениеЗаполнено(СсылкаНаОбъект.Ответственный) Тогда
    ПечатноеЛицо = ПараметрыСеанса.ТекущийПользователь;
Иначе
    ПечатноеЛицо = СсылкаНаОбъект.Ответственный;
КонецЕсли;

Такой подход сохраняет конфигурацию на поддержке и гарантирует корректное формирование макета.

Способ 3. Автоматическое заполнение документа через подписку на событие

Посмотрим на вариант с минимальной доработкой конфигурации. Мы можем использовать подписку на событие ОбработкаЗаполнения или ПередЗаписью для нужного документа.

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


Если НЕ ЗначениеЗаполнено(Источник.Ответственный) Тогда
    Источник.Ответственный = ПараметрыСеанса.ТекущийПользователь;
КонецЕсли;

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

Способ 4. Использование расширений конфигурации (для платформы 8.3)

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

С помощью аннотаций &Перед или &Вместо подключается алгоритм, который подставляет ПараметрыСеанса.ТекущийПользователь при формировании печатной формы, если реквизит объекта пуст.

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

← На главную