![]() |
![]() |
![]() |
|
Программно открытая форма документа в цикле - как закрыть её сразу | ☑ | ||
---|---|---|---|---|
0
NastyFrog
25.03.04
✎
15:18
|
Профи, подскажите, почему, если один док открывать 1)- он закрывается сразу, а если в цикле перебирать 2)- то все документы норовят открыться и вешаются.
1)ОткрытьФорму(Док, Конт); ... Конт.Форма.Закрыть(); 2) Пока Док.ПолучитьДокумент()=1 Цикл ОткрытьФорму(Док, Конт); ... Конт.Форма.Закрыть(); КонецЦикла; |
|||
1
Рупор абсурда
25.03.04
✎
15:20
|
Настя, а скажи пожалуйста, зачем ты так делаешь?
|
|||
2
NastyFrog
25.03.04
✎
15:25
|
В некоторых формах не сами реквизиты - а механизмы их получения в зависимости от действий на форме, опять же некоторые функции - а-ля пересчитать что-нить. Пользователю либо все доки вручную перебирать, либо обработать всё программно.
|
|||
3
Рупор абсурда
25.03.04
✎
15:28
|
(2) Зачем открывать форму? Что происходит при её открытии?
|
|||
4
327
25.03.04
✎
15:30
|
ОткрытьМодально.....
Но когда перед мордой юзера хлопнет формой сотня доков .... юзер придет бить морду программисту .... |
|||
5
Рупор абсурда
25.03.04
✎
15:33
|
(4) Нечто не умное сказал ...
Мож тебе отдохнуть надо? |
|||
6
gr13
25.03.04
✎
15:34
|
(4) а как можно модально открыть несколько доков?
|
|||
7
NastyFrog
25.03.04
✎
15:36
|
(4)Юзер доков не увидит, мне их обрабатывать. Сейчас попробую модально.
(3) Например галочку в форме поставить, или до процы какой-нить достучаться. |
|||
8
NastyFrog
25.03.04
✎
15:38
|
Можно конечно ПриОткрытии() кривить - но тогда конфой туда сюда надо егозить - не всегда возможно.
|
|||
9
Рупор абсурда
25.03.04
✎
15:40
|
(7) Галочка на форме - реквизит дока? Как "стучишься" к процедуре?
Колись, девочка, я честно хочу помочь ... И могу! |
|||
10
NastyFrog
25.03.04
✎
15:42
|
(4) Модально оно и есть модально. Интересно, а закрытьмодально бывает?
|
|||
11
NastyFrog
25.03.04
✎
15:46
|
К процедуре через СтрокуДействий стучусь. А как надо?
При установке галочки выполняется какой-нить алгоритм. Соответственно - галочку ставим, Форма.обновить() |
|||
12
Дмитрий
25.03.04
✎
15:50
|
(0) Хоть и неясно зачем это все, но смею предположить, что задержку надо делать после Конт.Форма.Закрыть().
Помню еще в 7.5. на тормозном компе пытался программно записать документ и сразу открыть его форму. Так он сволочь не успевал записываться. Пришлось пустой цикл впендюривать - помогло... |
|||
13
Рупор абсурда
25.03.04
✎
15:53
|
(11) Что ж там за алгоритм такой? Что ж там за процедура такой?
Почему их не переписать в той форме, в которой ты цикл свой крутишь? |
|||
14
NastyFrog
25.03.04
✎
16:04
|
(13)Алгоритм лазает по всяким глФункциям, глПроцедурам и в своем модуле взаимовызовы. Переписывать всё в обработку?
(12)А в цикле не успевается с открытой формой всё сделать - следующую открывает? Задержку секудную организовывать? |
|||
15
Рупор абсурда
25.03.04
✎
16:09
|
(14) Проблемы твои от лени ... :))
Кстати, просто прокрутить цикл для задержки тебе не подойдёт ... Придётся с извращениями делать задержку ... |
|||
16
NastyFrog
25.03.04
✎
16:16
|
(15)А чьи не от неё? 8)
|
|||
17
Рупор абсурда
25.03.04
✎
16:21
|
(16) Мой совет: Перепиши, будет и правильней, и надёжней ...
|
|||
18
NastyFrog
25.03.04
✎
16:26
|
(17) Спасибо за совет. К сожалению не смогу ему последовать. Буду организовывать "задержку с извращениями".
|
|||
19
Рупор абсурда
25.03.04
✎
16:29
|
(18) Я и прогнал про "задержку с извращениями" ...
Достаточно будет цикла ... |
|||
20
NastyFrog
25.03.04
✎
16:36
|
(18)Надо организовать задержку цикла с извращениями?
Будем стараться. Цикла может и достаточно, но так нехочется от извращений отказываться. 8) |
|||
21
Рупор абсурда
25.03.04
✎
16:37
|
(20) А говорила, что лентяйка ... :))
|
|||
22
NastyFrog
25.03.04
✎
16:47
|
Не помогает ни-фига - все доки норовит открыть - с циклами, задержками. Увы мне, увы. Может всё-таки знает кто.
|
|||
23
NastyFrog
25.03.04
✎
16:49
|
(21) Кто говорила? Ты говорила? (см. 15)
|
|||
24
Рупор абсурда
25.03.04
✎
16:56
|
(22) Эх, блин, точно нужна задержка с извратом ...
Хоть и нехорошо несколько раз менять мнение, но ... :)) (23) Ты ж согласилась :)) |
|||
25
NastyFrog
25.03.04
✎
17:03
|
(24)Ты сказала,я согласилась.
Каких видов извращений надо придерживаться? Просто минутку подождать не помогает. Всё равно все доки открываются. С задержкой. Дай листинг самого абсурдного извращения. Увести в другую процу? Не помогло. |
|||
26
Рупор абсурда
25.03.04
✎
17:09
|
(25) Я - мужчина! Ты второй раз ошиблась ...
А "Увести в другую процу" это как? Штатными средствами можно только ч/з Форма.ОбработкаОжидания() получить такую задержку ... |
|||
27
Дмитрий
25.03.04
✎
17:23
|
Тут еще надо подумать, где именно эту задержку впихнуть.
Я бы попробовал в двух местах: после ОткрытьФорму и после Конт.Форма.Закрыть. ЗЫ. Последний раз на тему задержек так долго общался лет 7 назад ) |
|||
28
NastyFrog
25.03.04
✎
17:25
|
(26) Ну и что, что ты - мужчина. Сказала, значит сказала.
А в другую процу увести - в смысле позвать её из основной, а ней(другой) чё-нить потворить. Всё равно сначала все доки открывает. А чем ОбработкаОжидания круче какого-нибудь цикла, кот. минуту крутится? |
|||
29
NastyFrog
25.03.04
✎
17:26
|
(27) После ОткрытьФорму надо попробовать, после закрыть точно не помогает.
|
|||
30
Рупор абсурда
25.03.04
✎
17:27
|
(27) После ОткрытьФорму() смысла нет ... Пока ПриОткрытии() в ней не выполнится продолжаться ничего не будет ...
Зависит от того, что в ней написано, конечно ... Мож там свои какие-то обработки ожидания ... ЗЫ: А я 15 лет назад :)) |
|||
31
Дмитрий
25.03.04
✎
17:34
|
Есть хороший способ посмотреть, поможет ли тут задержка - прокрутить пару циклов построчно в отладчике. Если все будет нормально открываться и закрываться - дело точно в ней
|
|||
32
NastyFrog
25.03.04
✎
17:45
|
Даже в доке ПриОткрытии() Закрыть() срабатывает после открытия всех доков
|
|||
33
Дмитрий
25.03.04
✎
17:58
|
Нда, думаю за это время можно было уже ручками все доки подправить )) Надо идти другим путем значит
|
|||
34
NastyFrog
25.03.04
✎
18:12
|
Всем спасибо за старания.
|
|||
35
Рупор абсурда
25.03.04
✎
18:12
|
(28) Упс ... Что-то сразу прощёлкал я этот твой пост ...
Пока идёт цикл он не дает другим процессам возможности работать ... Развести их реально можно только ч/з обработку ожидания ... |
|||
36
NastyFrog
25.03.04
✎
18:40
|
(35) Спасибо, завтра поковыряюсь с ожиданием. Или действительно придется всё в обработку переносить - это точно варикозка на анус.
|
|||
37
Рупор абсурда
25.03.04
✎
19:03
|
(36) >>варикозка на анус.
Грубая ты какая ... Но я почему то именно таких и люблю :)) |
|||
38
Дмитрий
26.03.04
✎
09:50
|
Странно, но я вечером вчера эту фигню покрутил, так вроде все открывалось и закрывалось.
Док=СоздатьОбъект("Документ.Приходная"); Док.ВыбратьДокументы('01.01.2004','31.01.2004'); Пока Док.ПолучитьДокумент()=1 Цикл Конт=0; ОткрытьФорму(Док.ТекущийДокумент(),Конт); Сообщить("Открыт "+ТекстДок(Конт.ТекущийДокумент())); Конт.Форма.Закрыть(); Сообщить("ЗАКРЫТ "+ТекстДок(Конт.ТекущийДокумент())); КонецЦикла; |
|||
39
NastyFrog
26.03.04
✎
11:19
|
(38)Не работает, в том смысле, что сначала все доки открывает, потом все по очереди закрывает. Если док-тов не много - всё нормально, иначе 1С вешается из-за обилия открытых форм. Зато появилась идея по периодам доки выбирать -тогда сработает.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |