|
v7: Закрытие формы в цикле | ☑ | ||
---|---|---|---|---|
0
Alucard
27.10.12
✎
10:12
|
Всем привет! Ситуация такая есть самописная конфа, где очень сложный пересчет цен, нужно было написать вн обработку которая бы делала пересчет, в документе пересчет реализован (кнопка Пересчет), так вот чтобы все параметры из дока не извлекать решил воспользоваться SendKey,но тут такой подвох что открытая форма закрывается только после исполнения процедуры, в результате польшого количества открытых окон происходит зависание 1С, как закрывать форму при преходе на след. документ????
Процедура ЗакрФорма(Докум); Форм=""; ОткрытьФорму(Докум,Конт); Скрипт=СоздатьОбъект("WScript.Shell"); Скрипт.SendKeys("^{Enter}"); Форм.Форма.Закрыть(0); КонецПроцедуры Процедура Сформировать() Док=СоздатьОбъект("Документ.М_ПоступлениеМатериалов"); Док.ВыбратьДокументы(ВыбНачПериода,ВыбКонПериода); Пока Док.ПолучитьДокумент()=1 Цикл ЗакрФорма(Док.ТекущийДокумент()); КонецЦикла; КонецПроцедуры |
|||
1
oslokot
27.10.12
✎
10:22
|
офигеть...
а программно вызывать процедуру пересчета трудно что-ли? |
|||
2
AlexNew
27.10.12
✎
10:23
|
(0) Ты правда хочешь, чтобы честно сказали?
|
|||
3
Alucard
27.10.12
✎
10:35
|
Я понимаю что изврат, но описывать все слишком долго, правда
|
|||
4
Alucard
27.10.12
✎
10:36
|
Как программно вызвать процедуру через внеш обработку ???
|
|||
5
hhhh
27.10.12
✎
10:42
|
(0) ну если параметров меньше 100, то дешевле всё-таки не связываться с формами, а извлечь из документа напрямую.
|
|||
6
artist
27.10.12
✎
11:44
|
Лень человеку переписать обработку заполнения... Бывает...
|
|||
7
artist
27.10.12
✎
11:45
|
Если уж пошла такая петрушка - попробуй открывать форму модально, что бы окна не плодились...
|
|||
8
Эльниньо
27.10.12
✎
11:48
|
Не открывай следующую форму, пока не отработала текущая.
Подсказать как? |
|||
9
Alucard
27.10.12
✎
13:37
|
(8)Подсказать всегда можно
|
|||
10
КонецЦикла
27.10.12
✎
13:40
|
Можно вызывать и процедуры формы документа, в поиск
|
|||
11
Эльниньо
27.10.12
✎
13:46
|
Процедура Сформировать()
Док=СоздатьОбъект("Документ.М_ПоступлениеМатериалов"); Док.ВыбратьДокументы(ВыбНачПериода,ВыбКонПериода); Пока Док.ПолучитьДокумент()=1 Цикл глПеременная = "СтоятьЯсказал"; ЗакрФорма(Док.ТекущийДокумент()); Пока глПеременная = "СтоятьЯсказал" Цикл КонецЦикла; КонецЦикла; // в доке прописать: глПеременная = "Можно"; КонецПроцедуры |
|||
12
АЛьФ
27.10.12
✎
14:30
|
2(11) вечный цикл.
|
|||
13
Эльниньо
27.10.12
✎
16:07
|
(12) Поясни.
|
|||
14
kosts
27.10.12
✎
16:54
|
В форме документе:
|
|||
15
Эльниньо
27.10.12
✎
19:29
|
Ксати - можно и так:
Процедура Сформировать() Док=СоздатьОбъект("Документ.М_ПоступлениеМатериалов"); Док.ВыбратьДокументы(ВыбНачПериода,ВыбКонПериода); Пока Док.ПолучитьДокумент()=1 Цикл СтатусВозврата(123456789); ЗакрФорма(Док.ТекущийДокумент()); Пока СтатусВозврата() = 123456789 Цикл КонецЦикла; КонецЦикла; // в доке прописать: глПеременная = "Можно"; КонецПроцедуры |
|||
16
kosts
27.10.12
✎
19:48
|
(15) Кстати да в (14) нужно модально открывать форму, тогда нормально все будет.
|
|||
17
АЛьФ
30.10.12
✎
10:06
|
2(16) При модальном открытии на фиг не нужны все эти извраты.
|
|||
18
АЛьФ
30.10.12
✎
10:06
|
2(13) Проще будет тебе попробовать запустить свой код.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |