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