В мире 1С:Предприятие формы — это ключевой элемент интерфейса, через который пользователи взаимодействуют с данными. Среди всех инструментов конфигурирования редактор обычных форм занимает особое место: он позволяет создавать классические оконные интерфейсы, которые до сих пор активно используются в устаревших и специализированных решениях. Несмотря на то, что современные версии платформы делают ставку на управляемые формы, понимание работы с обычными формами остаётся критически важным для поддержки legacy-систем, миграции данных и решения специфических задач.
Эта статья раскроет все аспекты работы с редактором обычных форм: от базовых понятий до практических примеров настройки. Мы разберём, когда целесообразно использовать обычные формы вместо управляемых, как избежать типичных ошибок при их редактировании, и какие скрытые возможности платформы 1С 8.3 позволяют расширить функционал обычных форм без перехода на управляемый интерфейс. Материал будет полезен как начинающим разработчикам, так и опытным специалистам, столкнувшимся с необходимостью модернизации устаревших конфигураций.
Что такое обычные формы в 1С и зачем они нужны
Обычные формы в 1С:Предприятие 8 — это классический вариант интерфейса, который был основным до появления управляемых форм в версии 8.2. Они представляют собой оконные элементы с фиксированным набором свойств и поведением, жёстко привязанным к клиентскому приложению. В отличие от управляемых форм, которые исполняются на сервере и адаптируются под разные устройства, обычные формы работают исключительно на стороне клиента.
Основные сценарии использования обычных форм сегодня:
- 🔄 Поддержка устаревших конфигураций (например, 1С:Бухгалтерия 7.7 или ранние версии 8.0-8.1), где переход на управляемые формы невозможен без полной переработки системы.
- 🛠️ Специализированные задачи, где требуется прямой доступ к API операционной системы или железо (например, работа с COM-объектами или оборудованием через
ВнешняяКомпонента). - ⚡ Высокопроизводительные операции, где управляемые формы создают избыточную нагрузку (например, массовая обработка данных с минимальным интерфейсом).
- 📦 Интеграция с внешними системами, где обычные формы позволяют гибко настраивать взаимодействие через
OLEилиActiveX.
Важно понимать, что обычные формы не поддерживают:
- 📱 Адаптивный дизайн для мобильных устройств.
- 🌐 Веб-клиент и тонкий клиент (только толстый клиент или внешнее соединение).
- 🔄 Автоматическое масштабирование элементов при изменении разрешения экрана.
⚠️ Внимание: Начиная с версии 1С:Предприятие 8.3.21, некоторые функции обычных форм могут быть ограничены или удалены. Перед использованием проверьте совместимость в документации платформы.
Отличия обычных форм от управляемых: сравнительная таблица
Чтобы понять, когда стоит использовать обычные формы, а когда лучше перейти на управляемые, рассмотрим их ключевые различия:
| Критерий | Обычные формы | Управляемые формы |
|---|---|---|
| Место исполнения | Только на клиенте (толстый клиент) | На сервере + клиентская часть |
| Поддержка устройств | Только ПК (Windows/Linux) | ПК, веб, мобильные устройства |
| Гибкость дизайна | Фиксированная разметка, ручная настройка | Адаптивная разметка, автоматические макеты |
| Производительность | Выше (нет сетевых задержек) | Ниже (зависит от сервера) |
| Доступ к API ОС | Полный (COM, ActiveX, DLL) | Ограничен (только через сервер) |
Из таблицы видно, что обычные формы выигрывают там, где требуется максимальная производительность или глубокая интеграция с ОС. Однако для кросс-платформенных решений или современных интерфейсов управляемые формы остаются единственным вариантом.
Как открыть редактор обычных форм в 1С 8.3
Чтобы начать работу с обычными формами, сначала нужно их найти и открыть в конфигураторе. Процесс зависит от версии платформы и типа конфигурации:
Откройте 1С:Предприятие в режиме Конфигуратор (для этого при запуске удерживайте
Shiftили выберите пункт в меню запуска).В дереве объектов конфигурации найдите раздел
Объекты→Формы. Если раздел отсутствует, значит в вашей конфигурации используются только управляемые формы.Выберите нужную форму (например,
ФормаСписка.ДокументПоступлениеТоваров) и дважды кликните по ней или нажмитеF2.Откроется редактор формы с вкладками
Реквизиты,Элементы,Модульи другими.
Если в вашей конфигурации нет обычных форм, но они требуются для решения задачи, их можно создать вручную:
- В дереве объектов выберите сущность (например,
Документы → ПоступлениеТоваров). - Кликните правой кнопкой и выберите
Создать форму→Обычная форма. - Укажите тип формы (
Форма объекта,Форма спискаи т.д.).
Если в конфигураторе не отображаются обычные формы, проверьте настройки отображения: перейдите в Сервис → Параметры и убедитесь, что включён показ всех типов форм.
Структура редактора обычных форм: разбор интерфейса
Интерфейс редактора обычных форм в 1С:Предприятие 8.3 состоит из нескольких ключевых областей, каждая из которых отвечает за свой аспект настройки:
1. Панель элементов (слева) — содержит список всех визуальных компонентов, которые можно добавить на форму:
- 📋
Поле ввода— для редактирования реквизитов. - 📑
Табличное поле— для отображения списков данных. - 🔘
Кнопка— для выполнения действий. - 📊
Диаграмма— для визуализации данных (требует подключения графической библиотеки).
2. Дерево формы (в центре) — иерархическая структура всех элементов формы, где можно изменять порядок отображения, группировать элементы в контейнеры (Группа, Страница).
3. Палитра свойств (справа) — здесь настраиваются параметры выбранного элемента, такие как:
Имя— уникальный идентификатор элемента в коде.Заголовок— текст, отображаемый пользователю.Данные— привязка к реквизиту или таблице.Видимость— условие отображения элемента.
4. Вкладки модулей (внизу) — здесь пишется программный код для обработки событий формы:
Модуль формы— общие процедуры и функции.Модуль объекта— код, связанный с конкретным элементом (например, кнопкой).
Где хранится шаблон формы физически?
Файлы обычных форм хранятся в каталоге конфигурации в формате .erf (для версий 8.0-8.2) или в бинарном виде внутри файла конфигурации 1Cv8.1CD (начиная с 8.3).
Практическое руководство: создание и настройка обычной формы
Рассмотрим пошаговую инструкцию по созданию простой обычной формы для документа ПоступлениеТоваров:
Шаг 1. Создание формы
- В конфигураторе перейдите в раздел
Документы → ПоступлениеТоваров. - Кликните правой кнопкой и выберите
Создать форму → Обычная форма. - Укажите тип
Форма объектаи подтвердите создание.
Шаг 2. Добавление элементов
- Перетащите из панели элементов
Поле вводана форму и свяжите его с реквизитомНомер. - Добавьте
Поле вводадля реквизитаДата. - Создайте
Табличное полеи привяжите его к табличной частиТовары. - Добавьте кнопку
Провестии напишите для неё обработчик в модуле:
Процедура КнопкаПровестиНажатие(Элемент)
Объект.Провести();
Закрыть();
КонецПроцедуры
Шаг 3. Настройка модуля формы
Откройте вкладку Модуль и добавьте процедуру для обработки события ПриОткрытии:
Процедура ПриОткрытии()
Если Объект.ЭтоНовый() Тогда
Дата = ТекущаяДата();
КонецЕсли;
КонецПроцедуры
☑️ Проверка перед сохранением формы
Шаг 4. Тестирование
Переключитесь в режим 1С:Предприятие (F5) и откройте созданный документ. Убедитесь, что:
- Поля заполняются корректно.
- Кнопка
Провестиработает. - Нет ошибок при сохранении.
⚠️ Внимание: При работе с обычными формами в 1С 8.3 некоторые методы (например, ПоказатьВопрос()) могут вести себя иначе, чем в управляемых формах. Всегда тестируйте формы в целевой версии платформы.
Типичные ошибки при работе с обычными формами и как их избежать
Даже опытные разработчики сталкиваются с проблемами при настройке обычных форм. Вот наиболее распространённые ошибки и способы их решения:
1. Элементы не отображаются на форме
- Причина: Не указано свойство
Видимостьили элемент помещён в невидимый контейнер. - Решение: Проверьте иерархию в дереве формы и настройки видимости для каждого элемента.
2. Данные не сохраняются
- Причина: Отсутствует привязка поля к реквизиту или не вызван метод
Записать(). - Решение: Убедитесь, что в модуле формы есть вызов
Объект.Записать()перед закрытием.
3. Форма тормозит при открытии
- Причина: В обработчике
ПриОткрытиивыполняются тяжёлые операции (например, выборка больших данных). - Решение: Перенесите длительные операции в фоновый режим или оптимизируйте запросы.
4. Не работают обработчики событий
- Причина: Ошибка в имени процедуры (например, опечатка в
КнопкаПровестиНажатие). - Решение: Проверьте регистр и точное совпадение имён в модуле и свойствах элемента.
5. Проблемы с печатью из формы
- Причина: Неверно указан шаблон печати или отсутствуют права на доступ к принтеру.
- Решение: Используйте метод
Печать(Объект, "", Истина)и проверьте настройки принтера в ОС.
Всегда проверяйте журнал регистрации (Администрирование → Журнал регистрации) при отладке форм — там часто содержатся подробные ошибки, не видно в интерфейсе.
Расширенные возможности: интеграция обычных форм с внешними системами
Одним из ключевых преимуществ обычных форм является возможность глубокой интеграции с внешними системами через COM-объекты, ActiveX и DLL. Рассмотрим практические примеры:
1. Работа с Excel через OLE
Чтобы экспортировать данные из табличного поля в Microsoft Excel, добавьте в модуль формы следующий код:
Процедура ВыгрузитьВExcel(Элемент)
Excel = Новый COMОбъект("Excel.Application");
Книга = Excel.Workbooks.Add();
Лист = Книга.Worksheets(1);
// Заполняем данные из табличной части "Товары"
Для Каждого Строка Из Объект.Товары Цикл
НомерСтроки = Строка.НомерСтроки;
Лист.Cells(НомерСтроки, 1).Value = Строка.Номенклатура;
Лист.Cells(НомерСтроки, 2).Value = Строка.Количество;
КонецЦикла;
Excel.Visible = Истина; // Показать Excel
КонецПроцедуры
2. Подключение внешней компоненты (DLL)
Для работы с DLL-библиотеками:
- Поместите файл
.dllв каталог с конфигурацией. - В модуле формы declare внешнюю функцию:
Процедура ПодключитьDLL()
Попытка
ВнешняяКомпонента = Новый("AddIn.MyLibrary");
Сообщить("DLL подключена успешно!");
Исключение
Сообщить("Ошибка: " + ОписаниеОшибки());
КонецПопытки;
КонецПроцедуры
3. Работа с оборудованием (сканеры, принтеры)
Для взаимодействия со сканерами штрихкодов через ActiveX:
Процедура ИнициализироватьСканер()
Сканер = Новый COMОбъект("Scanner.ActiveX");
Сканер.Initialize();
Сканер.OnScan = Новый ОбработчикСобытия("Сканер_ПолученШтрихкод");
КонецПроцедуры
Процедура Сканер_ПолученШтрихкод(Штрихкод) Экспорт
Сообщить("Просканирован: " + Штрихкод);
Объект.НайтиПоШтрихкоду(Штрихкод);
КонецПроцедуры
⚠️ Внимание: При работе с COM-объектами в 64-битной версии 1С требуется использовать 64-битные библиотеки. Смешивание 32- и 64-битных компонент приведёт к ошибкам.
FAQ: ответы на частые вопросы о обычных формах в 1С
Можно ли конвертировать обычную форму в управляемую автоматически?
Нет, в 1С:Предприятие нет встроенного механизма автоматической конвертации. Однако можно:
- Создать управляемую форму вручную и перенести логику.
- Использовать сторонние обработки (например, "Перенос форм из обычных в управляемые" от партнёров 1С).
- Воспользоваться сервисами миграции, если конфигурация типовая (например, при переходе с 1С:Бухгалтерия 7.7 на 8.3).
Важно: даже после переноса потребуется тестирование и доработка, так как логика работы обычных и управляемых форм различается.
Почему обычные формы не работают в веб-клиенте?
Обычные формы разрабатывались для толстого клиента и используют возможности операционной системы (например, прямые вызовы WinAPI). Веб-клиент и тонкий клиент исполняются в браузере или на сервере, где такие вызовы невозможны по соображениям безопасности. Для веб-доступа необходимо:
- Переписать форму на управляемую.
- Использовать RDP или терминальный доступ к толстому клиенту.
Как отладить код обычной формы?
Для отладки:
- Установите точку останова в модуле формы (кликните слева от номера строки).
- Запустите 1С:Предприятие в режиме отладки (
F5). - При достижении точки останова используйте окно
Отладчикдля пошагового выполнения (F10— шаг с заходом,F11— шаг с обходом).
Для вывода отладочной информации используйте:
Сообщить("Значение переменной: " + ЗначениеВСтроку(Переменная));
Можно ли в обычной форме использовать механизм полнотекстового поиска?
Да, но с ограничениями. В обычных формах можно:
- Использовать
ПолнотекстовыйПоискчерез запрос:
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ * ИЗ Документ.ПоступлениеТоваров ГДЕ ПОЛНЫЙТЕКСТ(Номенклатура, 'ноутбук')";
Результат = Запрос.Выполнить();
HTTP-Сервисы).Однако визуальные элементы полнотекстового поиска (как в управляемых формах) придётся реализовывать самостоятельно.
Какие альтернативы обычным формам существуют в современных версиях 1С?
В 1С:Предприятие 8.3 и новее рекомендуется использовать:
- Управляемые формы — для кросс-платформенных решений.
- HTTP-Сервисы + REST API — для интеграции с веб-приложениями.
- Мобильная платформа — для разработки под Android/iOS.
- Low-code конструкторы (например, 1С:LowCode) — для быстрой разработки интерфейсов.
Обычные формы стоит использовать только в случаях, когда альтернативы невозможны по техническим ограничениям.