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

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

Как сделать форму в 1С: практическое руководство

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

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

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

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

Какие виды форм существуют в 1С

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

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

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

Создание формы в конфигураторе: пошаговый процесс

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

Нажмите кнопку добавления (зелёный плюс) или выберите в контекстном меню «Добавить». Запустится конструктор формы: укажите тип формы (форма элемента, форма списка и т.д.), имя формы и при необходимости отметьте «Назначить формой по умолчанию». После нажатия «Готово» откроется редактор формы.

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

В редакторе формы вы видите три ключевые области: дерево элементов формы (слева вверху), список реквизитов и команд (справа) и предварительный вид формы. Элементы можно перетаскивать мышью, группировать в папки и страницы, настраивать свойства через палитру свойств (правый клик → «Свойства»).

Работа с реквизитами и элементами формы

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

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

Команды формы добавляются на закладке «Команды» → «Команды формы». Для каждой команды создаётся обработчик в модуле формы, а саму команду нужно перетащить на форму — тогда появится кнопка. Так реализуются кнопки «Заполнить», «Рассчитать», «Печать» и любые другие действия.

Программная логика: модуль формы и обработчики событий

Модуль формы открывается кнопкой с изображением лупы или через меню «Форма → Модуль». Здесь пишется код на встроенном языке 1С. Основные события формы: «ПриСозданииНаСервере» (инициализация при открытии), «ПриОткрытии» (на клиенте), «ПередЗаписью» и «ПослеЗаписи» (для форм объектов).

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

// Пример: заполнение реквизита при открытии

&НаСервере

Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)

Если Параметры.Ключ.Пустая() Тогда

Объект.Ответственный = ПользователиИнформационнойБазы.ТекущийПользователь().Имя;

КонецЕсли;

КонецПроцедуры

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

Форма с запросом: динамический список и произвольные данные

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

Для произвольной формы (обработки) добавьте реквизит типа «ТаблицаЗначений» с колонками и заполните его программно на сервере:

&НаСервере

Процедура ЗаполнитьДанныеНаСервере()

Запрос = Новый Запрос;

Запрос.Текст = "ВЫБРАТЬ Ссылка, Наименование ИЗ Справочник.Номенклатура";

РезультатТаблица.Загрузить(Запрос.Выполнить().Выгрузить());

КонецПроцедуры

Таблицу значений перетащите на форму — пользователь увидит данные в виде таблицы. Учтите ограничение: таблица значений на форме не редактирует данные базы напрямую, для сохранения изменений потребуется отдельный серверный код.

Маршрут решения

Как выбрать подход

Нужна простая карточка объекта без особой логикиИспользуйте автоматически генерируемую форму по умолчанию
Нужно изменить состав полей или добавить командыСоздайте собственную форму объекта в конфигураторе
Нужны данные по произвольному запросу без привязки к объектуСоздайте обработку с реквизитом «ТаблицаЗначений» и заполнением запросом
Нужно доработать типовую форму без снятия с поддержкиИспользуйте расширение конфигурации

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

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

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

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

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

Форма открывается без сообщений об ошибках

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

Ошибка компиляции модуля или «Поле не найдено»

Отображение данных
Норма

Все реквизиты объекта видны и заполнены

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

Пустые поля при заполненных данных объекта

Запись и закрытие
Норма

Изменения сохраняются и видны при повторном открытии

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

Данные теряются или возникает ошибка записи

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

Кнопки выполняют действия и не вызывают исключений

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

Кнопка есть, но обработчик не назначен

Наиболее частая ошибка новичков — обращение к базе данных из клиентского контекста. Платформа выдаст ошибку вида «Процедура или функция с указанным именем не определена» или «Вызов сервера». Лечится переносом кода в серверную процедуру и вызовом её с клиента.

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

Ещё одна ловушка — производительность. Циклические серверные вызовы (например, обход таблицы с обращением к серверу на каждой строке) делают форму мучительно медленной. Собирайте данные одним запросом на сервере и передавайте на клиент целиком.

Частые вопросы

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

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

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

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

Почему форма не открывается и выдаёт ошибку модуля?

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

Как передать параметры в форму при открытии?

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

Что делать, если форма работает медленно?

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

Итог

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

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