Как настроить расположение и группировку дополнительных реквизитов на управляемой форме для всех пользователей

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

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

Способ 1. Штатная настройка структуры в справочнике наборов свойств (БСП)

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

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

  1. Перейдем в раздел Администрирование (или НСИ и администрирование) → Общие настройки → Дополнительные реквизиты и сведения.
  2. Откроем нужный набор (например, для справочника Номенклатура или документа Заказ клиента).
  3. Используем команду создания групп для логического разделения полей (например, «Технические характеристики», «Логистические параметры»).
  4. С помощью стрелок перемещения вверх и вниз зададим необходимый порядок следования реквизитов и распределим их по созданным группам.

При открытии формы объекта процедура УправлениеСвойствами.ПриСозданииНаСервере автоматически прочитает структуру набора и построит сгруппированный интерфейс для всех пользователей информационной базы.

Способ 2. Управление целевой группой размещения на форме

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

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


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    
    // Создаем или определяем параметры подключения свойств
    ПараметрыСвойств = УправлениеСвойствами.ПараметрыУправленияСвойствами();
    ПараметрыСвойств.ИмяЭлементаДляРазмещения = "ГруппаМоиДополнительныеРеквизиты";
    
    УправлениеСвойствами.ПриСозданииНаСервере(ЭтотОбъект, ПараметрыСвойств);
    
КонецПроцедуры

Если на форме создана группа с именем ГруппаМоиДополнительныеРеквизиты, подсистема динамически внедрит все дополнительные реквизиты внутрь этого контейнера для каждого пользователя.

Способ 3. Настройка формы в режиме «1С:Предприятие» и копирование пользователям

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

Выполним следующие шаги:

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

Способ 4. Программное перемещение динамических элементов формы

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

Рассмотрим пример кода в модуле формы:


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

Почему «ХранилищеСистемныхНастроек» возвращает «Неопределено»

При попытке программно прочитать настройки формы через ХранилищеСистемныхНастроек.Загрузить() разработчики часто сталкиваются со значением Неопределено. Разберем ключевые причины такого поведения:

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