Имя: Пароль:
1C
1С v8
Форма выбора - форма конкретного документа
,
0 moonlight
 
27.09.17
19:47
Добрый день!

Надо, чтобы в обработке в поле ТЗ - ссылка на документ можно было открыть форму соответствующего документа, а при закрытии формы, форма  обработки понимала что форма документа закрылась и выполнялись соответствующие действия.

Я хотел воспользоваться установкой свойства КнопкаВыбора, а в свойстве ФормаВыбора указать форму документа. При закрытии формы документы, должно срабатывать событие ОбработкаВыбора(). Но в режиме Предприятие, при нажатии на кнопку выбора открывается форма нового документа, а не указанного в поле. Можно ли это как то побороть, чтобы открывалась форма указанного в поле документа? Может еще есть какие варианты решения моей задачи?

Спасибо!
1 PuhUfa
 
27.09.17
20:04
ПараметрыОткрытия     = Новый Структура("Ключ",СсылкаНаДокумент);
ОписаниеЗакрытия     = Новый ОписаниеОповещения("ОбработчикОповещенияОЗакрытии",ЭтаФорма);
ОткрытьФорму("Документ.ТвойДокумет.Форма.ФормаДокумента",ПараметрыОткрытия,ЭтаФорма,,,,ОписаниеЗакрытия,);
2 PuhUfa
 
27.09.17
20:07
&НаСервере
Процедура ОбработчикОповещенияОЗакрытии(РезультатЗакрытия,ДополнительныеПараметры)
    
    //выполнить действия после закрытия формы документа;
    
КонецПроцедуры
3 moonlight
 
27.09.17
20:15
(1)(2)

Написал следующее:


Процедура ЗаявкиЗаявкаОткрытие(Элемент, СтандартнаяОбработка)
    П=Новый Структура("Ключ",ЭлементыФормы.Заявки.ТекущиеДанные.ЗаявкаСсылка);
    ОписаниеЗакрытия     = Новый ОписаниеОповещения("ОбработчикОповещенияОЗакрытии",ЭтаФорма);
    ОткрытьФорму("Документ.ЗаявкаНаРасходованиеСредств.Форма.ФормаДокумента",П,ЭтаФорма,,,,ОписаниеЗакрытия);
    СтандартнаяОбработка=Ложь;
КонецПроцедуры

процедура ОбработчикОповещенияОЗакрытии(РезультатЗакрытия,ДополнительныеПараметры) Экспорт
    Сообщить("ОК");

КонецПроцедуры    

открывается форма существующего документа, но при закрытии обработчик в обработке не вызывается! что не так?
4 PuhUfa
 
27.09.17
20:26
В документе:

&НаКлиенте
Процедура ПриЗакрытии()
    ОповеститьОВыборе(РезультатЗакрытия);
КонецПроцедуры

РезультатЗакрытия - то что прилетит в обработчик, можно передавать структуру
5 moonlight
 
27.09.17
20:35
Спасибо! А вариантов, чтобы не править код вызываемого документа нет?
6 PuhUfa
 
27.09.17
20:42
(5) ОткрытьФормуМодально(<ИмяФормы>, <Параметры>, <Владелец>, <НавигационнаяСсылка>)

Но есть мнение, что за модальные окна нужно отрубать руки -))
7 moonlight
 
27.09.17
20:43
(4) В документе прописал

Процедура ПриЗакрытии()
    ОповеститьОВыборе(Истина);
КонецПроцедуры

Все равно процедура в обработке не вызывается!
8 moonlight
 
27.09.17
20:49
(4) кстати конфа 1С 8.2 УТП
9 moonlight
 
27.09.17
21:03
Если написать так:

Процедура ПриЗакрытии()
    Оповестить();
КонецПроцедуры

то вызывается встроенный обработчик события. ОбработкаОповещения(). И не фак что если активны какие то еще формы у которых есть реализовано событие ОбработкаОповещения() они не будут вызываться. Странно, но наличие параметра ОписаниеОповещения глобального метода ОткрытьФорму() и передача ссылки на форму, из которой вызывается форма документа, достаточно наверно было бы для того, чтобы при закрытии формы документа ей было понятно где и что вызвать! А так я так и не смог заставить, чтобы вызывалось пользовательское событие ф форме обработки.
10 moonlight
 
27.09.17
21:21
Справка...

Используется только в управляемом приложении!! )))

а у меня обычное.
11 moonlight
 
27.09.17
21:32
(4) в моем случае этот вариант подходит, а ОписаниеЗакрытия     = Новый ОписаниеОповещения("ОбработчикОповещенияОЗакрытии",ЭтаФорма); - лишнее
Ошибка? Это не ошибка, это системная функция.