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