Здравствуйте! Подскажите, хотя бы куда копать. Имеется поле с типом надпись (гиперссылка), и есть запрос. Запрос выбирает желанные документы. И мне нужно как-то вывести эти документы через запятую, в строку и чтобы при нажатии на ссылку я мог попасть в выбранный документ. На скрине показано поле надписи, куда нужно вывести эти документы. Пробовал через
```1c
    Форма.ЭлементыФормы.Добавить(Тип("ПолеВвода"),
    "Гиперссылка",
    Истина,
    );
```
 но желаемого результата не достиг.
---
вот, нашел

для управляемых форм (не знаю какие у вас)

в процедуру модуля формы ПриСозданииНаСервере()
добавляется код

```1c
    // программное создание элементов формы типа гиперссылок
    // гиперссылки перехода по элементам формы
    Элемент = ЭтаФорма.Элементы.Добавить("ГиперссылкаНаименованиеПерейти", Тип("ДекорацияФормы"), ЭтаФорма.Элементы.<ГруппаДляГиперссылок>);
    Элемент.Гиперссылка = Истина;
    Элемент.Заголовок = <НаименованиеГиперссылки>;
    Элемент.УстановитьДействие("Нажатие", Элемент.Имя+"ОбработкаНавигационнойСсылки");

    добавляемые процедуры для перехода по гиперссылкам

    &НаКлиенте
    Функция ПараметрыПереходаПоГиперссылке(ИмяЭлемента, Гиперссылка = ")

    // переход по реквизитам формы
    Если ИмяЭлемента = "ГиперссылкаНаименованиеПерейти" Тогда
    ПараметрыПереходаПоГиперссылке = Новый Структура;
    ПараметрыПереходаПоГиперссылке.Вставить("ИмяФормы", <ПолноеОбращениеКФормеОткрываемогоОбъекта>);
    ПараметрыПереходаПоГиперссылке.Вставить("ПараметрыФормы",ПараметрыФормы);
    КонецЕсли;

    Возврат ПараметрыПереходаПоГиперссылке;

    КонецФункции

    &НаКлиенте
    Процедура ГиперссылкаНаименованиеПерейтиОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    ПараметрыПереходаПоГиперссылке = ПараметрыПереходаПоГиперссылке(Элемент.Имя);
    ГиперссылкаПерейтиСформироватьПараметрыИВопрос(ПараметрыПереходаПоГиперссылке);
    КонецПроцедуры

    &НаКлиенте
    Процедура ГиперссылкаПерейтиСформироватьПараметрыИВопрос(ПараметрыПереходаПоГиперссылке)

    ОчиститьСообщения();

    Если Не ЗначениеЗаполнено(Объект.Ссылка)
    Или Модифицированность Тогда

    ТекстВопроса = Нстр("ru = 'Данные еще не записаны.
    |Переход к основной информации возможен только после записи элемента.
    |Записать элемент?'");

    ПоказатьВопрос(Новый ОписаниеОповещения("ГиперссылкаПерейтиВопросЗавершение", ЭтотОбъект, ПараметрыПереходаПоГиперссылке), ТекстВопроса, РежимДиалогаВопрос.ДаНет);
    Возврат;

    КонецЕсли;

    ГиперссылкаПерейти(ПараметрыПереходаПоГиперссылке);
    КонецПроцедуры

    &НаКлиенте
    Процедура ГиперссылкаПерейти(ПараметрыПереходаПоГиперссылке)

    Если ПараметрыПереходаПоГиперссылке.Свойство("ИмяФормы") Тогда
    ОткрытьФорму(ПараметрыПереходаПоГиперссылке.ИмяФормы,
    ПараметрыПереходаПоГиперссылке.ПараметрыФормы, , ЭтаФорма.УникальныйИдентификатор, , , ,
    ПараметрыПереходаПоГиперссылке.РежимОткрытияОкнаФормы);
    ИначеЕсли ПараметрыПереходаПоГиперссылке.Свойство("НавигационнаяСсылка") Тогда
    ОбщегоНазначенияКлиент.ОткрытьНавигационнуюСсылку(ПараметрыПереходаПоГиперссылке.НавигационнаяСсылка);
    ИначеЕсли ПараметрыПереходаПоГиперссылке.Свойство("ИмяГруппы") Тогда
    Элементы.ГруппаСтраницы.ТекущаяСтраница = Элементы[ПараметрыПереходаПоГиперссылке.ИмяГруппы];

    Если ПараметрыПереходаПоГиперссылке.Свойство("ИмяАктивногоРеквизита") Тогда
    ЭтаФорма.ТекущийЭлемент = ЭтаФорма.Элементы[ПараметрыПереходаПоГиперссылке.ИмяАктивногоРеквизита];
    КонецЕсли;
    Иначе
    ТекстИсключения = НСтр("ru = 'Не определено действие по гиперссылке.'");
    ВызватьИсключение ТекстИсключения;
    КонецЕсли;

    КонецПроцедуры
```

как обернуть все это в цикл?
думаю, нужно оборачивать в цикл только программное создание элементов на форме
а в процедурах отталкиваться от, скажем порядкового номера переданного элемента гиперрсылки
---
Имхо, надпись на каждую гиперссылку отдельная нужна. А вы в одной хотите, чтобы список открывался?
---
просто документов может быть любое количество). был бы один было бы замечательно а их и 2 и 3 может быть.
---
через гиперссылку нельзя указывать список объектов
можно указать переход на объект, на переход к реквизиту объекта, на форму списка объекта

чисто теоретически можно сделать переход на форму списка обработки, где отражать все ваши документы, а уже с нее переходить в выбранный документ
но это надо рисовать отдельную форму списка, писать код по перезаполнению при переходе

в общем задача решаема, но не напрямую
---
переход на объект а какой вариант тогда подойдёт?
---
дал направление в своем же посте
то же самое советуют и в (6)
---
Их можно в группу в рамочке разместить?
Или открыть обработку / форму со списком обьектов, который передан в нее или выбран здесь же по условию.
---
вот странный запрос у пользователя, там уже есть ТЧ куда выводится список всех этих с/ф на отдельной вкладке а нужен список снизу.
---
как в БП 3?
---
не обращал на это внимание в бп 3 врать не буду) у меня все документы находятся при открытии формы, запрос отрабатывает и все с/ф уже известны. Думал программно создать несколько гиперссылок, в зависимости от количества найденных сф, и чтобы каждая ссылалась на объект. Но не получилось это сделать) вот на скрине я реализовал как происходит выборка и данные заполняются в таблицу значений) она при открытии уже заполнена) а как вывести с/ф ещё ниже у меня ума не хватило
---
ну раз есть ТЗ с данными, пробежаться по ней и наплодить программно гиперссылок труда не составит
а если ТЗ глазу мешает, скрыть ее с формы
---
вот вопрос, как правильно создать программно гиперссылки? я наверно не туда копал. и не получилось.
---
я понял что в цикле надо перебрать все эти данные но как их создать) делал согласно СП но не взлетело)
---
где-то был пример, сейчас поищу
---
вот, нашел

для управляемых форм (не знаю какие у вас)

в процедуру модуля формы ПриСозданииНаСервере()
добавляется код

```1c
    // программное создание элементов формы типа гиперссылок
    // гиперссылки перехода по элементам формы
    Элемент = ЭтаФорма.Элементы.Добавить("ГиперссылкаНаименованиеПерейти", Тип("ДекорацияФормы"), ЭтаФорма.Элементы.<ГруппаДляГиперссылок>);
    Элемент.Гиперссылка = Истина;
    Элемент.Заголовок = <НаименованиеГиперссылки>;
    Элемент.УстановитьДействие("Нажатие", Элемент.Имя+"ОбработкаНавигационнойСсылки");

    добавляемые процедуры для перехода по гиперссылкам

    &НаКлиенте
    Функция ПараметрыПереходаПоГиперссылке(ИмяЭлемента, Гиперссылка = ")

    // переход по реквизитам формы
    Если ИмяЭлемента = "ГиперссылкаНаименованиеПерейти" Тогда
    ПараметрыПереходаПоГиперссылке = Новый Структура;
    ПараметрыПереходаПоГиперссылке.Вставить("ИмяФормы", <ПолноеОбращениеКФормеОткрываемогоОбъекта>);
    ПараметрыПереходаПоГиперссылке.Вставить("ПараметрыФормы",ПараметрыФормы);
    КонецЕсли;

    Возврат ПараметрыПереходаПоГиперссылке;

    КонецФункции

    &НаКлиенте
    Процедура ГиперссылкаНаименованиеПерейтиОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    ПараметрыПереходаПоГиперссылке = ПараметрыПереходаПоГиперссылке(Элемент.Имя);
    ГиперссылкаПерейтиСформироватьПараметрыИВопрос(ПараметрыПереходаПоГиперссылке);
    КонецПроцедуры

    &НаКлиенте
    Процедура ГиперссылкаПерейтиСформироватьПараметрыИВопрос(ПараметрыПереходаПоГиперссылке)

    ОчиститьСообщения();

    Если Не ЗначениеЗаполнено(Объект.Ссылка)
    Или Модифицированность Тогда

    ТекстВопроса = Нстр("ru = 'Данные еще не записаны.
    |Переход к основной информации возможен только после записи элемента.
    |Записать элемент?'");

    ПоказатьВопрос(Новый ОписаниеОповещения("ГиперссылкаПерейтиВопросЗавершение", ЭтотОбъект, ПараметрыПереходаПоГиперссылке), ТекстВопроса, РежимДиалогаВопрос.ДаНет);
    Возврат;

    КонецЕсли;

    ГиперссылкаПерейти(ПараметрыПереходаПоГиперссылке);
    КонецПроцедуры

    &НаКлиенте
    Процедура ГиперссылкаПерейти(ПараметрыПереходаПоГиперссылке)

    Если ПараметрыПереходаПоГиперссылке.Свойство("ИмяФормы") Тогда
    ОткрытьФорму(ПараметрыПереходаПоГиперссылке.ИмяФормы,
    ПараметрыПереходаПоГиперссылке.ПараметрыФормы, , ЭтаФорма.УникальныйИдентификатор, , , ,
    ПараметрыПереходаПоГиперссылке.РежимОткрытияОкнаФормы);
    ИначеЕсли ПараметрыПереходаПоГиперссылке.Свойство("НавигационнаяСсылка") Тогда
    ОбщегоНазначенияКлиент.ОткрытьНавигационнуюСсылку(ПараметрыПереходаПоГиперссылке.НавигационнаяСсылка);
    ИначеЕсли ПараметрыПереходаПоГиперссылке.Свойство("ИмяГруппы") Тогда
    Элементы.ГруппаСтраницы.ТекущаяСтраница = Элементы[ПараметрыПереходаПоГиперссылке.ИмяГруппы];

    Если ПараметрыПереходаПоГиперссылке.Свойство("ИмяАктивногоРеквизита") Тогда
    ЭтаФорма.ТекущийЭлемент = ЭтаФорма.Элементы[ПараметрыПереходаПоГиперссылке.ИмяАктивногоРеквизита];
    КонецЕсли;
    Иначе
    ТекстИсключения = НСтр("ru = 'Не определено действие по гиперссылке.'");
    ВызватьИсключение ТекстИсключения;
    КонецЕсли;

    КонецПроцедуры
```

как обернуть все это в цикл?
думаю, нужно оборачивать в цикл только программное создание элементов на форме
а в процедурах отталкиваться от, скажем порядкового номера переданного элемента гиперрсылки
---
от, скажем порядкового номера переданного большое спасибо) попробую)
---
Элемент.Заголовок = что-то в этом есть) отладчиком смотрю на форму добавляются гиперссылки) правда в режиме предприятия их не видно но думаю тут я сам разберусь) спасибо=)