|
Как приостановить печать документов в цикле на время ожидания ответа пользователя на вопрос? | ☑ | ||
---|---|---|---|---|
0
TDI
29.12.21
✎
11:55
|
Есть печать документов в цикле.
Если делать через ПоказатьВопрос(Новый ОписаниеОповещения("НапечататьСледующийДокументВыбораДиалога", ЭтотОбъект..... Цикл будет продолжать работать без ожидания ответа. Как сделать, чтобы цикл не продолжал выполнятся, до того момента как пользователь ответит на вопрос ? |
|||
1
fisher
29.12.21
✎
11:57
|
Версия платформы какая?
|
|||
2
fisher
29.12.21
✎
11:57
|
Асинхи тебе уже завезли?
|
|||
3
Kassern
29.12.21
✎
11:58
|
(0) вынести продолжение цикла в процедуру которая оповещается после вопроса
|
|||
4
Kassern
29.12.21
✎
11:58
|
либо использовать модальную версию этого метода
|
|||
5
TDI
29.12.21
✎
12:01
|
(4) а как модально открыть.
Всовременных конфах же нельзя |
|||
6
fisher
29.12.21
✎
12:03
|
(3) Скоро сказка сказывается, да нескоро дело делается
|
|||
7
Kassern
29.12.21
✎
12:03
|
(5) Режим использования модальности в свойствах конфигурации. И правильно, что не рекомендуют, так как это не модно и молодежно теперь, есть варианты с оповещениями, которые могут работать и в вебе, а для модальных штучек веб уже не канает
|
|||
8
mistеr
29.12.21
✎
12:04
|
(0) Задать все вопросы до печати.
|
|||
9
Kassern
29.12.21
✎
12:05
|
вы просто должны понимать, как это работает без модальности. Вы вызвали метод, передали ему оповещение с именем процедуры. Код выполнится до конца, а после запустится выбранная процедура и в зависимости от результата вы обрабатываете данные. Не нужно все пихать в процедуру с вопросом
|
|||
10
Мимохожий Однако
29.12.21
✎
12:06
|
(0) Что ты хочешь спросить? Может быть, вывести информацию на кнопку печати до того как?
|
|||
11
TDI
29.12.21
✎
12:06
|
(8) так в том и дело,
нужно ждать команды пользователя, перед печатью следующего пакета документов.. |
|||
12
mistеr
29.12.21
✎
12:07
|
(11) Зачем? Чтобы пользователь бумагу вставил? Поясни схему работы.
|
|||
13
Kassern
29.12.21
✎
12:08
|
(11) Ну так задавайте вопрос в цикле, а печать перенесите в процедуру оповещения, при положительном результате
|
|||
14
fisher
29.12.21
✎
12:09
|
Если асинхов тебе еще не подвезли, тогда красивых вариантов не вижу.
|
|||
15
Kassern
29.12.21
✎
12:09
|
(13) Точнее не в цикле, а после печати первого документа, проверяете, есть ли еще и вызываете снова процедуру с вопросом
|
|||
16
TDI
29.12.21
✎
12:10
|
да понятно, тогда в процедуру оповещения переносить надо будет
|
|||
17
Мимохожий Однако
29.12.21
✎
12:11
|
(16) Переноси
|
|||
18
azernot
29.12.21
✎
12:12
|
Процедура ЦиклПечати(Счетчик)
Для А = Счетчик по КонецСчетчика Цикл ... Печать(А) Если НасталоВремяЗадатьВопрос ТОгда ПараметрыВопроса.ТекущийСчетчик = А; ПоказатьВОпрос(...ПараметрыВопроса..) Прервать; КОнецЕсли; Процедура ОповещеинеПослеВопроса() Если ОТветПредполагаетПродолжениеПечати Тогда ЦиклПечати(ПараметрыВопроса.ТекущийСчетчик) |
|||
19
Мимохожий Однако
29.12.21
✎
12:21
|
(18) Так какой вопрос ты хочешь задать пользователю?
"Вась, ты пойдешь сегодня в бар?" |
|||
20
Kassern
29.12.21
✎
12:23
|
(16) Вот вам на коленке сделанный пример:
&НаКлиенте Процедура Команда1(Команда) ЗадатьВопрос(); КонецПроцедуры &НаКлиенте Процедура ЗадатьВопрос(); МассивПовторений=Новый Массив; Для к=1 По 10 Цикл МассивПовторений.Добавить(к); КонецЦикла; Если МассивПовторений.Количество()>0 Тогда Режим = РежимДиалогаВопрос.ДаНет; СтруктураПараметров=Новый Структура; СтруктураПараметров.Вставить("МассивЧисел",МассивПовторений); Оповещение = Новый ОписаниеОповещения("ПослеЗакрытияВопроса", ЭтотОбъект, СтруктураПараметров); ПоказатьВопрос(Оповещение, НСтр("ru = 'Продолжить выполнение операции?';" + " en = 'Do you want to continue?'"), Режим, 0); КонецЕсли; КонецПроцедуры &НаКлиенте Процедура ПослеЗакрытияВопроса(Результат, ПараметрыВопроса) Экспорт Если Результат = КодВозвратаДиалога.Нет Тогда ТекПозиция=0; Возврат; КонецЕсли; МассивЧисел=ПараметрыВопроса.МассивЧисел; Сообщить(МассивЧисел[ТекПозиция]); ТекПозиция=ТекПозиция+1; Если ТекПозиция<МассивЧисел.Количество() Тогда ЗадатьВопрос(); КонецЕсли; КонецПроцедуры |
|||
21
Kassern
29.12.21
✎
12:23
|
(20) ну ТекПозиция = 0 определить
|
|||
22
fisher
29.12.21
✎
12:26
|
Если цикл выполняется в тяжелом контексте, то без потерь выкрутиться не получится.
Ну а в противном случае и проблемы нет. |
|||
23
Kassern
29.12.21
✎
12:31
|
(22) тут явно другой случай, у ТС просто мало опыта работы с оповещениями
|
|||
24
Kassern
29.12.21
✎
17:59
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |