Как обновить интерфейс конфигурации, написанной на платформе 8.2, до управляемых форм 8.3?

Программист 1С v8.3 (Управляемые формы)
← На главную

Начнем с рассмотрения ключевого вопроса, который часто возникает у разработчиков и владельцев информационных систем на платформе 1С:Предприятие 8.2: возможно ли и как именно обновить интерфейс конфигурации, изначально разработанной на обычных формах 8.2, до современных управляемых форм платформы 8.3? Мы проанализируем сложности, возможные пути и необходимые ресурсы для такого перехода, опираясь на опыт специалистов и официальные рекомендации.

Почему возникает необходимость в обновлении интерфейса?

Прежде чем углубляться в технические детали, давайте выясним, каковы основные мотивы для такого масштабного перехода. Как отмечали участники обсуждения (сообщение 32), старый интерфейс на обычных формах может выглядеть устаревшим и быть неудобным для доработки нового функционала.

  1. Современный пользовательский опыт: Управляемые формы предлагают более гибкий, адаптивный и интуитивно понятный интерфейс, который соответствует современным стандартам веб-приложений. Это повышает удовлетворенность пользователей и упрощает их работу с системой.

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

  3. Интеграция с БСП: Часто возникает необходимость в переносе или использовании функционала из последних версий Библиотеки стандартных подсистем (БСП), которая полностью ориентирована на управляемые формы. Без перехода на управляемые формы это становится невозможным или крайне сложным, так как БСП предоставляет базовые механизмы, без которых современная конфигурация будет неполноценной.

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

Автоматизированного инструмента для перехода нет

Самый важный вывод, к которому мы приходим, анализируя мнения экспертов и официальную документацию (сообщение 2), заключается в том, что автоматизированного инструмента, способного "превратить" обычные формы в управляемые формы одним нажатием кнопки, не существует. Это не просто обновление версии платформы, а фундаментальная переработка архитектуры пользовательского интерфейса. Как выразились участники форума, это требует "переписать чуть меньше, чем всё" (сообщение 3), а то и "чуть больше чем всё" (сообщение 4), подчеркивая масштабность задачи.

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

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

Ручной перенос — единственно возможный путь

Итак, если автоматизированный инструмент отсутствует, то единственным реальным путем является ручной перенос и переработка. Это объемный и трудоемкий процесс, который требует высокой квалификации специалистов и глубокого понимания архитектуры 1С:Предприятия 8.3 (сообщение 31). Рассмотрим ключевые аспекты, которые придется перерабатывать.

  1. Рефакторинг кода: Код, написанный для обычных форм, часто содержит прямые обращения к элементам формы (например, ЭлементыФормы.ПолеВвода1.Доступность), что недопустимо в управляемых формах. Мы сталкиваемся с необходимостью переписывать значительные части кода, отвечающие за работу с интерфейсом. Важно вынести всю бизнес-логику на сервер, оставляя на клиенте только минимальный код для интерактивного взаимодействия с пользователем, обработки событий формы и вызова серверных процедур.

    Например, если в обычной форме мы могли напрямую управлять доступностью элемента:

    
    // В модуле обычной формы
    Процедура ПриИзмененииПоля1()
        Если ЭлементыФормы.Поле1.Значение = "НекийСтатус" Тогда
            ЭлементыФормы.Поле2.Доступность = Ложь;
            Сообщить("Поле 2 заблокировано в связи со статусом.");
        Иначе
            ЭлементыФормы.Поле2.Доступность = Истина;
        КонецЕсли;
    КонецПроцедуры
    

    В управляемой форме аналогичная логика потребует четкого разделения на клиентский и серверный контекст:

    
    // В модуле управляемой формы
    // Клиентский контекст: обрабатываем событие, вызываем сервер
    &НаКлиенте
    Процедура Поле1ПриИзменении(Элемент)
        ПроверитьДоступностьПоля2НаСервере();
    КонецПроцедуры
    
    // Серверный контекст: выполняем бизнес-логику и меняем данные формы
    &НаСервере
    Процедура ПроверитьДоступностьПоля2НаСервере()
        // Предположим, Поле2ПриИзменении - это реквизит формы,
        // который управляет доступностью Поля2 на клиенте.
        Если Объект.Поле1 = "НекийСтатус" Тогда
            // Меняем серверный реквизит формы
            ЭтаФорма.Поле2ПриИзменении = Ложь;
        Иначе
            ЭтаФорма.Поле2ПриИзменении = Истина;
        КонецЕсли;
        // Сообщения пользователю также формируются на клиенте, но могут быть вызваны с сервера.
        // Например, можно вернуть текст сообщения с сервера, чтобы клиент его отобразил.
    КонецПроцедуры
    
    // В свойствах элемента Поле2 на форме:
    // Свойство "Доступность" устанавливается в выражение: Поле2ПриИзменении
    

    Мы видим, что прямой доступ к элементам формы через ЭлементыФормы исчезает. Вместо этого, доступность и другие свойства элементов в управляемых формах чаще всего привязываются к реквизитам формы, которые изменяются на сервере. После изменения реквизита на сервере, система автоматически перерисовывает интерфейс на клиенте в соответствии с новыми значениями.

  2. Изменение архитектуры модулей: В управляемых формах используется четкое разделение на клиентский, серверный и серверный вызов модулей (например, с директивами &НаКлиенте, &НаСервере, &НаСервереБезКонтекста). Это требует глубокого пересмотра и реструктуризации всего существующего кода. Нам предстоит определить, какие процедуры и функции должны выполняться на клиенте (например, для интерактивного взаимодействия, отображения сообщений), а какие — на сервере (для работы с данными, выполнения бизнес-логики, сложных вычислений). Это разделение обеспечивает эффективность работы в различных типах клиентов и снижает нагрузку на сеть.

  3. Переработка форм: Каждая обычная форма должна быть пересоздана как управляемая форма. Это включает не только визуальное построение с использованием нового конструктора форм, но и настройку поведения элементов, событий и команд. Мы будем работать с новыми элементами управления, механизмами привязки данных и макетами. При этом часто можно оптимизировать интерфейс, делая его более эргономичным, современным и соответствующим актуальным гайдлайнам 1С.

  4. Оптимизация производительности: При переходе на управляемые формы критически важно учитывать особенности работы в тонком и веб-клиенте. Необходимо тщательно оптимизировать запросы к данным, избегая избыточных серверных вызовов, которые могут значительно замедлить работу системы. Мы будем активно использовать механизмы кэширования, пакетные запросы, отложенные вызовы и другие методы для повышения отзывчивости интерфейса и общей производительности приложения. Каждый серверный вызов — это сетевой трафик и задержка, поэтому их количество нужно минимизировать.

  5. Работа с данными: Хотя структура данных конфигурации (справочники, документы, регистры и т.д.) обычно сохраняется, работа с ними через управляемые формы может потребовать адаптации запросов и методов работы с объектами. Например, если в обычных формах мы могли напрямую обращаться к реквизитам объекта через форму и моментально их изменять, то в управляемых формах часто приходится получать объект с сервера, изменять его на сервере и записывать обратно в базу данных. Это требует более явного управления данными и их состоянием между клиентом и сервером.

  6. Внедрение Библиотеки стандартных подсистем (БСП): Если конфигурация изначально не основана на БСП (как в случае автора, сообщение 25), то при переходе на управляемые формы может потребоваться частичное или полное внедрение подсистем БСП. БСП предоставляет типовой функционал, такой как работа с пользователями, правами доступа, настройками, версионированием объектов, контактной информацией и т.д. Внедрение БСП значительно увеличивает объем работ, но также улучшает стандартизацию, облегчает дальнейшую поддержку и развитие конфигурации, а также обеспечивает ее совместимость с экосистемой 1С.

Режим совместимости: временное решение, не панацея

Платформа 8.3 предлагает режим совместимости (например, 8.2.16), который позволяет запускать конфигурации, разработанные для предыдущих версий платформы (сообщение 6). Это полезное временное решение, так как оно дает возможность использовать некоторые преимущества платформы 8.3 — улучшенную производительность, стабильность, поддержку новых СУБД — без немедленного полного перехода на управляемые формы. Однако, важно понимать, что режим совместимости:

  1. Не решает проблему устаревшего интерфейса: Вы будете работать со старыми обычными формами, они не превратятся в управляемые автоматически. Пользовательский интерфейс останется прежним, без преимуществ УФ.

  2. Ограничивает функционал 8.3: Вы не сможете в полной мере использовать все новые возможности платформы 8.3 и управляемых форм, такие как полноценная работа тонкого/веб-клиента с оптимизированной логикой, новые механизмы защиты и производительности.

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

Опыт с типовыми конфигурациями: не простой "обновление"

Возможно, у кого-то возникнет вопрос: а как же типовые конфигурации? Ведь "Бухгалтерия предприятия" перешла с версии 2.0 (обычные формы) на 3.0 (управляемые формы) (сообщение 22). Действительно, такие прецеденты есть, и они являются успешными примерами масштабной миграции. Однако, как справедливо отмечают участники обсуждения, это был процесс, который требовал значительных ресурсов и фактически представлял собой создание новой редакции с нуля с переносом данных, а не простое обновление (сообщение 24). Это было "перевнедрение", а не обычное обновление конфигурации. Для нетиповых конфигураций, написанных сторонними разработчиками, такой "автоматизированной" возможности обновления через типовой механизм нет. Мы не можем ожидать, что наша уникальная конфигурация получит такое же "магическое" обновление, как типовые решения от 1С, в которые были вложены сотни тысяч человеко-часов.

Какие ресурсы потребуются?

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

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

  2. Деньги: Высококвалифицированные специалисты, способные выполнить такой объем работы, стоят дорого. Участники форума метафорически говорят об "охулиарде денег" (сообщение 5), что подчеркивает серьезность финансовых вложений.

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

  4. Квалифицированные специалисты: Нужен разработчик с глубоким пониманием архитектуры 1С:Предприятия 8.3, принципов построения управляемых форм, знанием паттернов проектирования, умением рефакторить код и опытом миграции. Как сказано в сообщении 31: "Нужен специалист, далеко не начинающий... Который ручками и головушкой все это перенесет!"

Заключение: стоит ли игра свеч?

Перевод конфигурации с обычных форм 8.2 на управляемые формы 8.3 — это не просто техническая задача, а серьезный архитектурный проект, который практически равнозначен созданию новой конфигурации "с нуля" в части интерфейса и клиент-серверного взаимодействия. Он требует значительных вложений времени, средств и интеллектуальных ресурсов. Прежде чем приступать к таким работам, важно тщательно оценить "Зачем?" (сообщение 27) и взвесить все "за" и "против". Если цель оправдывает средства, и вы готовы к масштабным изменениям, то результат — современная, производительная, удобная и легко расширяемая система, соответствующая текущим стандартам 1С — безусловно, того стоит.

← На главную