При переходе на свежие релизы платформы 1С разработчики часто сталкиваются с неожиданным поведением системы. Чтобы минимизировать риски, многие используют статический анализатор кода проектов для проверки файлов CF и CFE. Однако одной из наиболее серьезных проблем в версии 8.3.27.1859 стала невозможность полноценной работы с формами в расширениях конфигурации. Рассмотрим подробнее, почему это происходит и какие существуют пути решения данной проблемы.
Проанализируем ситуацию: при работе в Конфигураторе внутри расширения для собственных справочников или документов перестают отображаться реквизиты в редакторе формы. Чтобы убедиться, что проблема не вызвана другими факторами, полезно провести анализ состава расширений на наличие ошибок (поможет инструмент архитектурного анализа конфигураций и расширений), который поможет выявить конфликты в метаданных. Основные же симптомы бага платформы выглядят следующим образом:
Объект отображается без значка «плюс».Важно отметить, что в режиме Предприятие всё отображается корректно, а проблема локализована именно в среде разработки.
Разберем природу этого сбоя. Данное поведение не является следствием неправильной настройки прав или повреждения кэша. Это официально зарегистрированная ошибка платформы под номером 60027315. Баг связан с механизмом отрисовки метаданных в ветках 8.3.27 и частично перенесен в 8.3.26. Конфигуратор попросту «теряет» связь между формой и метаданными собственного объекта расширения в визуальном редакторе.
Посмотрим на самый надежный метод решения проблемы. Если производственный процесс требует активной разработки в расширениях, наиболее логичным шагом будет использование предыдущего стабильного релиза. Опытным путем установлено, что в версии 8.3.27.1786 указанный баг отсутствует. Стоит помнить, что корректное добавление реквизитов и элементов формы в расширениях через дизайнер напрямую зависит от стабильности выбранной сборки платформы.
Важный момент: перед откатом проанализируйте, не используют ли ваши типовые конфигурации функционал, критично требующий именно сборку 1859. В большинстве случаев версия 1786 остается полностью совместимой.
Если вам необходимо остаться на релизе 1859, разберем обходной путь через программный код. Поскольку платформа в режиме выполнения видит реквизиты корректно, мы можем добавить нужные поля в процедуре ПриСозданииНаСервере. Для упрощения этой задачи разработчики часто используют специальный модуль для программного изменения форм, который содержит готовые функции для добавления элементов и команд.
Рассмотрим пример программного добавления поля на форму:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// Программное создание поля ввода для реквизита "Наименование"
ИмяРеквизита = "Объект.Наименование";
НовыйЭлемент = Элементы.Добавить("НаименованиеПрограммно", Тип("ПолеФормы"), ЭтаФорма);
НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;
НовыйЭлемент.ПутьКДанным = ИмяРеквизита;
КонецПроцедуры
Этот метод позволяет обойти визуальный баг Конфигуратора, однако он усложняет разработку, так как вы не видите результат до запуска приложения.
Проанализируем еще один технический прием. Вы можете настроить форму во внешнем файле, а затем перенести её в расширение. Если же вам требуется оперативно подправить настройки интерфейса без постоянных перезапусков, можно использовать редактор форм в режиме предприятия, который позволяет менять свойства элементов «на лету» прямо в пользовательском режиме — для этого подойдёт редактор объектов и форм в режиме предприятия.
Резюме: на текущий момент самым эффективным решением остается ожидание исправления в будущих сборках (ориентировочно 8.3.27.19xx) или использование проверенной версии 8.3.27.1786.