В процессе постепенного перехода или доработки конфигураций на базе обычных форм (например, УПП 1.3, КА 1.1, ЗУП 2.5 или ББУ 1.0) разработчики часто сталкиваются с необходимостью внедрения управляемых форм без полной смены режима запуска всей базы. Разберем по шагам, как правильно настроить конфигурацию, как устроен механизм выполнения управляемых форм в обычном приложении и какие тонкости клиент-серверного взаимодействия необходимо учитывать.
Для того чтобы платформа 1С:Предприятие позволяла запускать управляемые формы в сеансе толстого клиента обычного приложения, выполним следующие базовые настройки:
Проанализируем поведение интерфейса при первом обращении к управляемой форме. При первом открытии формы в рамках одного сеанса наблюдается небольшая задержка. Это нормальное поведение платформы: в этот момент происходит компиляция описания формы и ее интерфейсных элементов. После первого открытия скомпилированное представление кэшируется в памяти сеанса, и все последующие открытия той же управляемой формы выполняются мгновенно.
При разработке управляемых форм в режиме обычного приложения важно помнить о строгих границах контекстов исполнения:
ТаблицаЗначений, ДокументОбъект, СправочникОбъект). Все передаваемые параметры должны быть простыми типами (ссылки, числа, строки, структуры) либо передаваться через сериализацию во временное хранилище с помощью методов ПоместитьВоВременноеХранилище и ПолучитьИзВременногоХранилища.Рассмотрим, как организовать обмен данными и открытие форм между двумя разными технологиями интерфейса:
ОткрытьФорму. Например:
ПараметрыФормы = Новый Структура("Ключ", СсылкаНаОбъект);
ОткрытьФорму("Документ.РеализацияТоваровУслуг.Форма.ФормаДокументаУправляемая", ПараметрыФормы, ЭтаФорма);
Оповестить("ОбновлениеДанных", ПараметрОповещения), то это оповещение штатно перехватывается в обычной форме внутри процедуры ОбработкаОповещения(ИмяСобытия, Параметр, Источник), и наоборот.ВнешниеОбработки.Создать() создается объект толстого клиента. Чтобы гарантированно открыть управляемую форму внешней обработки, используем следующий подход:
ИмяОбработки = ВнешниеОбработки.Подключить(ПутьКФайлу);
ОткрытьФорму("ВнешняяОбработка." + ИмяОбработки + ".Форма.ИмяФормы");
Выясним, как избежать типичных ошибок при написании кода в управляемых формах внутри смешанных конфигураций:
&НаСервереБезКонтекста везде, где не требуется изменение реквизитов формы. Это существенно снижает объем передаваемых данных между клиентом и сервером.ОписаниеОповещения), что обеспечивает плавность работы пользовательского интерфейса.