Имя: Пароль:
1C
1C 7.7
v7: ОткрытьФорму() Как проверить закрытие формы.
, ,
0 planod
 
11.06.13
05:22
Всем привет. Автоматизирую формирование отчета. Создал обработку, которая из текстового документа берет контрагента и формирует по нему отчет. Отчет открываю с помощью ОткрытьФорму("отчет.Взаиморасчеты", Параметры). В параметрах передаю дату начала и дату конца формирования отчета и собственного самого контрагента.
Так вот, если у меня в текстовом файле записан один контрагент, то все работает замечательно, а если несколько, то формируется отчет только по первому контрагенту. Как в мою обработку передать сигнал о том, что по первому контрагенту отчет закончился формироваться и можно продолжать цикл по формированию дальше? В Синтаксис-Помощнике есть значение "КонтекстФормы", но как-то я не понял как его использовать.
Заранее спасибо.
1 Wobland
 
11.06.13
05:42
а закрытие формы тут зачем?
2 ЧеловекДуши
 
11.06.13
06:13
(0) Контекст открытой формы = ТипЗначения(Парам) = 100
Если форма закрыта, то там уже не 100 :)
3 planod
 
11.06.13
06:14
(1) я передал в отчет информацию о первом контрагенте, по которому надо сформировать отчет. ОТчет сформировался, форма закрылась, и я начинаю передавать информацию о втором контрагенте...и так далее.
Или иначе можно реализовать такую передачу?
4 ЧеловекДуши
 
11.06.13
06:17
"КонтекстФормы",

СпсПарам = СоздатьОбъект("СписокЗначений");
ОткрытьФорму("МояФорма",СпсПарам);

//В форме При открытии

//Получить переданный список значений.
Парам = Форма.параметр;

//Вуаля, далее работаем с переданным списком значением.
//Если отменить открытие формы, то можно по завершению Команды "ОткрытьФорму"
//Обработать свой же "Список значений"
5 Sserj
 
11.06.13
06:19
ОткрытьФормуМодально, пока не сформируется и не закроется будет ждать
6 ЧеловекДуши
 
11.06.13
06:19
+(3) Если при открытии вставить код:

СтатусСообщения(0)
//То при завершении функции При открытии, форма не откроется и код продолжит выполняться с места "ОткрытьФорму"
7 planod
 
11.06.13
06:19
(4) спасибо. Но если мне нужно два раза вызвать ОткрытьФорму("МояФорма",СпсПарам) с разными параметрами, то как быть?
8 ЧеловекДуши
 
11.06.13
06:19
(5) Модальные окна ЗЛО
9 ЧеловекДуши
 
11.06.13
06:20
(7) Передать разные параметры :)
Можно в цикле
10 Sserj
 
11.06.13
06:20
(8) Ну тогда открвай несколько разных форм этой твоей обработки
11 planod
 
11.06.13
06:22
(8) почему зло?
12 ЧеловекДуши
 
11.06.13
06:23
(11) Если у 1С есть Вежливый выход или еще какой механизм выхода по средством 1С. (через обработку ожидания)
То Модальное окно стопорит этот механизм, пока не закроется пользователем.
+ Модальное окно не расширяется, а остается таким же маленьким, как организовал программист :)
13 planod
 
11.06.13
06:24
(9) в цикле я стараюсь передать, только отрабатывает первая итерация цикла.
(11) но ведь можно же программно организовать Вежливый выход...
14 planod
 
11.06.13
06:25
+(13) сорри, не к 11 посту, а к 12.
15 ЧеловекДуши
 
11.06.13
06:26
(13) Модальное окно блокирует ОбработкуОжидания
16 planod
 
11.06.13
06:26
(5) Вариант с модальным окном работает так как мне надо...спасибо за совет.
17 ЧеловекДуши
 
11.06.13
06:27
(16) Можно и без модального :)
Но тебе видней
18 Sserj
 
11.06.13
06:27
(12) Ну вообщем можно либо открывать несколько форм с разными параметрами этой твоей обработки.
Либо ждать завершения:
ОткрытьФорму(ТвояОбработка, Параметры)

Пока Не(Параметры = КакойТоФлагКоторыйПоставитсяВОбработке) Цикл
//тут можно чтобы не грузить sleep из ВК использовать
КонецЦикл;

Но я таки за модальное окно, пусть оно вообще не открывается СтатусВозврата(0) в при открытии, всеравно же тебе надо последовательно всех клиентов обработать. А если можно одновременно то всетаки несколько открытий формы лучше будет.
19 planod
 
11.06.13
06:28
(15) Я просто в Форме отчета в конце после формирования добавил Форма.Закрыть(). Это логически правильный подход?
20 Wobland
 
11.06.13
06:28
семёрка не умеет отчёты без формы делать? фу..
21 Sserj
 
11.06.13
06:29
(19) Еще при открытии СтатусВозврата(0) поставь, тогда форма показываться вообще не будет.
22 planod
 
11.06.13
06:32
(17) и (21) спасибо за подсказки. Решение вопроса появилось, о с ним появилось еще несколько вопросов))) буду разбираться.
23 ЧеловекДуши
 
11.06.13
07:13
(20) Может, но через расшифровку :)
24 Ковычки
 
11.06.13
07:32
ОткрытьФормуМодально
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший