Программное создание элементов на форме

1. user2144408 03.05.25 18:40 Сейчас в теме
Всем здравствуйте!

Нужно, чтобы на форме динамически создавались элементы поля надписи с наименованиями групп (элемент Справочника "Группы"), в которые записан ученик, по нажатию должна открываться форма выбранной группы.
Это должно быть на форме элемента справочника "Ученик"
Вот, что у меня получилось сделать:

&НаСервере
Процедура ПриОткрытииНаСервере()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| УченикиВГруппах.Группа КАК Группа
|ИЗ
| РегистрСведений.УченикиВГруппах КАК УченикиВГруппах
|ГДЕ
| УченикиВГруппах.СтатусУченика = &СтатусУченика
| И УченикиВГруппах.Ученик = &Ученик";

Запрос.УстановитьПараметр("СтатусУченика", Перечисления.СтатусУченикаВГруппе.Учится);
Запрос.УстановитьПараметр("Ученик", Объект.Ссылка);

РезультатЗапроса = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Номер = 1;
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
Надпись = ЭтаФорма.Элементы.Добавить("Надпись" + Строка(Номер), Тип("ПолеФормы"), ЭтаФорма.Элементы.ГруппыУченика);
Надпись.Гиперссылка = Истина;
Надпись.ПутьКДанным = "Объект.Ссылка";
Надпись.Заголовок = ВыборкаДетальныеЗаписи.Группа.Наименование;
Номер = Номер + 1;
КонецЦикла;
КонецПроцедуры

Очевидно, при нажатии я возвращаюсь на форму, на которой и был, а не на форму группы
Вот, как это должно выглядеть:
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user2107191 03.05.25 19:07 Сейчас в теме
(1)
Очевидно, при нажатии я возвращаюсь на форму, на которой и был, а не на форму группы
Какой путь к данным указал - то и открывает. Ничего чудесного.
Или ты думал, что система вдруг по заголовку элемента сама догадается, что ей надо открывать?

Следующий!

PS. За запрос в цикле надо бить сразу, пока не вырос.
5. user2144408 03.05.25 19:27 Сейчас в теме
(2) Так он вне цикла, в цикле я только обрабатываю его результат...
9. user2107191 03.05.25 19:51 Сейчас в теме
(5) Вот твой запрос в цикле:
ВыборкаДетальныеЗаписи.Группа.Наименование;
3. miniogn 47 03.05.25 19:11 Сейчас в теме
Предполагаю, что отсутствует событие реакции на нажатие. Примерно так как-то
Элемент.УстановитьДействие("Нажатие", "ДействиеНажатие");

&НаКлиенте
Процедура ДействиеНажатие(ВыбранныйЭлемент)
    если ВыбранныйЭлемент = Элемент["Надпись1"] тогда
        ОткрытьФорму(...);
    КонецЕсли;
КонецПроцедуры
Показать
4. user2144408 03.05.25 19:25 Сейчас в теме
(3) Всё равно не очень понятно, как перейти именно на форму нужного мне элемента
6. miniogn 47 03.05.25 19:39 Сейчас в теме
(4)
При открытии формы существующего объекта необходимо кроме имени формы указать также и на тот объект, форма которого должна быть открыта. Для этого используется параметр формы Ключ и ссылка на интересующий нас объект.
,
ПараметрыФормы = Новый Структура("Ключ", СсылкаНаЭлементСправочника);
ОткрытьФорму("Справочник.Организации.ФормаОбъекта", ПараметрыФормы);

(с) 1С
7. user2107191 03.05.25 19:47 Сейчас в теме
(6) Вообще-то у автора гиперссылка.
10. user2107191 03.05.25 19:51 Сейчас в теме
(4) У тебя нет для этого решительно никаких данных. Тебе нужна ссылка на группу, которую ты хочешь открыть. Например.
Не читай лабухов, которые сами вчера из-за такой же парты вылезли
8. user2107191 03.05.25 19:48 Сейчас в теме
(3) То есть наличие под гиперссылкой кривых данных тебя никак не смутило?
если ВыбранныйЭлемент = Элемент["Надпись1"] тогда
Что ТОГДА??? Для каждой возможной группы предлагаешь в коде написать ЕслиИначе? 100 групп. 200 групп. Потом еще добавим.
Каждый раз будешь писать в коде говнецо?
11. miniogn 47 03.05.25 20:02 Сейчас в теме
(8) Пример вызова обработчика, без деталей, что бы и новичку понятно было направление мыслей
12. user2107191 03.05.25 20:08 Сейчас в теме
(11) Такой гиперссылке обработчик не нужен. Учи матчасть, первоклассник.
13. miniogn 47 04.05.25 09:50 Сейчас в теме
(12) Ну что ж, имя переменной "Надпись" ввело в заблуждение.
Но всё равно способ с нажатием рабочий, если надо будет параметры передать в открываемую форму.
14. user2107191 04.05.25 09:59 Сейчас в теме
(13) Технически - рабочий. Функционально - нет.
Просто представь, что пользователь переименовал группу.
Что будешь делать? Полезешь в код исправлять свои "Если Тогда"?
15. user2107191 04.05.25 16:33 Сейчас в теме
(13) Не, не рабочий
если ВыбранныйЭлемент = Элемент["Надпись1"] тогда
А если Элемента "Элемент1" не существует? Как поведет себя программа?
А если даже существует - то что тебе это даст? Ты разве знаешь, что скрывается под Элементом1? Это же просто порядковый номер вывода элемента на форму в коде автора, не более.
Что вот ты ему подсказываешь? Сам то давно пытался учиться?
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот