Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

8.3 УФ.Получить ссылку на созданный элемент справочника

8.3 УФ.Получить ссылку на созданный элемент справочника
Я
   jamesgold
 
02.02.21 - 17:44
Добрый день, прошу помочь!

Такая задача получить существующую анкету или создать новую и вернуть ссылку
Делаю так:
&НаКлиенте
Процедура ОбработчикКонтактнаяИнформация(Результат, Параметры) Экспорт
    Если Результат <> неопределено Тогда
        Закрыть(Результат);
    КонецЕсли;
КонецПроцедуры // ОбработчикКонтактнаяИнформация()

&НаСервереБезКонтекста
Процедура ЗаполнитьНаСервере(НовыйОбъект, Телефон)
    НовыйОбъект.МобильныйТелефон = Телефон;
КонецПроцедуры

&НаКлиенте
Функция ВыполнитьРегистрацию(Телефон)    
    
    Анкета = ОбщегоНазначенияСервер.ПолучитьКонтактнуюИнформациюПоТелефону(Телефон);
    Если НЕ значениезаполнено(Анкета) Тогда
        
        СтруктураПараметров = новый Структура;
        СтруктураПараметров.Вставить("Телефон", Телефон);
        Форма = ОткрытьФорму("Справочник.КонтактнаяИнформация.ФормаОбъекта", СтруктураПараметров, ЭтаФорма,,,,новый ОписаниеОповещения("ОбработчикКонтактнаяИнформация", ЭтотОбъект), РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
        ДанныеФормы = Форма.Объект;
        ЗаполнитьНаСервере(ДанныеФормы, Телефон);
        КопироватьДанныеФормы(ДанныеФормы, Форма.Объект);
        
    КонецЕсли;
КонецФункции

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

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.