В мире 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. Откройте 1С:Предприятие в режиме Конфигуратор (для этого при запуске удерживайте Shift или выберите пункт в меню запуска).

  2. В дереве объектов конфигурации найдите раздел ОбъектыФормы. Если раздел отсутствует, значит в вашей конфигурации используются только управляемые формы.

  3. Выберите нужную форму (например, ФормаСписка.ДокументПоступлениеТоваров) и дважды кликните по ней или нажмите F2.

  4. Откроется редактор формы с вкладками Реквизиты, Элементы, Модуль и другими.

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

  1. В дереве объектов выберите сущность (например, Документы → ПоступлениеТоваров).
  2. Кликните правой кнопкой и выберите Создать формуОбычная форма.
  3. Укажите тип формы (Форма объекта, Форма списка и т.д.).
💡

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

Структура редактора обычных форм: разбор интерфейса

Интерфейс редактора обычных форм в 1С:Предприятие 8.3 состоит из нескольких ключевых областей, каждая из которых отвечает за свой аспект настройки:

1. Панель элементов (слева) — содержит список всех визуальных компонентов, которые можно добавить на форму:

  • 📋 Поле ввода — для редактирования реквизитов.
  • 📑 Табличное поле — для отображения списков данных.
  • 🔘 Кнопка — для выполнения действий.
  • 📊 Диаграмма — для визуализации данных (требует подключения графической библиотеки).

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

3. Палитра свойств (справа) — здесь настраиваются параметры выбранного элемента, такие как:

  • Имя — уникальный идентификатор элемента в коде.
  • Заголовок — текст, отображаемый пользователю.
  • Данные — привязка к реквизиту или таблице.
  • Видимость — условие отображения элемента.

4. Вкладки модулей (внизу) — здесь пишется программный код для обработки событий формы:

  • Модуль формы — общие процедуры и функции.
  • Модуль объекта — код, связанный с конкретным элементом (например, кнопкой).
Где хранится шаблон формы физически?

Файлы обычных форм хранятся в каталоге конфигурации в формате .erf (для версий 8.0-8.2) или в бинарном виде внутри файла конфигурации 1Cv8.1CD (начиная с 8.3).

Практическое руководство: создание и настройка обычной формы

Рассмотрим пошаговую инструкцию по созданию простой обычной формы для документа ПоступлениеТоваров:

Шаг 1. Создание формы

  1. В конфигураторе перейдите в раздел Документы → ПоступлениеТоваров.
  2. Кликните правой кнопкой и выберите Создать форму → Обычная форма.
  3. Укажите тип Форма объекта и подтвердите создание.

Шаг 2. Добавление элементов

  1. Перетащите из панели элементов Поле ввода на форму и свяжите его с реквизитом Номер.
  2. Добавьте Поле ввода для реквизита Дата.
  3. Создайте Табличное поле и привяжите его к табличной части Товары.
  4. Добавьте кнопку Провести и напишите для неё обработчик в модуле:
Процедура КнопкаПровестиНажатие(Элемент)

Объект.Провести();

Закрыть();

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

Шаг 3. Настройка модуля формы

Откройте вкладку Модуль и добавьте процедуру для обработки события ПриОткрытии:

Процедура ПриОткрытии()

Если Объект.ЭтоНовый() Тогда

Дата = ТекущаяДата();

КонецЕсли;

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

☑️ Проверка перед сохранением формы

Выполнено: 0 / 4

Шаг 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-библиотеками:

  1. Поместите файл .dll в каталог с конфигурацией.
  2. В модуле формы 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. Установите точку останова в модуле формы (кликните слева от номера строки).
  2. Запустите 1С:Предприятие в режиме отладки (F5).
  3. При достижении точки останова используйте окно Отладчик для пошагового выполнения (F10 — шаг с заходом, F11 — шаг с обходом).

Для вывода отладочной информации используйте:

Сообщить("Значение переменной: " + ЗначениеВСтроку(Переменная));
Можно ли в обычной форме использовать механизм полнотекстового поиска?

Да, но с ограничениями. В обычных формах можно:

  • Использовать ПолнотекстовыйПоиск через запрос:
  • Запрос = Новый Запрос;
    

    Запрос.Текст = "ВЫБРАТЬ * ИЗ Документ.ПоступлениеТоваров ГДЕ ПОЛНЫЙТЕКСТ(Номенклатура, 'ноутбук')";

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

  • Подключить внешние компоненты для расширенного поиска (например, Elasticsearch через HTTP-Сервисы).

Однако визуальные элементы полнотекстового поиска (как в управляемых формах) придётся реализовывать самостоятельно.

Какие альтернативы обычным формам существуют в современных версиях 1С?

В 1С:Предприятие 8.3 и новее рекомендуется использовать:

  • Управляемые формы — для кросс-платформенных решений.
  • HTTP-Сервисы + REST API — для интеграции с веб-приложениями.
  • Мобильная платформа — для разработки под Android/iOS.
  • Low-code конструкторы (например, 1С:LowCode) — для быстрой разработки интерфейсов.

Обычные формы стоит использовать только в случаях, когда альтернативы невозможны по техническим ограничениям.