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