Управляемые формы 1С
Play ITЗагрузка интерактивного демо…
Управляемая форма — основной способ показать пользователю данные и принять ввод в современных конфигурациях на платформе 8.3. Форма связывает реквизиты (данные) с элементами (поля, кнопки, таблицы) и командами (действия пользователя).
Код формы выполняется в двух контекстах:
- Клиент — интерфейс, реакция на клики, лёгкая валидация;
- Сервер — работа с базой, тяжёлые вычисления, запросы.
Разделение контекстов — центральная тема разработки под тонким и веб-клиентом.
Конструирование формы
Реквизиты формы
Реквизит — переменная формы с типом. Реквизиты бывают:
- Основной — объект, который редактирует форма (документ, элемент справочника, обработка);
- Дополнительные — служебные данные (фильтры, флаги,
ТаблицаЗначенийдля списка на форме).
Реквизиты создаются в редакторе формы или программно. Имена реквизитов используются в выражениях элементов (Объект.Контрагент, СписокОтбора).
Элементы формы
| Элемент | Назначение |
|---|---|
| Поле ввода | Редактирование реквизита |
| Поле надписи | Только отображение |
| Поле флажка / переключателя | Булево, выбор из вариантов |
| Кнопка | Вызов команды |
| Группа, страницы | Компоновка интерфейса |
| Таблица | Отображение ТаблицаЗначений или табличной части |
| Декорация | Заголовки, отступы |
Элемент привязывается к пути к данным — строке вида Объект.Реквизит или СписокСтрок.Колонка.
Команды
Команда — именованное действие формы или конфигурации.
- Локальные — только на этой форме (
ВыполнитьРасчёт); - Глобальные — из метаданных (стандартные "Записать", "Провести" или добавленные вручную).
Обработчик команды — процедура в модуле формы, обычно с директивой &НаКлиенте.
Клиент и сервер
Директивы компиляции
Перед процедурой или функцией указывают, где будет выполняться код:
Код ITЗагрузка примера кода…
| Директива | Где выполняется | Типичные задачи |
|---|---|---|
&НаКлиенте | Клиентское приложение | Клики, диалоги, обновление формы |
&НаСервере | Сервер 1С | Запросы, запись в БД, ТаблицаЗначений |
&НаСервереБезКонтекста | Сервер без привязки к форме | Общие расчёты без доступа к Объект формы |
На клиенте нельзя напрямую обращаться к базе и создавать ТаблицаЗначений. Любая работа с данными — через серверную процедуру или запрос на сервере. Подробнее — в таблицах значений.
Вызов сервера с клиента
Клиентская процедура вызывает серверную по имени. Платформа сериализует параметры, выполняет серверный код и возвращает результат. Ссылочные типы (СправочникСсылка, ДокументОбъект) передаются по правилам платформы — лишние обращения к серверу замедляют форму.
Паттерн: короткий обработчик на клиенте → один вызов сервера → обновление реквизитов формы.
События формы
Частые обработчики в модуле формы:
| Событие | Когда срабатывает |
|---|---|
ПриСозданииНаСервере | Форма создаётся, можно заполнить реквизиты по умолчанию |
ПриОткрытии | Форма показана пользователю (клиент) |
ПередЗаписью / ПослеЗаписи | Сохранение объекта |
ПриИзменении (элемента) | Пользователь изменил поле |
Тяжёлую инициализацию (запросы, заполнение таблиц) размещайте в ПриСозданииНаСервере, а не в клиентских обработчиках.
Открытие формы из кода
// Существующий объект
ОткрытьФорму("Справочник.Номенклатура.ФормаОбъекта", Новый Структура("Ключ", СсылкаНаТовар));
// Новый объект
Параметры = Новый Структура;
Параметры.Вставить("ЗначенияЗаполнения", Новый Структура("Наименование", "Новый товар"));
ОткрытьФорму("Справочник.Номенклатура.ФормаОбъекта", Параметры);
Параметры формы передаются вторым аргументом; в модуле формы их читают в ПриСозданииНаСервере через Параметры.Свойство("Имя", Значение).
Типичные ошибки
| Симптом | Причина | Что сделать |
|---|---|---|
| "Объект недоступен на клиенте" | Запрос или запись в &НаКлиенте | Перенести код в &НаСервере |
| Форма "зависает" | Длинный цикл или запрос на клиенте | Сервер + индикатор или фоновое задание |
| Данные на форме не обновляются | Изменили объект на сервере без возврата на клиент | Вернуть значения или перечитать объект |
| Команда не видна | Не добавлена в командный интерфейс формы | Проверить "Командный интерфейс" в редакторе |
Связанные материалы
- Архитектура и модули — модуль формы среди других модулей конфигурации
- Таблицы значений на форме
- Объекты и проведение
- Первая программа — внешняя обработка с кнопкой