Имя: Пароль:
1C
1C 7.7
v7: Можно ли из обработки открыть процедуру/функцию формы справочника/документа?
0 Mister-X07
 
20.10.12
20:56
Из обработки записывается элемент справочника или новый документ. Так интересует можно ли вызвать процедуру "ПриЗаписи()" не изменяя модуль формы справочника/документа, чтоб в обработке не проверять условия записи документа или справочника.

ЗЫ. Слыхал что метод "ОбработкаОжидания(<ИмяПроцедуры>,<ИнтервалВызова>)" имеет недокументированную возможность вызываться для форм объектов, а не только глобального модуля. Может кто-то такое делал, хотелось бы увидеть рабочий код.
1 zak555
 
20.10.12
21:21
1. ПриЗаписи - интерактивная процедура
2. > чтоб в обработке не проверять условия записи документа или справочника

так не проверяй -- кто мешает ?
2 Chai Nic
 
20.10.12
21:25
formex вроде бы это умеет
3 Mister-X07
 
20.10.12
21:25
(1) значить ты не в курсе такого
4 Mister-X07
 
20.10.12
21:26
кто в курсе на счет "ОбработкаОжидания(<ИмяПроцедуры>,<ИнтервалВызова>)"
5 zak555
 
20.10.12
21:26
(3) не в курсе чего ?
6 Mister-X07
 
20.10.12
21:36
(5) - (4)
7 Mister-X07
 
20.10.12
21:45
(1) как раз нужно проверять
8 Mister-X07
 
20.10.12
21:45
))
9 Азазель
 
21.10.12
01:07
(0) вызвать можно с помощью formex.dll

Только вот статус возврата в случае чего, из этой процедуры будет бесполезен и не предотвратит запись документа.
Поэтому такой вызов может не иметь смысла.

(4) Обработка ожидания реализиует периодический запуск процедур с заданным интервалом. Недокументированная его опция позволяет вызывать процедуры, текст которых написан в самой обработке.
10 Mister-X07
 
21.10.12
01:20
(9) "позволяет вызывать процедуры, текст которых написан в самой обработке."
////
не понял, поподробнее можно? вот есть параметр <ИмяПроцедуры>, какой текст имеется ввиду?
11 vladimir-boy
 
21.10.12
01:32
(0) Я думаю да, если сейчас вспомню, то напишу как.
12 vladimir-boy
 
21.10.12
02:06
Для справочников не знаю как, но для обработок у меня работает - по аналогии можно сделать и для справочников, а для 2 обработок вот 2 Варианта:

1) Ты используешь реквизиты(переменные диалога)и методы Формы, которую вызываешь из обработки.
2) Ты вызываешь форму, а она использует реквизиты(переменные диалога)и методы Формы, которая её вызвала.
.. сейчас распишу в коде..
13 vladimir-boy
 
21.10.12
06:09
(0)(11)(12)Вообщем закинул тестовую базу с реально работающим живым примером сюда: http://rusfolder.com/33219728
или сюда: http://depositfiles.com/files/b4524ltop
Пароль на архив: vladimir-boy
На работу с предопределенными методами не проверял, но что мешает передать параметр и там как душа пожелает!
14 Chai Nic
 
21.10.12
07:01
В formex.dll есть методы объекта Сервис

ВыполнитьПроцедуру / CallAsProcedure
ВыполнитьФункцию / CallAsFunction
ПолучитьПеременнуюКонтекста / GetContextVar
УстановитьПеременнуюКонтекста / SetContextVar
15 zak555
 
21.10.12
12:06
(7) функция проверки скопировать не проще в обработку ?
16 ЧеловекДуши
 
21.10.12
12:23
(13)А пароль там для чего?
17 ЧеловекДуши
 
21.10.12
12:26
(0)Нет, это фантастика, о что ты хочешь, что бы нечего лишнего не писать, а все работало само :)
...
Процедура "ПриЗаписи" отрабатывает только из диалога. А следовательно функция "СтатусВозврата(0);", даже если ты и вызовешь с помощью формекса, тебе вообще не как не поможет.
18 orefkov
 
21.10.12
13:44
TurboBL еще гляньте.
19 Гинзбург
 
21.10.12
14:40
ОткрфтьФорму("Документ.СчетФактура",конт);
конт.Форма.ОбработкаОжидания("Печать",1);
20 Гинзбург
 
21.10.12
15:03

Перем Конт;
Процедура Закрыть()
   Форма.ОбработкаОжидания("",0);
   Конт.Форма.ОбработкаОжидания("",0);
   Конт.Форма.Закрыть(0);
КонецПроцедуры    // Закрыть
//*******************************************
Процедура Сформировать()
   Док=СоздатьОбъект("Документ.ЗаказНаОтгрузку");
   Док.ВыбратьДокументы(НачГода(ТекущаяДата()),КонГода(ТекущаяДата()));
   Док.ПолучитьДокумент();
   ОткрытьФорму(Док.ТекущийДокумент(),Конт);
   Конт.Форма.ОбработкаОжидания("Печать",1);
   Форма.ОбработкаОжидания("Закрыть",2);
КонецПроцедуры
21 Mister-X07
 
22.10.12
13:01
(20) здесь

Форма.ОбработкаОжидания("Закрыть",2);

видимо тоже

Конт.Форма.ОбработкаОжидания("Закрыть",2);

или не?
22 Mister-X07
 
22.10.12
13:02
(13) спс
23 Mister-X07
 
22.10.12
13:03
+(21) или это относится к текущей форме, а не отрываемой?
24 Mister-X07
 
22.10.12
13:11
(20) спс