Во время проведения дока открываю модальное окно обработки, чтобы выдать сообщение. Но вот надо бы его закрыть через 10 сек., если пользователь в ступоре... А не получается. Попробовал так (в форме обработки):
Код
//*******************************************
Процедура ЗакрытьФорму()
Док.Действие=3;
Форма.ОбработкаОжидания("ЗакрытьФорму",0);
Форма.Закрыть();
КонецПроцедуры
//*******************************************
Процедура ПриОткрытии()
Если ТипЗначенияСтр(Форма.Параметр)="СписокЗначений" Тогда
Док=Форма.Параметр.Получить("Контекст");
Форма.ТекстСообщения.Заголовок(Форма.Параметр.Получить("ТекстСообщения"));
КонецЕсли;
Форма.ОбработкаОжидания("ЗакрытьФорму", 10);
КонецПроцедуры
//*******************************************
Показать полностью
не работает. Хелп! И возможно ли без использования ВК?
В проведение пихать вопрос - двойка.
Вместо модального окна выдай Предупреждение("Программер-ламер!",60) - будет ждать 1 мин.
+ есть решение в формексе вроде обработку ожидания мождно и для модального окна
Сhe Burashka Написал:
-------------------------------------------------------
> В проведение пихать вопрос - двойка.
> Вместо модального окна выдай
> Предупреждение("Программер-ламер!",60) - будет
> ждать 1 мин.
> + есть решение в формексе вроде обработку ожидания
> мождно и для модального окна
Че, ты прав, конечно. Но. Это - замут самого пользователя. Уж очень любит он такие в**боны. Решение уже найдено и внедрено. Юзверь одобрил. Оч даже понравилось ему.
Смысл в чем: во время проведения снимается профит из регистра партий и передается в эту модальную обработку, которая спрашивает, чо делать: игнорировать тек. позицию, игнорировать все, или не проводить документ вообще. А когда у него (юзверя) манагер тупит и смотрит на модальное окно как баран - база для всех в незаконченой транзакции зависла. Я это понимаю, юзверь это понимает, а вот манагер - не понимает. И мешает всем работать. Поэтому по таймауту - не проводим нафиг да и все.
ЗЫ: Когда МонопольныйРежим()=1 никаких обработок, предупреждений, сообщений и т.п. не выводится.
LiS Написал:
-------------------------------------------------------
> ЗЫ: Когда МонопольныйРежим()=1 никаких обработок,
> предупреждений, сообщений и т.п. не выводится.
ИМХО правильный замут. Это нужно для перепроведения документов и восстановления последовательности.
Но ИМХО нельзя исключать программного (пакетного) [пере]проведения документов в немонопольном режиме. Подумай об этом...
LiS Написал:
> Смысл в чем: во время проведения снимается профит
> из регистра партий и передается в эту модальную
> обработку, которая спрашивает, чо делать:
> игнорировать тек. позицию, игнорировать все, или
> не проводить документ вообще.
Я бы эту проверку вставил до проведения документа. Делается так:
В формуле кнопки Провести:
ПроверкаПередПроведением(); #Записать Провести
В модуле формы:
Код
Процедура ПроверкаПередПроведением()
// здесь проверяем, задаем вопросы
Если РешилиЧтоНеНадоПроводить=1 Тогда
СтрокаДействийФормы="Записать";
КонецЕсли;
КонецПроцедуры
Показать полностью
Заодно решается проблема, о которой написала poppy.
2 Сhe Burashka:
Использовать Предупреждение() или Вопрос() в процедуре проведения - еще большая засада, чем модальную форму обработки. Ибо в них тайм-аут работает только при активном окне 1С. Вредителей, которые бросают одинэску на открытых модальных окнах, и переключаются в другие приложения, достаточно.
для того, чтобы сделать ПроверкуПередПроведением() и правильно сосчитать профит, в регистре партий _текущий документ_ уже должен сделать движения. так что получается: Провести(); ?(Проверить()=0, СделатьНеПроведенным(), 1); так что ли? только вот незадача: клиент сетует на то, что доки медленно проводятся. и не мудрено: база работает с 2003 г. да еще и по сети. да еще и не скуль. терминалы не хотят. из соображений безопасности. сворачиваться пока тоже не хотят.
2poppy: да. я над этим думаю и помню, спасибо. такой хитрый замес только в одном документе нужен. в расходной накладной. и все.
LiS Написал:
-------------------------------------------------------
> для того, чтобы сделать ПроверкуПередПроведением()
> и правильно сосчитать профит, в регистре партий
> _текущий документ_ уже должен сделать движения.
> так что получается: Провести(); ?(Проверить()=0,
> СделатьНеПроведенным(), 1); так что ли?
Не, так дела не будет.
Надо делать отдельную процедуру расчета профита. По аналогии с той, что в процедуре проведения, только без движений.
В чем же терминал представляет угрозу безопасности? ИМХО наоборот при грамотном подходе безопасность выше.
> Не, так дела не будет.
> Надо делать отдельную процедуру расчета профита.
> По аналогии с той, что в процедуре проведения,
> только без движений.
как же без движений? ВыгрузитьИтоги разве что... а там ХЕЗ какая партия под распределение попадет... хотя тоже вычисляемо. тока невпример больше кода кромать. а так - юзверь захотел - нате получите.
> В чем же терминал представляет угрозу
> безопасности? ИМХО наоборот при грамотном подходе
> безопасность выше.
да, просто грамотно подойтить нада. однако у них там 2000 сервер настроенный под ИИС, так что в терминал только админов и пускает. а как говорится, два админа на один сервак - это как у семи нянек... так что пусть сами со своим админом разбираются. нехватало мне еще между молотом и наковальней лезть. мое дело предложить и вежливо послать, когда недосуг.