Где найти настройку доступности полей по состоянию в 1С:Документооборот

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

При работе с программным продуктом 1С:Документооборот администраторы часто сталкиваются с задачей ограничить редактирование определенных реквизитов документа в зависимости от его текущего статуса. Например, когда документ уже находится в состоянии Согласован или Утвержден, крайне важно запретить пользователям изменять сумму договора, контрагента или дату. В данной статье мы подробно разберем, почему эта настройка может быть не видна, в каких версиях программы она присутствует и как ее правильно сконфигурировать.

Различия версий ПРОФ и КОРП: главная причина отсутствия настройки

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

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

Рассмотрим, как убедиться в доступности функционала:

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

Где находится настройка в 1С:Документооборот 2.1 КОРП

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

Здесь должны быть взведены следующие флаги:

После установки настроек вернемся в раздел Настройка и администрирование. В подразделе Настройки и справочники (или непосредственно в основном меню раздела, в зависимости от настроек навигации) появится пункт «Настройка доступности по состоянию». Рассмотрим подробнее, что представляет собой эта форма.

Настройка выглядит как матрица, где:

На пересечении реквизита и состояния мы можем установить одно из трех значений: Редактируемое, Только чтение или Скрыто. Это позволяет гибко управлять интерфейсом. Например, поле Регистрационный номер может быть Скрыто в состоянии Проект и переходить в режим Только чтение после регистрации.

Особенности настройки в 1С:Документооборот 3.0

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

Рассмотрим путь настройки в версии 3.0:

  1. Переходим в раздел Настройка — Виды документов.
  2. Открываем нужный вид документа (например, «Входящий договор»).
  3. Переходим на вкладку «Настройки действий сотрудника».

В этой версии разработчики объединили настройки видимости, доступности и обязательности заполнения полей в единый мощный конструктор. Здесь можно задавать условия не только в зависимости от состояния, но и в зависимости от роли пользователя, подразделения или других произвольных условий.

Решение для версии ПРОФ: использование расширений

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

Нам необходимо перехватить процедуру ПриЧтенииНаСервере или ПриСозданииНаСервере в модуле формы документа. Рассмотрим пример программного кода, который блокирует изменение суммы документа, если он уже не находится в состоянии «Проект».


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

Использование Объект.Состояние позволяет нам гибко управлять поведением формы. Важно помнить, что программная блокировка элементов на форме не заменяет полноценную настройку прав доступа на уровне записей (RLS), но является эффективным средством предотвращения случайных ошибок пользователей.

Важные замечания по приоритетам настроек

При настройке доступности полей важно понимать иерархию прав в 1С:Документооборот. Рассмотрим правила приоритета:

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

Таким образом, для корректной работы механизма в версии КОРП сначала убедитесь, что у пользователей в принципе есть права на редактирование данного вида документа в данной папке, и только затем приступайте к тонкой настройке полей через матрицу состояний.

← На главную