Вход | Регистрация


1С:Предприятие ::

Метки:

Программно открытая форма документа в цикле - как закрыть её сразу

Я
   NastyFrog
 
25.03.04 - 15:18
Профи, подскажите, почему, если один док открывать 1)- он закрывается сразу, а если в цикле перебирать 2)- то все документы норовят открыться и вешаются.
1)ОткрытьФорму(Док, Конт);
...
Конт.Форма.Закрыть();
2)
Пока Док.ПолучитьДокумент()=1 Цикл 
ОткрытьФорму(Док, Конт);
...
Конт.Форма.Закрыть();
КонецЦикла;
 
 
   Рупор абсурда
 
1 - 25.03.04 - 15:20
Настя, а скажи пожалуйста, зачем ты так делаешь?
   NastyFrog
 
2 - 25.03.04 - 15:25
В некоторых формах не сами реквизиты - а механизмы их получения в зависимости от действий на форме, опять же некоторые функции - а-ля пересчитать что-нить. Пользователю либо все доки вручную перебирать, либо обработать всё программно.
   Рупор абсурда
 
3 - 25.03.04 - 15:28
(2) Зачем открывать форму? Что происходит при её открытии?
   327
4 - 25.03.04 - 15:30
ОткрытьМодально.....

Но когда перед мордой юзера хлопнет формой сотня доков .... юзер придет бить морду программисту ....
   Рупор абсурда
 
5 - 25.03.04 - 15:33
(4) Нечто не умное сказал ...
Мож тебе отдохнуть надо?
   gr13
 
6 - 25.03.04 - 15:34
(4) а как можно модально открыть несколько доков?
   NastyFrog
 
7 - 25.03.04 - 15:36
(4)Юзер доков не увидит, мне их обрабатывать. Сейчас попробую модально.
(3) Например галочку в форме поставить, или до процы какой-нить достучаться.
   NastyFrog
 
8 - 25.03.04 - 15:38
Можно конечно ПриОткрытии() кривить - но тогда конфой туда сюда надо егозить - не всегда возможно.
   Рупор абсурда
 
9 - 25.03.04 - 15:40
(7) Галочка на форме - реквизит дока? Как "стучишься" к процедуре?
Колись, девочка, я честно хочу помочь ...
И могу!
   NastyFrog
 
10 - 25.03.04 - 15:42
(4) Модально оно и есть модально. Интересно, а закрытьмодально бывает?
 
  Рекламное место пустует
   NastyFrog
 
11 - 25.03.04 - 15:46
К процедуре через СтрокуДействий стучусь. А как надо?
При установке галочки выполняется какой-нить алгоритм. Соответственно - галочку ставим, Форма.обновить()
   Дмитрий
 
12 - 25.03.04 - 15:50
(0) Хоть и неясно зачем это все, но смею предположить, что задержку надо делать после Конт.Форма.Закрыть().

Помню еще в 7.5. на тормозном компе пытался программно записать документ и сразу открыть его форму. Так он сволочь не успевал записываться. Пришлось пустой цикл впендюривать - помогло...
   Рупор абсурда
 
13 - 25.03.04 - 15:53
(11) Что ж там за алгоритм такой? Что ж там за процедура такой?
Почему их не переписать в той форме, в которой ты цикл свой крутишь?
   NastyFrog
 
14 - 25.03.04 - 16:04
(13)Алгоритм лазает по всяким глФункциям, глПроцедурам и в своем модуле взаимовызовы. Переписывать всё в обработку?
(12)А в цикле не успевается с открытой формой всё сделать - следующую открывает? Задержку секудную организовывать?
   Рупор абсурда
 
15 - 25.03.04 - 16:09
(14) Проблемы твои от лени ... :))
Кстати, просто прокрутить цикл для задержки тебе не подойдёт ...
Придётся с извращениями делать задержку ...
   NastyFrog
 
16 - 25.03.04 - 16:16
(15)А чьи не от неё? 8)
   Рупор абсурда
 
17 - 25.03.04 - 16:21
(16) Мой совет: Перепиши, будет и правильней, и надёжней ...
   NastyFrog
 
18 - 25.03.04 - 16:26
(17) Спасибо за совет. К сожалению не смогу ему последовать. Буду организовывать "задержку с извращениями".
   Рупор абсурда
 
19 - 25.03.04 - 16:29
(18) Я и прогнал про "задержку с извращениями" ...
Достаточно будет цикла ...
   NastyFrog
 
20 - 25.03.04 - 16:36
(18)Надо организовать задержку цикла с извращениями?
Будем стараться.
Цикла может и достаточно, но так нехочется от извращений отказываться. 8)
   Рупор абсурда
 
21 - 25.03.04 - 16:37
(20) А говорила, что лентяйка ... :))
   NastyFrog
 
22 - 25.03.04 - 16:47
Не помогает ни-фига - все доки норовит открыть - с циклами, задержками. Увы мне, увы. Может всё-таки знает кто.
   NastyFrog
 
23 - 25.03.04 - 16:49
(21) Кто говорила? Ты говорила? (см. 15)
   Рупор абсурда
 
24 - 25.03.04 - 16:56
(22) Эх, блин, точно нужна задержка с извратом ...
Хоть и нехорошо несколько раз менять мнение, но ... :))
(23) Ты ж согласилась :))
   NastyFrog
 
25 - 25.03.04 - 17:03
(24)Ты сказала,я согласилась.
Каких видов извращений надо придерживаться? Просто минутку подождать не помогает. Всё равно все доки открываются. С задержкой. Дай листинг самого абсурдного извращения. Увести в другую процу? Не помогло.
   Рупор абсурда
 
26 - 25.03.04 - 17:09
(25) Я - мужчина! Ты второй раз ошиблась ...
А "Увести в другую процу" это как?
Штатными средствами можно только ч/з Форма.ОбработкаОжидания() получить такую задержку ...
   Дмитрий
 
27 - 25.03.04 - 17:23
Тут еще надо подумать, где именно эту задержку впихнуть.
Я бы попробовал в двух местах: после ОткрытьФорму и после Конт.Форма.Закрыть.

ЗЫ. Последний раз на тему задержек так долго общался лет 7 назад )
   NastyFrog
 
28 - 25.03.04 - 17:25
(26) Ну и что, что ты - мужчина. Сказала, значит сказала.
А в другую процу увести - в смысле позвать её из основной, а ней(другой) чё-нить потворить. Всё равно сначала все доки открывает.
А чем ОбработкаОжидания круче какого-нибудь цикла, кот. минуту крутится?
   NastyFrog
 
29 - 25.03.04 - 17:26
(27) После ОткрытьФорму надо попробовать, после закрыть точно не помогает.
   Рупор абсурда
 
30 - 25.03.04 - 17:27
(27) После ОткрытьФорму() смысла нет ... Пока ПриОткрытии() в ней не выполнится продолжаться ничего не будет ...
Зависит от того, что в ней написано, конечно ...
Мож там свои какие-то обработки ожидания ...

ЗЫ: А я 15 лет назад :))
   Дмитрий
 
31 - 25.03.04 - 17:34
Есть хороший способ посмотреть, поможет ли тут задержка - прокрутить пару циклов построчно в отладчике. Если все будет нормально открываться и закрываться - дело точно в ней
   NastyFrog
 
32 - 25.03.04 - 17:45
Даже в доке ПриОткрытии() Закрыть() срабатывает после открытия всех доков
   Дмитрий
 
33 - 25.03.04 - 17:58
Нда, думаю за это время можно было уже ручками все доки подправить )) Надо идти другим путем значит
 
 
   NastyFrog
 
34 - 25.03.04 - 18:12
Всем спасибо за старания.
   Рупор абсурда
 
35 - 25.03.04 - 18:12
(28) Упс ... Что-то сразу прощёлкал я этот твой пост ...
Пока идёт цикл он не дает другим процессам возможности работать ... Развести их реально можно только ч/з обработку ожидания ...
   NastyFrog
 
36 - 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;
            ОткрытьФорму(Док.ТекущийДокумент(),Конт);
            Сообщить("Открыт "+ТекстДок(Конт.ТекущийДокумент()));
            Конт.Форма.Закрыть();
            Сообщить("ЗАКРЫТ "+ТекстДок(Конт.ТекущийДокумент()));
        КонецЦикла;
   NastyFrog
 
39 - 26.03.04 - 11:19
(38)Не работает, в том смысле, что сначала все доки открывает, потом все по очереди закрывает. Если док-тов не много - всё нормально, иначе 1С вешается из-за обилия открытых форм. Зато появилась идея по периодам доки выбирать -тогда сработает.



Список тем форума
  Рекламное место пустует
Здесь можно задать вопрос "Как сделать?" и получить кучу ответов, что тебе это делать не надо. Ymryn
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует