В процессе разработки и сопровождения конфигураций на платформе 1С:Предприятие 8.3 программисты часто сталкиваются с неожиданным поведением визуального редактора. Одна из наиболее неприятных ситуаций — когда при открытии формы документа или справочника, созданного непосредственно в расширении, дерево реквизитов оказывается абсолютно пустым. При этом в режиме «1С:Предприятие» все работает штатно, данные отображаются, а пользователи не замечают проблем. Рассмотрим подробнее, почему это происходит и как вернуть привычную рабочую среду в Конфигуратор.
Проанализируем ситуацию. Если вы столкнулись с тем, что у собственного объекта расширения в левой верхней части окна редактора форм отсутствуют реквизиты (пустая ветка Объект), скорее всего, вы столкнулись с официально признанной ошибкой платформы под номером 60027315.
Эта проблема носит визуальный характер и специфична именно для стандартного Конфигуратора. Суть бага заключается в некорректном взаимодействии механизмов отрисовки метаданных расширения с визуальным редактором управляемых форм. Важно понимать, что физически реквизиты никуда не исчезли — они присутствуют в файле расширения и корректно интерпретируются сервером и клиентом в режиме выполнения. Ошибка «ломает» только инструмент разработки.
Разберем по шагам, какие именно условия приводят к возникновению бага:
Документ или Справочник) был создан именно в расширении, а не заимствован из основной конфигурации.Для эффективного решения задачи нам необходимо точно знать, на каких релизах проблема проявляется, а на каких она уже устранена. Посмотрим на статистику из официальных источников и баг-трекера (bugboard):
Проблемные релизы:
Исправленные релизы:
Единственным гарантированным способом устранения проблемы является переход на релизы, где разработчики 1С внесли соответствующие правки в код платформы:
Поскольку проблема заложена в самом ядре executable-файлов Конфигуратора, наиболее правильным путем будет обновление. Проанализируем алгоритм действий при обновлении:
8.3.27.1936).Если по каким-то причинам (например, из-за жестких корпоративных стандартов или требований совместимости) вы не можете обновить платформу прямо сейчас, рассмотрим альтернативный вариант. Среда разработки 1C:EDT построена на базе Eclipse и использует принципиально иные механизмы работы с метаданными и визуализации интерфейсов.
Выясним преимущества этого метода:
Если вам нужно внести мелкие правки здесь и сейчас, не меняя платформу и не устанавливая EDT, попробуем решить задачу «вслепую». Хотя дерево реквизитов справа (в окне состава данных) пустое, мы все еще можем управлять составом элементов формы.
Рассмотрим пошагово тактику «ручного» добавления элементов:
Поле формы).ПутьКДанным.Объект.ИмяВашегоРеквизита.Проанализируем программный метод создания элементов:
Если визуальный редактор совсем не поддается, можно создавать элементы управления динамически. Это полностью исключает зависимость от багов отрисовки Конфигуратора. Воспользуемся процедурой ПриСозданииНаСервере в модуле формы расширения:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// Динамическое создание поля, если визуальный редактор подводит
НовыйЭлемент = Элементы.Добавить("МоеПолеРеквизита", Тип("ПолеФормы"), ЭтаФорма);
НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;
НовыйЭлемент.ПутьКДанным = "Объект.ИмяРеквизитаИзРасширения";
КонецПроцедуры
Работа на нестабильных релизах платформы (таких как 8.3.27.1859) может сопровождаться и другими трудностями. Разберем их, чтобы вы были готовы:
dump).Подведем итог: если вы обнаружили, что в расширении пропали реквизиты формы, не паникуйте — ваши данные в сохранности. Это лишь временные трудности визуализации. Оптимальный путь — переход на исправленный релиз 8.3.27.1936 или 8.3.26.1215. В качестве временной меры используйте ручное прописывание ПутьКДанным или среду EDT.