Разработка и Конфигурация · 13 мин
Как сделать интерфейс пользователя в 1С
Как создать интерфейс пользователя в 1С: управляемые формы, командный интерфейс, подсистемы, динамические списки и программная работа с элементами формы.
Интерфейс пользователя в 1С:Предприятие 8 строится из нескольких слоёв: командный интерфейс приложения (панель разделов, панель навигации, панель действий), формы объектов и списков, а также элементы вроде динамических списков и полей ввода. В отличие от классических десктоп-приложений, разработчик в 1С не рисует экран «по пикселям», а описывает структуру формы, а платформа сама компонует её на клиенте — в тонком, веб- или мобильном клиенте. Поэтому главная задача — правильно определить состав элементов и их свойства, а не внешний вид.
Работа над интерфейсом почти всегда начинается в конфигураторе: нужно решить, какие объекты увидит пользователь, какие команды ему нужны и какая форма будет открываться по умолчанию. Для типовых задач — справочник, документ, отчёт — платформа генерирует формы автоматически, и часто достаточно слегка доработать их в редакторе форм. Полностью ручная разработка требуется, когда нужна нестандартная логика: обработки, сложные рабочие места, формы с зависимыми полями.
Ниже разобран практический путь: от настройки командного интерфейса и подсистем до создания управляемой формы с нуля, работы с динамическими списками и программного изменения элементов. Материал ориентирован на управляемое приложение — актуальный режим для современных конфигураций.
Как устроен интерфейс 1С и что нужно решить до начала работы
Первое решение — режим интерфейса. Современные конфигурации используют управляемое приложение с интерфейсом «Такси»; обычное приложение с формами в стиле старых версий встречается только в устаревших решениях. Режим задаётся в свойствах конфигурации (корень дерева конфигурации → свойства → «Основной режим запуска»). Если вы дорабатываете типовую конфигурацию, режим уже выбран вендором, и менять его самостоятельно не следует.
Второе решение — структура навигации. Пользователь видит не дерево метаданных, а разделы и команды, которые вы ему предоставите. Продумайте, какие разделы нужны (например, «Продажи», «Склад», «Отчёты»), какие объекты в них войдут и какие команды будут важными, а какие — второстепенными. От этого зависит, насколько быстро пользователь найдёт нужный документ или справочник.
Третье — роли и права. Интерфейс в 1С тесно связан с правами: команда, к которой у пользователя нет доступа, просто не отображается. Поэтому настройку интерфейса логично вести параллельно с настройкой ролей, иначе получите разделы, которые у части пользователей пустые или, наоборот, перегруженные.
Настройка подсистем и командного интерфейса
Подсистемы — это разделы, которые пользователь видит в панели разделов. Создаются они в ветке «Общие → Подсистемы» дерева конфигурации. Для каждой подсистемы задаётся синоним (видимое название), картинка и состав: в свойствах объекта метаданных (справочника, документа, отчёта) на закладке «Подсистемы» отмечается, в какие разделы он входит.
После распределения объектов по подсистемам откройте командный интерфейс каждой подсистемы: правый клик по подсистеме → «Командный интерфейс». В открывшемся окне видны все команды, попавшие в раздел: команды создания объектов, открытия списков, отчёты и обработки. Здесь можно менять порядок команд, снимать видимость с лишних и переносить команды между панелью навигации и панелью действий.
Практическое правило: в панели навигации оставляйте только то, что нужно ежедневно — списки документов и ключевые справочники. Редко используемые справочники убирайте в «Ещё» или вовсе скрывайте: пользователь всё равно сможет открыть их через «Все функции» (в режиме предприятия: главное меню → «Все функции», если оно включено администратором).
- 1Создайте подсистемы в разделе «Общие → Подсистемы» и задайте им понятные синонимы
- 2Распределите объекты метаданных по подсистемам через свойства каждого объекта
- 3Откройте командный интерфейс подсистемы и отсортируйте команды по частоте использования
- 4Снимите видимость с редких команд и проверьте результат под профилем целевого пользователя
- 5Проверьте, что у пользователя без прав на объект соответствующие команды не отображаются
Создание управляемой формы объекта
У большинства объектов — справочников, документов — платформа создаёт формы автоматически. Чтобы получить свою форму, откройте объект в конфигураторе, перейдите на закладку «Формы» и нажмите «Добавить» рядом с нужным типом: форма объекта, форма списка, форма выбора. Откроется конструктор, где можно сразу указать, какие реквизиты включить.
Редактор формы состоит из трёх рабочих областей: список реквизитов формы (данные), дерево элементов формы (то, что видит пользователь) и палитра свойств. Важно понимать разницу: реквизит — это данные, элемент — их визуальное представление. Один реквизит может быть показан несколькими элементами или не показан вовсе, а элемент может быть декорацией или кнопкой без привязки к данным.
Типовой сценарий: перетащите реквизиты из панели реквизитов в дерево элементов, сгруппируйте их группами (группа «Обычная группа» с горизонтальной или вертикальной группировкой), настройте свойства важных полей — «Автоотметка незаполненного», «Кнопка списка выбора», «Подсказка ввода». Для табличных частей платформа автоматически добавляет командную панель с кнопками «Добавить» и «Удалить».
Форму списка обычно достаточно создать один раз и задать основные колонки. Полезные настройки формы списка: порядок колонок, ширина, отображение картинок состояния, а также стандартные команды «Найти», «Отбор» — они присутствуют по умолчанию и не требуют программирования.
Формы обработок и нестандартные рабочие места
Обработки — основной инструмент для нестандартных интерфейсов: рабочих мест кассира, мастеров настройки, панелей мониторинга. Создаётся обработка в ветке «Обработки», форма добавляется так же, как у других объектов. Отличие в том, что у обработки нет хранимых данных, поэтому все данные формы — это реквизиты формы, которые вы определяете сами.
Для сложных экранов используйте реквизиты формы типа «ТаблицаЗначений» (для произвольных таблиц без привязки к объекту) и «ДинамическийСписок» (для выборок из базы с автоматической навигацией). Дерево значений подходит для иерархических данных — например, структуры заказа по позициям. Эти реквизиты заполняются программно на сервере, а на клиенте отображаются стандартными таблицами формы.
Компоновка сложной формы делается группами: вложенные группы с разной группировкой позволяют собрать макет из колонок и строк без абсолютного позиционирования. Для страниц используйте группу «Страницы» со страницами — платформа отрисует закладки. Избегайте жёсткой фиксации ширины и высоты элементов: форма должна корректно растягиваться при разных разрешениях экрана.
Программная работа с элементами формы
Логика формы пишется в модуле формы на встроенном языке. Обработчики событий создаются из палитры свойств элемента: например, у поля ввода — «ПриИзменении», у кнопки — «Нажатие», у формы — «ПриСозданииНаСервере», «ПриОткрытии». Директивы компиляции определяют, где исполняется код: &НаКлиенте, &НаСервере, &НаСервереБезКонтекста.
Типовая задача — управлять видимостью и доступностью элементов в зависимости от данных. Например, показывать поле «Дата отгрузки» только если заказ проведён. Делается это через свойство Видимость или Доступность элемента: Элементы.ДатаОтгрузки.Видимость = Объект.Проведен;. Такие переключения, не требующие данных с сервера, выполняйте в клиентских обработчиках — это убирает лишние серверные вызовы и ускоряет отклик формы.
Для оформления данных без изменения кода используйте условное оформление формы: настройка в редакторе формы, закладка «Условное оформление». Оно позволяет красить строки списка по условию (просроченные документы — красным), менять шрифт и отметки незаполненного. Условное оформление предпочтительнее программного изменения цвета, потому что работает декларативно и не замедляет форму.
&НаКлиенте
Процедура СпособОплатыПриИзменении(Элемент)
Элементы.НомерКарты.Видимость = (Объект.СпособОплаты = ПредопределенноеЗначение("Перечисление.СпособыОплаты.Карта"));
КонецПроцедурыДинамические списки и настройка отображения данных
Динамический список — основа форм списка и многих рабочих мест. По умолчанию он строится по таблице объекта, но можно включить произвольный запрос: в свойствах списка установите «Произвольный запрос» и напишите текст запроса с соединениями таблиц. Это позволяет показывать в одном списке данные документа вместе с данными связанных регистров — например, заказы с остатками по позициям.
Для произвольного динамического списка обязательно укажите ключевое поле («Основная таблица» или ключевые колонки), иначе список не сможет корректно обновляться и открывать объекты. Также задайте поля сортировки по умолчанию и, при необходимости, фиксированный отбор через параметры запроса — например, «только документы текущего месяца».
Пользовательские настройки списка (отбор, сортировка, группировка) доступны через кнопку «Ещё → Настроить список» и сохраняются платформой автоматически. Разработчику не нужно программировать это вручную — достаточно не блокировать стандартные команды. Если вы создаёте свою форму с динамическим списком, убедитесь, что у элемента списка включена стандартная командная панель или добавлены нужные команды вручную.
Проверка результата и типичные проблемы
Проверять интерфейс нужно не только из конфигуратора, но и в режиме предприятия под учётной записью целевого пользователя. Запуск с нужными правами покажет реальную картину: какие команды видны, какие разделы пусты, открываются ли формы без ошибок доступа. Удобно завести тестового пользователя с ролью «рядового» сотрудника и пройти его типовой сценарий целиком.
Обязательные проверки: форма открывается и создаётся без ошибок; обязательные поля подсвечены; кнопки выполняют заявленные действия; список обновляется после записи объекта; форма корректно выглядит при сужении окна. Если форма работает медленно, первым делом ищите серверные вызовы в частых событиях и запросы в цикле.
Перед изменением рабочей базы сделайте выгрузку информационной базы (конфигуратор → «Администрирование → Выгрузить информационную базу») или убедитесь, что настроено резервное копирование. Ошибка в интерфейсе редко портит данные, но ошибка в коде формы, который записывает объект, — вполне способна.
Как проверить результат
Форма открывается, видны только доступные команды и данные
Ошибки доступа, пустые разделы, лишние команды
Элементы перестраиваются, ничего не обрезается
Поля наезжают друг на друга, часть кнопок недоступна
Изменение полей происходит мгновенно
Заметная пауза после каждого ввода — признак лишних серверных вызовов
Частые вопросы об интерфейсе в 1С
Можно ли сделать интерфейс в 1С без программирования?
Частично да. Подсистемы, командный интерфейс, автоматические формы объектов, условное оформление и настройки списков не требуют кода. Программирование понадобится для нестандартной логики: зависимых полей, заполнения таблиц по алгоритму, кнопок со своими действиями.
Чем отличается обычная форма от управляемой?
Обычная форма рисуется и исполняется целиком на клиенте и работает только в толстом клиенте обычного приложения. Управляемая описывается декларативно, отрисовывается платформой и работает в тонком, веб- и мобильном клиентах. Для новых разработок используются только управляемые формы.
Как добавить кнопку со своим действием на форму?
В редакторе формы добавьте команду формы (закладка «Команды»), задайте ей обработчик действия с нужной директивой (клиент или сервер), затем перетащите команду в дерево элементов — появится кнопка. Кнопку можно поместить в командную панель формы или рядом с конкретным полем.
Почему пользователь не видит созданный раздел или команду?
Наиболее частые причины: у роли пользователя нет прав на объекты раздела, в командном интерфейсе подсистемы снята видимость команды, либо подсистема не включена в состав функциональных опций, которые у пользователя выключены. Проверяйте в указанном порядке.
Как изменить форму типовой конфигурации, не сломав обновления?
Используйте расширение конфигурации: «Конфигурация → Расширения конфигурации → Создать». В расширении заимствуйте нужную форму и доработайте её. Типовая конфигурация останется на поддержке, а обновления будут накладываться без конфликтов с вашими изменениями.
Можно ли сделать разный интерфейс для разных сотрудников?
Да, и это делается через роли и функциональные опции, а не через дублирование форм. Разные роли видят разный набор команд, а функциональные опции могут скрывать отдельные элементы и целые подсистемы в зависимости от настроек информационной базы.
Что важно запомнить
Интерфейс в 1С строится декларативно: подсистемы и командный интерфейс задают навигацию, управляемые формы — экраны объектов, а код в модуле формы добавляет логику. Начинайте с автоматических форм и настроек, прибегайте к программированию только для нестандартного поведения, а доработки типовых решений выполняйте через расширения.