Имя: Пароль:
1C
1С v8
Открытие формы документа с возвратом ссылки при закрытии
0 Bodrug
 
16.07.19
15:42
Всем привет!
Управляемое приложение. Суть проблемы в следующем:
Есть 2 документа: Документ1, Документ2. У Документа1 есть реквизит типа Документ2.
В процедуре ПриЗаписи() на форме Документа1 происходит открытие формы нового Документа2. Далее пользователь записывает/записывает и закрывает Документ2, и в этот момент (имея уже ссылку на записанный Документ2) нужно заполнить реквизит Документ1.Документ2. Подскажите, плиз, как быть.
1 hhhh
 
16.07.19
15:47
(0) перед записью надо делать
2 Bodrug
 
16.07.19
15:48
(1) Да, опечатался, я делаю это ПередЗаписью()
3 Bodrug
 
16.07.19
15:48
&НаКлиенте
Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
    Если НетДокумента2() Тогда
        ФормаДок2 = ПолучитьФорму("Документ.Документ2.ФормаОбъекта",,ЭтаФорма);
        ДанныеФормы = ФормаДок2.Объект;
        ЗаполнитьДокумент2НаСервере(ДанныеФормы);
        КопироватьДанныеФормы(ДанныеФормы, ФормаДок2.Объект);
        ФормаДок2.Открыть();
        //Вот тут как-то надо остановить выполнение кода, пока пользователь не сделает что-то с ФормаДок2
        Если ЗначениеЗаполнено(ФормаДок2.Объект.Ссылка) Тогда
            Объект.Документ2 = ФормаДок2.Объект.Ссылка;
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры
4 Bodrug
 
16.07.19
15:51
Пробовал прописать на месте комментария ПодключитьОбработчикОжидания("ОбработкаВыбора", 1), но программа вылетает с ошибкой, т.к. в имени подключаемой процедуры нельзя указать процедуру с параметрами. А В ОбработкеВыбора как раз есть параметры.
5 Fragster
 
гуру
16.07.19
15:54
Тут есть проблемы с двойной записью, но в любом случае можно открывать форму нового документа 2 в режиме выбора и передавать её владельцем соответствующий элемент управления с формы документа 1. Тогда все будет работать с минимумом кода.
6 Bodrug
 
16.07.19
16:12
(5) это решает 50% проблемы. Как быть, когда пользователь нажмет "Провести и закрыть"?
7 lodger
 
16.07.19
16:24
(6) Процедура ПередЗаписью(Отказ, ПараметрыЗаписи)
    Если НетДокумента2() Тогда
Отказ = истина
конецесли
конецпроцедуры
8 Bodrug
 
16.07.19
16:28
(7) Вариант не идеальный, но рабочий. Нет ли какого-то способа, чтоб заполнялся Документ1.Документ2 и записывался и закрывался документ?
9 ptiz
 
16.07.19
17:13
(8) Например, через "Оповестить" и обработку оповещения.
10 lodger
 
16.07.19
17:42
ОткрытьФорму (OpenForm)
Синтаксис:
ОткрытьФорму(<ИмяФормы>, <Параметры>, <Владелец>, <Уникальность>, <Окно>, <НавигационнаяСсылка>, <ОписаниеОповещенияОЗакрытии>, <РежимОткрытияОкна>)

ОписаниеОповещенияОЗакрытии - сюда пишем экспортную процедуру.
Независимо от того, куда вы едете — это в гору и против ветра!