К статье
Практический материал

Разработка и Конфигурация · 13 мин

Как сделать интерфейс пользователя в 1С

Как создать интерфейс пользователя в 1С: управляемые формы, командный интерфейс, подсистемы, динамические списки и программная работа с элементами формы.

Интерфейс пользователя в 1С:Предприятие 8 строится из нескольких слоёв: командный интерфейс приложения (панель разделов, панель навигации, панель действий), формы объектов и списков, а также элементы вроде динамических списков и полей ввода. В отличие от классических десктоп-приложений, разработчик в 1С не рисует экран «по пикселям», а описывает структуру формы, а платформа сама компонует её на клиенте — в тонком, веб- или мобильном клиенте. Поэтому главная задача — правильно определить состав элементов и их свойства, а не внешний вид.

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

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

Как устроен интерфейс 1С и что нужно решить до начала работы

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

Второе решение — структура навигации. Пользователь видит не дерево метаданных, а разделы и команды, которые вы ему предоставите. Продумайте, какие разделы нужны (например, «Продажи», «Склад», «Отчёты»), какие объекты в них войдут и какие команды будут важными, а какие — второстепенными. От этого зависит, насколько быстро пользователь найдёт нужный документ или справочник.

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

Настройка подсистем и командного интерфейса

Подсистемы — это разделы, которые пользователь видит в панели разделов. Создаются они в ветке «Общие → Подсистемы» дерева конфигурации. Для каждой подсистемы задаётся синоним (видимое название), картинка и состав: в свойствах объекта метаданных (справочника, документа, отчёта) на закладке «Подсистемы» отмечается, в какие разделы он входит.

После распределения объектов по подсистемам откройте командный интерфейс каждой подсистемы: правый клик по подсистеме → «Командный интерфейс». В открывшемся окне видны все команды, попавшие в раздел: команды создания объектов, открытия списков, отчёты и обработки. Здесь можно менять порядок команд, снимать видимость с лишних и переносить команды между панелью навигации и панелью действий.

Практическое правило: в панели навигации оставляйте только то, что нужно ежедневно — списки документов и ключевые справочники. Редко используемые справочники убирайте в «Ещё» или вовсе скрывайте: пользователь всё равно сможет открыть их через «Все функции» (в режиме предприятия: главное меню → «Все функции», если оно включено администратором).

Порядок настройки командного интерфейса
  1. 1
    Создайте подсистемы в разделе «Общие → Подсистемы» и задайте им понятные синонимы
  2. 2
    Распределите объекты метаданных по подсистемам через свойства каждого объекта
  3. 3
    Откройте командный интерфейс подсистемы и отсортируйте команды по частоте использования
  4. 4
    Снимите видимость с редких команд и проверьте результат под профилем целевого пользователя
  5. 5
    Проверьте, что у пользователя без прав на объект соответствующие команды не отображаются

Создание управляемой формы объекта

У большинства объектов — справочников, документов — платформа создаёт формы автоматически. Чтобы получить свою форму, откройте объект в конфигураторе, перейдите на закладку «Формы» и нажмите «Добавить» рядом с нужным типом: форма объекта, форма списка, форма выбора. Откроется конструктор, где можно сразу указать, какие реквизиты включить.

Редактор формы состоит из трёх рабочих областей: список реквизитов формы (данные), дерево элементов формы (то, что видит пользователь) и палитра свойств. Важно понимать разницу: реквизит — это данные, элемент — их визуальное представление. Один реквизит может быть показан несколькими элементами или не показан вовсе, а элемент может быть декорацией или кнопкой без привязки к данным.

Типовой сценарий: перетащите реквизиты из панели реквизитов в дерево элементов, сгруппируйте их группами (группа «Обычная группа» с горизонтальной или вертикальной группировкой), настройте свойства важных полей — «Автоотметка незаполненного», «Кнопка списка выбора», «Подсказка ввода». Для табличных частей платформа автоматически добавляет командную панель с кнопками «Добавить» и «Удалить».

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

Формы обработок и нестандартные рабочие места

Обработки — основной инструмент для нестандартных интерфейсов: рабочих мест кассира, мастеров настройки, панелей мониторинга. Создаётся обработка в ветке «Обработки», форма добавляется так же, как у других объектов. Отличие в том, что у обработки нет хранимых данных, поэтому все данные формы — это реквизиты формы, которые вы определяете сами.

Для сложных экранов используйте реквизиты формы типа «ТаблицаЗначений» (для произвольных таблиц без привязки к объекту) и «ДинамическийСписок» (для выборок из базы с автоматической навигацией). Дерево значений подходит для иерархических данных — например, структуры заказа по позициям. Эти реквизиты заполняются программно на сервере, а на клиенте отображаются стандартными таблицами формы.

Компоновка сложной формы делается группами: вложенные группы с разной группировкой позволяют собрать макет из колонок и строк без абсолютного позиционирования. Для страниц используйте группу «Страницы» со страницами — платформа отрисует закладки. Избегайте жёсткой фиксации ширины и высоты элементов: форма должна корректно растягиваться при разных разрешениях экрана.

Программная работа с элементами формы

Логика формы пишется в модуле формы на встроенном языке. Обработчики событий создаются из палитры свойств элемента: например, у поля ввода — «ПриИзменении», у кнопки — «Нажатие», у формы — «ПриСозданииНаСервере», «ПриОткрытии». Директивы компиляции определяют, где исполняется код: &НаКлиенте, &НаСервере, &НаСервереБезКонтекста.

Типовая задача — управлять видимостью и доступностью элементов в зависимости от данных. Например, показывать поле «Дата отгрузки» только если заказ проведён. Делается это через свойство Видимость или Доступность элемента: Элементы.ДатаОтгрузки.Видимость = Объект.Проведен;. Такие переключения, не требующие данных с сервера, выполняйте в клиентских обработчиках — это убирает лишние серверные вызовы и ускоряет отклик формы.

Для оформления данных без изменения кода используйте условное оформление формы: настройка в редакторе формы, закладка «Условное оформление». Оно позволяет красить строки списка по условию (просроченные документы — красным), менять шрифт и отметки незаполненного. Условное оформление предпочтительнее программного изменения цвета, потому что работает декларативно и не замедляет форму.

bsl
&НаКлиенте
Процедура СпособОплатыПриИзменении(Элемент)
	Элементы.НомерКарты.Видимость = (Объект.СпособОплаты = ПредопределенноеЗначение("Перечисление.СпособыОплаты.Карта"));
КонецПроцедуры

Динамические списки и настройка отображения данных

Динамический список — основа форм списка и многих рабочих мест. По умолчанию он строится по таблице объекта, но можно включить произвольный запрос: в свойствах списка установите «Произвольный запрос» и напишите текст запроса с соединениями таблиц. Это позволяет показывать в одном списке данные документа вместе с данными связанных регистров — например, заказы с остатками по позициям.

Для произвольного динамического списка обязательно укажите ключевое поле («Основная таблица» или ключевые колонки), иначе список не сможет корректно обновляться и открывать объекты. Также задайте поля сортировки по умолчанию и, при необходимости, фиксированный отбор через параметры запроса — например, «только документы текущего месяца».

Пользовательские настройки списка (отбор, сортировка, группировка) доступны через кнопку «Ещё → Настроить список» и сохраняются платформой автоматически. Разработчику не нужно программировать это вручную — достаточно не блокировать стандартные команды. Если вы создаёте свою форму с динамическим списком, убедитесь, что у элемента списка включена стандартная командная панель или добавлены нужные команды вручную.

Типичные ошибки
01
Серверные вызовы в клиентских обработчиках «ПриИзменении» для каждого поля — форма тормозит из-за постоянных обращений к серверу
02
Жёстко заданные размеры элементов и позиционирование — форма «ездает» на мониторах с другим разрешением
03
Своя форма там, где хватило бы расширения — после обновления типовой конфигурации доработки конфликтуют или теряются
04
Вся логика в обработчике «ПриОткрытии» вместо «ПриСозданииНаСервере» — данные грузятся на клиенте, форма открывается медленно
05
Игнорирование прав при проектировании интерфейса — пользователи видят пустые разделы или неработающие команды

Проверка результата и типичные проблемы

Проверять интерфейс нужно не только из конфигуратора, но и в режиме предприятия под учётной записью целевого пользователя. Запуск с нужными правами покажет реальную картину: какие команды видны, какие разделы пусты, открываются ли формы без ошибок доступа. Удобно завести тестового пользователя с ролью «рядового» сотрудника и пройти его типовой сценарий целиком.

Обязательные проверки: форма открывается и создаётся без ошибок; обязательные поля подсвечены; кнопки выполняют заявленные действия; список обновляется после записи объекта; форма корректно выглядит при сужении окна. Если форма работает медленно, первым делом ищите серверные вызовы в частых событиях и запросы в цикле.

Перед изменением рабочей базы сделайте выгрузку информационной базы (конфигуратор → «Администрирование → Выгрузить информационную базу») или убедитесь, что настроено резервное копирование. Ошибка в интерфейсе редко портит данные, но ошибка в коде формы, который записывает объект, — вполне способна.

Контрольные точки

Как проверить результат

Открытие формы под пользователем с рабочими правами
Норма

Форма открывается, видны только доступные команды и данные

Тревожный признак

Ошибки доступа, пустые разделы, лишние команды

Поведение формы при изменении размеров окна
Норма

Элементы перестраиваются, ничего не обрезается

Тревожный признак

Поля наезжают друг на друга, часть кнопок недоступна

Скорость отклика при вводе данных
Норма

Изменение полей происходит мгновенно

Тревожный признак

Заметная пауза после каждого ввода — признак лишних серверных вызовов

Частые вопросы об интерфейсе в 1С

Можно ли сделать интерфейс в 1С без программирования?

Частично да. Подсистемы, командный интерфейс, автоматические формы объектов, условное оформление и настройки списков не требуют кода. Программирование понадобится для нестандартной логики: зависимых полей, заполнения таблиц по алгоритму, кнопок со своими действиями.

Чем отличается обычная форма от управляемой?

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

Как добавить кнопку со своим действием на форму?

В редакторе формы добавьте команду формы (закладка «Команды»), задайте ей обработчик действия с нужной директивой (клиент или сервер), затем перетащите команду в дерево элементов — появится кнопка. Кнопку можно поместить в командную панель формы или рядом с конкретным полем.

Почему пользователь не видит созданный раздел или команду?

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

Как изменить форму типовой конфигурации, не сломав обновления?

Используйте расширение конфигурации: «Конфигурация → Расширения конфигурации → Создать». В расширении заимствуйте нужную форму и доработайте её. Типовая конфигурация останется на поддержке, а обновления будут накладываться без конфликтов с вашими изменениями.

Можно ли сделать разный интерфейс для разных сотрудников?

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

Итог

Что важно запомнить

Интерфейс в 1С строится декларативно: подсистемы и командный интерфейс задают навигацию, управляемые формы — экраны объектов, а код в модуле формы добавляет логику. Начинайте с автоматических форм и настроек, прибегайте к программированию только для нестандартного поведения, а доработки типовых решений выполняйте через расширения.