Имя: Пароль:
1C
1С v8
Вопрос закрывается с таймаутом
0 hawksib
 
22.07.17
09:04
Первый раз столкнулся, пишу процедуру, показатьвопрос, которая срабатывает, но в процедуру, указанную в обработке оповещения сразу передает таймаут, а должна передать "да" или "нет", поэтому процедура корректно не работает. вопрос должен возникать после переноса элементов из формы подбора, перед заполнением таблицы.
ставлю точку останова, прохожу отладкой, все действия выполняются, но передается таймаут. тема похожа на вот эту ПоказатьВопрос() не работает, но понять я пока не могу, что делаю не так, мой код:

&НаКлиенте
Процедура ЗамечанияКРеквизитамОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
    Если ВыбранноеЗначение.Количество() > 0 И Объект.ЗамечанияКРеквизитам.Количество() > 0 Тогда
        ОписаниеОповещенияВопроса = Новый ОписаниеОповещения("ВопросОбОчиткеЗамечаний", ЭтотОбъект);
        ПоказатьВопрос(ОписаниеОповещенияВопроса, "Очистить табличную часть?", РежимДиалогаВопрос.ДаНет);
    КонецЕсли;
    Для каждого Подбор Из ВыбранноеЗначение Цикл
        Строка = Объект.ЗамечанияКРеквизитам.Добавить();
        Строка.ЗамечанияКРеквизитам = Подбор.Замечание;
    КонецЦикла;
КонецПроцедуры


&НаКлиенте
Процедура ВопросОбОчиткеЗамечаний(Результат, ПараметрыВопроса) Экспорт
    Если Результат = КодВозвратаДиалога.Да Тогда
        Объект.ЗамечанияКРеквизитам.Очистить();
    КонецЕсли;
КонецПроцедуры
1 ribuh
 
22.07.17
09:16
ПоказатьВопрос для того и "разбит" на две процедуры, что в отличии от Вопрос тут диалог НЕмодальный, и после показать вопрос код должен завершится. У Вас там цикл, и он выполняется сразу, таймаут тут не при делах... если конечно вопрос был про это.

Цикл перенесите:
- если нужно чтобы он выполнялся ДО вопроса, то вверх в процедуре ЗамечанияКРеквизитамОбработкаВыбора
- если нужно, чтобы после вопроса, то в процедуру ВопросОбОчиткеЗамечаний
2 hawksib
 
22.07.17
09:22
(1) сделал так, результат аналогичный в процедуре ПослеОтветаНаВопрос, результат = Таймаут

&НаКлиенте
Процедура ПослеОтветаНаВопрос(Результат, ВыбранноеЗначение) Экспорт
    Если Результат = КодВозвратаДиалога.Да Тогда
        Объект.ЗамечанияКРеквизитам.Очистить();
    КонецЕсли;
    Для каждого Подбор Из ВыбранноеЗначение Цикл
        Строка = Объект.ЗамечанияКРеквизитам.Добавить();
        Строка.ЗамечанияКРеквизитам = Подбор.Замечание;
    КонецЦикла;
КонецПроцедуры


&НаКлиенте
Процедура ЗамечанияКРеквизитамОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)
    Если ВыбранноеЗначение.Количество() > 0 И Объект.ЗамечанияКРеквизитам.Количество() > 0 Тогда
        ОписаниеОповещенияВопроса = Новый ОписаниеОповещения("ПослеОтветаНаВопрос", ЭтотОбъект, ВыбранноеЗначение);
        ПоказатьВопрос(ОписаниеОповещенияВопроса, "Очистить табличную часть?", РежимДиалогаВопрос.ДаНет);
    КонецЕсли;
КонецПроцедуры
3 ribuh
 
22.07.17
09:32
Загадка природы, в порядка эксперимента передайте четвёртым параметров ПоказатьВопрос 0 (это "бесконечный таймаут"):
ПоказатьВопрос(ОписаниеОповещенияВопроса, "Очистить табличную часть?", РежимДиалогаВопрос.ДаНет, 0);
4 hawksib
 
22.07.17
10:00
(3) результат аналогичный
5 ribuh
 
22.07.17
10:02
А сам вопрос то Вы видите?
В процедуре ЗамечанияКРеквизитамОбработкаВыбора Первой строкой напишите СтандартнаяОбработка = Ложь;
6 hawksib
 
22.07.17
10:03
я его вижу, только когда ставлю остановку и иду к следующей строке кода
7 hawksib
 
22.07.17
10:06
(5) СтандартнаяОбработка = Ложь; не помогло
8 ribuh
 
22.07.17
10:12
я пас, нужно смотреть наяву, тут гадание, много раз уже бывало, опускается какой то момент, который сразу видно, когда смотришь реально....
9 hawksib
 
22.07.17
10:17
(8) по aa посмотришь?
10 ribuh
 
22.07.17
10:24
давай
11 hawksib
 
22.07.17
10:27
75 434 917
00538
12 h-sp
 
22.07.17
10:27
(9) что конкретно не получается?
13 hawksib
 
22.07.17
10:30
(12) вопрос не задается, проскакивает сразу с таймаутом
14 h-sp
 
22.07.17
10:33
так он вообще не показывает вопрос?
15 hawksib
 
22.07.17
10:49
(14) показывает, разобрались, что вызов вопроса происходит из другой формы, спасибо ribuh дальше сам поправлю
16 hawksib
 
22.07.17
14:09
(10) я сделал вопрос, перед открытием формы подбора, так и работает лучше, да и по логике, думаю правильнее, спасибо, что помог
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.