Имя: Пароль:
1C
1С v8
Передача ссылки на объект в объект родитель
0 fantomrik
 
24.01.15
09:34
Добрый день!
Из одно полностью нетипового документа делаю возможность создавать другой типовой документ - "Событие". По кнопке, из первого документа, программно создается док.Событие и открывается его форма. Какие есть варианты вернуть в первый объект ссылку на созданное Событие, если событие будет записано?

Событий мб создано много, поэтому эти ссылки буду хранить в ТЧ первого документа.

Сам вижу как варианты:
1.Типовой механизм "Документ основание"
2.Модально открывать форму события при при создании из первого объекта и возвращать ссылку при закрытии формы. Но модальное окно не очень удобно.

В типовом коде УПП нашел функцию платформенную ОповеститьОЗаписиНовогоОбъекта (Ссылка), но не совсем понимаю для чего она используется и как.

Возможны еще какие то варианты?

Спасибо!
1 Rie
 
24.01.15
09:39
(0) Что именно непонятно с ОповеститьОЗаписиНовогоОбъекта()?
2 ДенисЧ
 
24.01.15
09:41
продам сп ))))
Там написано....
3 fantomrik
 
24.01.15
09:43
(1) НУ не понял я толком из описания, в моем случа можно использовать эту процедуру как то?
4 Rie
 
24.01.15
09:48
(3) Какая именно буква в описании непонятна?
Ну и наконец (или на конец), можно при помощи Оповестить() оповестить кого угодно о чём угодно.
5 fantomrik
 
24.01.15
09:54
(4) Оповестить() а можно немного конкретнее для моего примера для "особо одаренных" ?)
6 Rie
 
24.01.15
09:55
(5) Немного конкретнее - сказано в документации. Если что непонятно (после прочтения документации) - о том и спроси.
Мне вот непонятно, зачем в (0) сначала создавать объект, а затем открывать его форму. Почему бы сразу не открыть эту форму и не мучиться?
7 fantomrik
 
24.01.15
11:04
(6) Не понял вас...
&НаКлиенте
Процедура СоздатьНовоеСобытие(Команда)
    ДокументСобытие = Документы.Событие.СоздатьДокумент();
    ДокументСобытие.ТипСобытия = Перечисления.ВходящееИсходящееСобытие.Исходящее;        
    ДокументСобытие.ПолучитьФорму().Открыть();
КонецПроцедуры

Как я открою форму не создав объект?
8 Chameleon1980
 
24.01.15
11:10
типа открытьформунового
9 Rie
 
24.01.15
11:16
(7) Например,
ОткрытьФорму("Справочник.Товары.ФормаЭлемента",,ЭтаФорма);
10 fantomrik
 
24.01.15
11:52
Вобщем сделал скорее интуитивно чем разобрался в принципах работы функций Оповестить и ей подобных... Если кто то знает где о них можно почитать подробнее - поделитесь ссылкой пожалуйста!

Решил так задачу.

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

В форме события дописал:

Процедура ПриЗакрытии()
    
    Если мОбновлятьВладельца Тогда
        ОповеститьОЗаписиНовогоОбъекта(Ссылка);
    КонецЕсли;
    //+ fantomrik 2015-01-23 task#37403
    Если ЭтотОбъект.ДополнительныеСвойства.Свойство("ВернутьСсылкуПриЗаписи") Тогда
        Оповестить("ПриЗакрытии", Ссылка , ЭтотОбъект.ДополнительныеСвойства.Свойство("СсылкаНаТрафик"));    
    КонецЕсли;
    //- fantomrik 2015-01-23 task#37403
    
КонецПроцедуры

ну и снова в форме первого нетипового документа встречаю событие:

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