|
8.3 УФ.Получить ссылку на созданный элемент справочника | ☑ | ||
---|---|---|---|---|
0
jamesgold
02.02.21
✎
17:44
|
Добрый день, прошу помочь!
Такая задача получить существующую анкету или создать новую и вернуть ссылку Делаю так: &НаКлиенте Процедура ОбработчикКонтактнаяИнформация(Результат, Параметры) Экспорт Если Результат <> неопределено Тогда Закрыть(Результат); КонецЕсли; КонецПроцедуры // ОбработчикКонтактнаяИнформация() &НаСервереБезКонтекста Процедура ЗаполнитьНаСервере(НовыйОбъект, Телефон) НовыйОбъект.МобильныйТелефон = Телефон; КонецПроцедуры &НаКлиенте Функция ВыполнитьРегистрацию(Телефон) Анкета = ОбщегоНазначенияСервер.ПолучитьКонтактнуюИнформациюПоТелефону(Телефон); Если НЕ значениезаполнено(Анкета) Тогда СтруктураПараметров = новый Структура; СтруктураПараметров.Вставить("Телефон", Телефон); Форма = ОткрытьФорму("Справочник.КонтактнаяИнформация.ФормаОбъекта", СтруктураПараметров, ЭтаФорма,,,,новый ОписаниеОповещения("ОбработчикКонтактнаяИнформация", ЭтотОбъект), РежимОткрытияОкнаФормы.БлокироватьОкноВладельца); ДанныеФормы = Форма.Объект; ЗаполнитьНаСервере(ДанныеФормы, Телефон); КопироватьДанныеФормы(ДанныеФормы, Форма.Объект); КонецЕсли; КонецФункции В итоге получается форма нового элемента открывается только когда отработает вся функция ВыполнитьРегистрацию, можно ли получить ссылку на созданную анкету уже в функции ВыполнитьРегистрацию? |
|||
1
Курцвейл
02.02.21
✎
17:47
|
Нельзя. Она еще не существует. Можно для нового объекта установить гуид. И далее его использовать. Хотя с точки зрения архитектуры решение спорное.
|
|||
2
Курцвейл
02.02.21
✎
17:51
|
А еще можно сделать асинхронную обработку события.
Справочник еще не записан. При записи используйте оповещение. И в самом обработчике оповещения делайте вторую часть функции ВыполнитьРегистрацию |
|||
3
jamesgold
02.02.21
✎
18:00
|
(1) А если я в текущем элементе запрошу всю информацию на форме обработки, далее на основании этой информации програмно создам элемент справочника и возьму с него сразу ссылку уже в это функции, так можно?
|
|||
4
Жан Пердежон
02.02.21
✎
18:06
|
всё в (0) переделать и форма тебе не нужна
|
|||
5
jamesgold
02.02.21
✎
18:07
|
(4) Эту информацию я не знаю, ее должен пользователь ввести в тот момент, все равно нужен интерактив.
|
|||
6
Курцвейл
02.02.21
✎
18:07
|
(3) Можно, но ИМХО это не нужное извращение. Лучше за счет асинхронности разделить ВыполнитьРегистрацию на 2 части.
|
|||
7
PCcomCat
02.02.21
✎
18:08
|
(0) В обработчике ОбработчикКонтактнаяИнформация нужно продолжать что либо делать
|
|||
8
jamesgold
02.02.21
✎
18:09
|
(7) Он отрабатывает уже после функции ВыполнитьРегистрацию
|
|||
9
Курцвейл
02.02.21
✎
18:11
|
(8) Если пользователь форму КонтактнаяИнформация не закроет, то ничего не выполниться. И ссылку не получишь. Хотя данные скопируешь.
|
|||
10
PCcomCat
02.02.21
✎
18:11
|
(8) Он отработает после заполнения формы нового элемента, если правильно всё сделать. т.к. на то он и нужен, чтобы работать по вызову после каких-то действий и не раньше
|
|||
11
Жан Пердежон
02.02.21
✎
18:12
|
(5) нужен интерактив - делай всё в обработчике оповещения (в процедуре "ОбработчикКонтактнаяИнформация")
|
|||
12
Курцвейл
02.02.21
✎
18:13
|
Лучше отказаться от обработчика закрытия и использовать свои оповещения. Пользователь может записать элемент и оставить форму открытой. Алгоритм не сработает.
|
|||
13
PCcomCat
02.02.21
✎
18:16
|
(12) можно же на запись оповещение прилепить, тогда пофигу на остальные действия пользователя. Тут-то важна ссылка, а она после записи появится
|
|||
14
Курцвейл
02.02.21
✎
18:21
|
(13) Я об этом и говорю.
|
|||
15
jamesgold
02.02.21
✎
18:29
|
Курцвейл, PCcomCat спасибо за помощь!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |