Переход с обычных форм (ОФ) на управляемые (УФ) в экосистеме «1С:Предприятие» — это не просто косметическое обновление интерфейса. Это фундаментальный сдвиг в архитектуре разработки, требующий от программиста полной перестройки мышления. Если ваша организация долгое время работала на устаревшей конфигурации, но неизбежно приближается к переходу на современную платформу, подготовку нужно начинать заранее.
В этой статье мы подробно разберем, какие обучающие курсы рекомендует профессиональное сообщество, проанализируем ключевые технические сложности миграции и выработаем пошаговую стратегию плавного перехода.
При выборе учебных материалов важно понимать, что сухая теория без привязки к реальной практике быстро забывается. Проанализируем основные обучающие программы, упомянутые практикующими специалистами:
Многие разработчики сходятся во мнении, что первые блоки (0 и 1) в Базовом и Продвинутом курсах по программированию на этом ресурсе дают одну из лучших практических баз для старта. Также у них есть специализированный курс «Интерфейсы и формы», где детально разбирается проектирование юзабилити управляемого интерфейса и отказ от модальности.
Дмитрий Гончаров — признанный эксперт и экзаменатор фирмы «1С». Его курс дает глубокую академическую базу и детальное понимание того, как платформа работает «под капотом». Однако помните, что подача материала здесь достаточно строгая и глубокая. Некоторым разработчикам она кажется излишне академичной и сложной для быстрого старта.
Если академический стиль Гончарова вам не подходит, отличным выбором станет курс Павла Чистова. Его методика построена на простых жизненных примерах, объяснении клиент-серверного взаимодействия «на пальцах» и быстром вовлечении в практику написания кода.
Давайте подробнее разберем основные технические барьеры, с которыми сталкивается разработчик ОФ при переходе на УФ, и посмотрим на примеры кода, иллюстрирующие эти изменения.
В обычных формах весь код выполнялся непосредственно на компьютере пользователя (клиенте). В управляемых формах данные формы жестко отделены от данных объекта базы данных. Любое обращение к базе требует явного серверного вызова.
Разработчику необходимо строго контролировать контекст выполнения процедур с помощью директив компиляции. Рассмотрим по шагам разницу между контекстным и бесконтекстным вызовами сервера.
При контекстном вызове (&НаСервере) платформа передает на сервер все данные формы (реквизиты, табличные части), что создает серьезную нагрузку на сеть. При бесконтекстном вызове (&НаСервереБезКонтекста) форма на сервер не передается, передаются только явно указанные параметры.
Проанализируем пример неэффективного и эффективного кода:
// Пример НЕЭФФЕКТИВНОГО контекстного вызова сервера
&НаСервере
Процедура ПолучитьДанныеКонтекстно()
// Платформа гоняет весь контекст формы туда-обратно
РеквизитФормыНоменклатура = Справочники.Номенклатура.НайтиПоКоду("00000001");
КонецПроцедуры
// Пример ЭФФЕКТИВНОГО бесконтекстного вызова
&НаКлиенте
Процедура ВыполнитьПоиск(Команда)
КодПоиска = "00000001";
НайденнаяСсылка = НайтиНоменклатуруНаСервере(КодПоиска);
КонецПроцедуры
&НаСервереБезКонтекста
Функция НайтиНоменклатуруНаСервере(Код)
Возврат Справочники.Номенклатура.НайтиПоКоду(Код);
КонецФункции
Правило: Всегда отдавайте предпочтение директиве &НаСервереБезКонтекста, если для выполнения алгоритма вам не требуются напрямую все реквизиты текущей формы.
В управляемом приложении (особенно при работе через веб-клиент в браузере) использование модальных окон блокирует поток выполнения и запрещено на уровне стандартов разработки. Такие функции, как Вопрос(), Предупреждение() и метод ОткрытьФормуМодально(), должны быть заменены на асинхронные аналоги.
Разберем ситуацию на примере вывода диалогового окна пользователю. Посмотрим, как этот механизм выглядел в обычных формах, и как его нужно переписать в управляемых формах:
// Так писали в Обычных Формах (устаревший модальный подход):
Режим = РежимДиалогаВопрос.ДаНет;
Ответ = Вопрос("Продолжить выполнение операции?", Режим, 0);
Если Ответ = КодВозвратаДиалога.Да Тогда
ВыполнитьОперацию();
КонецЕсли;
А теперь перепишем этот алгоритм под стандарты управляемого приложения с использованием объекта ОписаниеОповещения:
// Современный асинхронный подход в Управляемых Формах:
&НаКлиенте
Процедура НачатьВыполнениеОперации(Команда)
// Создаем описание процедуры, которая будет вызвана после выбора пользователя
Оповещение = Новый ОписаниеОповещения("ПослеВопросаО завершении", ЭтотОбъект);
ПоказатьВопрос(Оповещение, "Продолжить выполнение операции?", РежимДиалогаВопрос.ДаНет);
КонецПроцедуры
&НаКлиенте
Процедура ПослеВопросаОЗавершении(Результат, ДополнительныеПараметры) Экспорт
Если Результат = КодВозвратаДиалога.Да Тогда
ВыполнитьОперациюНаСервере();
КонецЕсли;
КонецПроцедуры
Этот подход требует создания дополнительной экспортной процедуры-обработчика, но обеспечивает стабильную работу конфигурации в любых веб-клиентах и на мобильных платформах.
В обычных формах программист занимался «пиксельной версткой»: двигал элементы управления по сетке, выравнивал кнопки и поля ввода вручную. В управляемых формах применяется декларативный подход.
Мы лишь задаем логическую структуру интерфейса (помещаем элементы в группы, настраиваем их ориентацию: горизонтальная или вертикальная), а платформа сама отрисовывает форму под разрешение экрана пользователя. К этому поначалу сложно привыкнуть, но в будущем это сильно экономит время при адаптации интерфейса под разные мониторы.
Кроме того, отчеты в управляемом приложении строятся исключительно на базе Системы компоновки данных (СКД). Старый «Построитель отчетов» больше не поддерживается. Разработчику необходимо досконально изучить механизмы работы с СКД, включая программный вывод отчетов и работу со схемами компоновки.
Если ваша база находится на обычных формах с 2015 года и сильно доработана, мгновенный переход на УФ парализует работу компании. Фирма «1С» предусмотрела возможность мягкой, поэтапной миграции. Рассмотрим по шагам этот гибридный сценарий:
В настройках конфигурации установите свойство «Использовать управляемые формы в обычном приложении» и «Использовать обычные формы в управляемом приложении».
Пользователи начинают работать в современном интерфейсе (например, «Такси»). При этом система способна открывать как старые обычные формы документов, так и новые управляемые.
Разработчик переводит конфигурацию по частям. Например, в первую очередь переписываются справочники, затем несложные документы, и в последнюю очередь — тяжелые учетные механизмы и автоматизированные рабочие места (АРМ).
При переходе крайне рекомендуется внедрить в конфигурацию БСП. Это избавит вас от необходимости вручную писать механизмы отправки почты, прикрепления файлов, печати документов и администрирования пользователей — все эти подсистемы на УФ уже готовы к использованию.
Резюмируя, отметим: переход с обычных форм на управляемые — это сложный, но необходимый шаг для развития любой корпоративной системы. Начните с базовых курсов, практикуйте написание кода с жестким разделением на клиент и сервер, и внедряйте новые механизмы в вашу рабочую базу постепенно. Только так переход пройдет безболезненно для бизнес-процессов вашей организации.