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