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