Как программно настроить состав форм начальной страницы в 1С 8.3?

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

В процессе разработки интерфейса управляемого приложения часто возникает задача динамического изменения начальной страницы (рабочего стола). Стандартных настроек в конфигураторе не всегда достаточно, особенно когда состав отображаемых форм должен зависеть от подразделения пользователя, конкретных параметров сеанса или сложных условий, которые невозможно описать только набором ролей. В данной статье мы разберем несколько способов управления рабочим столом: от простых настроек видимости до глубокого программного управления через системные хранилища. Если штатных возможностей 1С недостаточно для реализации сложных условий, можно использовать платформу One RPA для роботизации действий и автоматизации рутинных операций в интерфейсе системы.

Способ 1. Настройка видимости по ролям в конфигураторе

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

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

  1. Откроем свойства корневого объекта конфигурации и нажмем на кнопку «Открыть рабочую область рабочего стола» (или перейдем на закладку «Рабочий стол» в интерфейсе настройки).
  2. В открывшемся окне мы увидим колонки (левую и правую) и список добавленных форм.
  3. Для каждой формы в списке можно нажать на кнопку настройки прав (пиктограмма с изображением ключа).
  4. Здесь можно установить флажки видимости для конкретных ролей.

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

Способ 2. Программное управление объектом «НастройкиНачальнойСтраницы»

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

Проанализируем пример кода, который позволяет полностью переопределить состав начальной страницы:


// Создаем новый объект настроек
НастройкиНачальнойСтраницы = Новый НастройкиНачальнойСтраницы;
СоставФорм = Новый СоставФормНачальнойСтраницы;

// Добавляем нужную форму в левую колонку
// Вместо "Обработка.РабочееМесто.Форма.Форма" укажите полный путь к вашей форме
СоставФорм.ЛеваяКолонка.Добавить("Обработка.Расш1_РабочийСтол.Форма.Форма");

// Применяем состав к объекту настроек
НастройкиНачальнойСтраницы.УстановитьСоставФорм(СоставФорм);

// Сохраняем настройки в системное хранилище для текущего пользователя
ХранилищеСистемныхНастроек.Сохранить(
    "Общее/НастройкиНачальнойСтраницы", 
    , 
    НастройкиНачальнойСтраницы
);

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

Способ 3. Управление колонками и одноколоночный режим

Объект СоставФормНачальнойСтраницы обладает двумя коллекциями: ЛеваяКолонка и ПраваяКолонка. Интересной особенностью является то, что программная настройка может изменять структуру страницы, заданную в метаданных.

Рассмотрим подробнее:

Способ 4. Архитектурный подход «Форма-контейнер»

Иногда постоянная запись в ХранилищеСистемныхНастроек является избыточной. Существует альтернативный метод, который часто называют «Дашборд». Суть его заключается в следующем:

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

Этот метод работает быстрее и стабильнее, так как он не перезаписывает системные таблицы настроек и не требует вызова ОбновитьИнтерфейс(). В качестве альтернативного варианта создания интерактивного дашборда можно использовать готовое решение для адаптивного рабочего стола на базе SVG.

Особенности иерархии и удаления настроек

Важно понимать, в каком приоритете платформа 1С выбирает, что показать пользователю. Рассмотрим эту иерархию (от высшего к низшему):

  1. Индивидуальные настройки пользователя, сохраненные им вручную (через меню «Вид — Настройка начальной страницы»).
  2. Программные настройки, записанные в ХранилищеСистемныхНастроек по ключу "Общее/НастройкиНачальнойСтраницы".
  3. Настройки видимости по ролям, заданные разработчиком в конфигураторе.

Если вы один раз программно установили настройки через код, они будут «перекрывать» любые изменения, которые вы позже внесете в конфигураторе. Чтобы вернуть управление конфигуратору (например, при смене должности сотрудника), нужно явно очистить программные настройки:


ХранилищеСистемныхНастроек.Удалить("Общее/НастройкиНачальнойСтраницы", , ИмяПользователя);

Передача параметров в формы рабочего стола

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

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

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

← На главную