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

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

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

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

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

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

Ниже разобраны оба варианта: как создать форму объекта, как добавить на неё поля и кнопки, как вывести простое окно-сообщение из кода и как проверить результат без риска для рабочей базы.

Какие окна бывают в 1С и что выбрать

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

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

Сравнение вариантов

Управляемая форма

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

Обычная форма

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

Диалог из кода (ПоказатьВопрос и т.п.)

Подходит для простых подтверждений и сообщений; не подходит для ввода сложных данных.

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

Откройте конфигуратор и найдите нужный объект в дереве конфигурации — например, справочник или документ. Раскройте ветку объекта, щёлкните правой кнопкой по пункту «Формы» и выберите «Добавить». Запустится конструктор формы.

В конструкторе выберите тип формы (например, «Форма элемента»), при необходимости задайте имя и отметьте, должна ли форма стать основной для этого типа. После нажатия «Готово» 1С автоматически создаст форму и разместит на ней основные реквизиты объекта.

Порядок создания формы
  1. 1
    Откройте конфигуратор под пользователем с правами на изменение конфигурации
  2. 2
    В дереве конфигурации найдите объект и раскройте его ветку
  3. 3
    Правой кнопкой по «Формы» — «Добавить», выберите тип формы в конструкторе
  4. 4
    Нажмите «Готово» и проверьте автоматически созданный набор элементов
  5. 5
    Сохраните конфигурацию (F7) и обновите конфигурацию базы данных
  6. 6
    Запустите режим «Предприятие» и откройте форму для проверки

Добавление элементов, кнопок и команд на форму

Состав формы редактируется в двух связанных панелях: «Реквизиты» (данные) и «Элементы» (визуальное представление). Чтобы вывести поле на форму, перетащите реквизит из правой панели в дерево элементов слева. 1С сама создаст подходящий элемент — поле ввода, флажок или таблицу.

Для кнопки сначала создайте команду: в редакторе формы откройте вкладку «Команды» — «Формы», добавьте команду и задайте её обработчик. Затем перетащите команду в дерево элементов, в нужную группу или командную панель. У групп настраивайте свойство «Группировка» (горизонтальная/вертикальная), чтобы управлять расположением содержимого.

Код обработчиков и диалоговые окна из программы

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

Для простых окон без создания формы используйте асинхронные методы, так как модальные вызовы в управляемом приложении запрещены по умолчанию:

bsl
&НаКлиенте
Процедура КомандаПроверить(Команда)
	ОписаниеОповещения = Новый ОписаниеОповещения("ПослеВопроса", ЭтотОбъект);
	ПоказатьВопрос(ОписаниеОповещения, "Сохранить изменения?", РежимДиалогаВопрос.ДаНет);
КонецПроцедуры

&НаКлиенте
Процедура ПослеВопроса(Результат, ДопПараметры) Экспорт
	Если Результат = КодВозвратаДиалога.Да Тогда
		ПоказатьПредупреждение(, "Изменения сохранены");
	КонецЕсли;
КонецПроцедуры

Обратите внимание на директивы компиляции: &НаКлиенте выполняется в интерфейсе пользователя, &НаСервере — на сервере. Работа с файлами, диалоги и предупреждения доступны только на клиенте; запросы к базе данных — только на сервере.

Обычные формы в старых конфигурациях

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

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

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

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

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

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

Открытие формы
Норма

Форма открывается без ошибок, все реквизиты видны

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

Ошибка «Объект не найден» или пустая форма — проверьте основную форму объекта и права

Работа кнопок
Норма

Команда выполняется, результат виден пользователю

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

Ничего не происходит — проверьте, что команде назначен обработчик и кнопка связана с командой

Изменение размера окна
Норма

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

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

Поля наезжают друг на друга — проверьте группировку и свойства растягивания

Типичные ошибки
01
Использование модального Вопрос() вместо ПоказатьВопрос() — в управляемом приложении и веб-клиенте это приводит к ошибке выполнения
02
Попытка выполнить запрос к базе в клиентской процедуре — код падает с ошибкой; перенесите запрос в серверную процедуру
03
Форма создана, но не назначена основной — объект продолжает открываться со старой или автоматически сгенерированной формой
04
Изменения внесены в рабочую базу без копии — при ошибке откат затруднён; сначала тестируйте на копии базы

FAQ

Как открыть созданную форму по кнопке из другой формы?

Используйте метод ОткрытьФорму() с указанием полного имени формы, например: ОткрытьФорму("Справочник.Номенклатура.Форма.МояФорма"). Параметры передаются вторым аргументом через структуру.

Почему в управляемой форме нельзя двигать элементы мышью?

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

Можно ли создать окно, не привязанное к объекту конфигурации?

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

Как сделать окно с сообщением без создания формы?

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

Форма не обновляется после изменения в конфигураторе. Что делать?

Сохраните конфигурацию (F7) и выполните обновление конфигурации базы данных. Затем перезапустите сеанс «Предприятия» — открытые окна не подхватывают изменения на лету.

Итог

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

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