|
Передача данных с сервера на клиент | ☑ | ||
---|---|---|---|---|
0
Lika_350
29.10.21
✎
11:56
|
Добрый день
Ситуация такая - необходимо добавить ссылку на лида в карточку покупателя. При нажатии на ссылку должна открыться карточка лида (ФормаЭлемента) &НаСервере Процедура Получение ссылки() Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | СвязиКонтрагентЛид.Лид.Ссылка КАК ЛидСсылка |ИЗ | РегистрСведений.СвязиКонтрагентЛид КАК СвязиКонтрагентЛид |ГДЕ | СвязиКонтрагентЛид.Контрагент = &Контрагент"; Запрос.УстановитьПараметр("Контрагент", Объект.Ссылка); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписиЛиды = РезультатЗапроса.Выбрать(); Пока ВыборкаДетальныеЗаписиЛиды.Следующий() Цикл Элемент = ЭтаФорма.Элементы.Добавить(ВыборкаДетальныеЗаписиЛиды.ЛидСсылка,Тип("ДекорацияФормы")); Элемент.Гиперссылка =Истина; Элемент.Заголовок = ВыборкаДетальныеЗаписиЛиды.ЛидСсылка; Элемент.УстановитьДействие("Нажатие", "ПереходПоСсылке"); КонецЦикла; КонецПроцедуры; &НаКлиенте Процедура ПереходПоСсылке() ОткрытьФорму("Справочники.Лиды.Форма.ФормаЭлемента"); КонецПроцедуры Как правильно это сделать - не знаю. Просьба тапками не кидаться, я только-только учусь |
|||
1
mikecool
29.10.21
✎
12:04
|
ничего не понял
|
|||
2
Asmody
29.10.21
✎
12:08
|
(0) логика примерно такая:
в обработчике нажатия на ссылку: 1. Вызвать функцию на сервере, которая вернет нужную ссылку 2. Открыть форму полученной ссылки создание самих ссылок надо делать где-нибудь ПриСозданииНаСервере или ПриЧтенииНаСервере |
|||
3
Kassern
29.10.21
✎
12:08
|
(0) если мы говорим в общем случае, то вам нужна функция, а не процедура. На клиенте вызываете функцию, к примеру Лид=ПолучитьЛидПоКонтрагентуНаСервере(Контрагент) А дальше уже суйте куда надо эту ссылку. Получается вы с клиента запросили данные с сервера и вернули результат на клиент
|
|||
4
fisher
29.10.21
✎
12:37
|
(0) Ну, если минимальными усилиями относительно сабжевого кода, то попробуй типа такого (сам не тестил):
|
|||
5
fisher
29.10.21
✎
12:40
|
Но изначально я бы добавил табличку в реквизиты формы для хранения списка лидов. А на форме прямо эту табличку и отображал если лидов несколько или одну гипперсылку показывал, если лид один. Тогда и динамически генерить элементы формы не надо и хранение данных проще и нагляднее.
|
|||
6
fisher
29.10.21
✎
12:43
|
А не, фигню написал. Ты же список лидов на сервере получаешь. Тогда так как я написал не получится.
|
|||
7
fisher
29.10.21
✎
12:44
|
Нужно соответствие на клиента вытягивать.
|
|||
8
Lika_350
29.10.21
✎
13:14
|
(4) Вылезает ошибка по строчке ПоказатьЗначение(, СоответствиеЛидовЭлементамФормы[ТекущийЭлемент]);
Получение элемента по индексу для значения не определено(( |
|||
9
Lika_350
29.10.21
✎
13:24
|
(7)
А как правильно вытянуть то? |
|||
10
fisher
29.10.21
✎
14:03
|
(9) Лучше создай в реквизитах формы табличку "Лиды" с колонкой "Лид". Тогда можно попробовать так сделать:
Вообще я стараюсь избегать фокусов с такой вот "арифметикой на именах" и использовать более явные связи, если это возможно. Здесь это для упрощения решения. Попробуй сначала хоть так. |
|||
11
fisher
29.10.21
✎
14:03
|
А ПолучениеСсылки() ты откуда вызываешь? При создании формы на сервере?
|
|||
12
Lika_350
29.10.21
✎
14:05
|
(11)
Да, изначально код вообще там был, потом создала отдельную процедуру |
|||
13
Lika_350
29.10.21
✎
14:06
|
(10) Мне по заданию нужно добавлять реквизиты программно, не изменяя реквизиты формы, вот и мучаюсь
|
|||
14
Kassern
29.10.21
✎
14:21
|
почитайте, может, что-то поможет https://wiki.programstore.ru/1s-upravlyaemye-formy-programmnoe-sozdanie-rekvizitov-komand-elementov/
|
|||
15
youalex
29.10.21
✎
14:45
|
(13) если реквизиты нельзя по условию, можно формировать имя элемента по значению ссылки, вроде:
ИмяЭлемента = "Лид_" + СтрЗаменить(XMLСтрока(ВыборкаИзЗапроса.Ссылка), "-", "_"); Элемент = Элементы.Добавить(ИмяЭлемента, Тип("ДекорацияФормы"), Элементы.Группа1Ссылки); //Элементы.Группа1Ссылки - лучше их все же в отдельной группе создавать а в обработке, указанной в УстановитьДействие() - обратное преобразование: ГУИД = СтрЗаменить(Сред(Элемент.Имя, 5), "_", "-"); //первые 4 это "Лид_" СсылкаЛида = XMLЗначение(Тип("ДокументСсылка.Документ1"), ГУИД); ПоказатьЗначение(, СсылкаЛида); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |