Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
13 дек 2024, 05:39

Некорректно отрабатывает метод Вопрос();

Автор _Lebowski_, 30 сен 2021, 17:22

0 Пользователей и 1 гость просматривают эту тему.

_Lebowski_

Добрый день.

Только закончил курсы программирования 1С, практически ничего не знаю...:(
Опыта работы в программировании нет

Помогите, пожалуйста, разобраться...

Поставили задачу в обработке задать вопрос пользователю при нажатии на галочку/поле флажка (процедура "При изменении") и в зависимости от ответа или прерываем обработку или продолжаем.

Так как данный обработчик уже существует на форме обработки я решил в него добавить РежимДиалогаВопрос.ДаНет (закомментированный фрагмент в коде).

Сообщение вывелось, но при повторном нажатии на галочку форма с вопросом зависает на секунд 40-60, не понимаю почему.
Также не получается обновить табличную часть обработки после обработки вопроса, был использован метод Прочитать() (закомментированный фрагмент в коде)

PS Пробовал метод ПоказатьВопрос() и тоже не получилось, возможно и скорее всего не правильно составил конструкцию, буду очень признателен за любую помощь
 

Платформа: 8.3 (8.3.17.1851)
Конфигурация: 11.1 (11.1.9.56)
Режим: Серверный
В свойствах конфигурации режим использования модальности включен

Фрагмент кода:

Процедура ЗаявкиНаТранспортСтатусПриИзменении(Элемент)

Перем МассивПарныхЗаявокНаТранспорт;


// --- ЗДЕСЬ БЫЛА ПОПЫТКА ЗАДАТЬ ВОПРОС ПОЛЬЗОВАТЕЛЮ !!!

//Режим = РежимДиалогаВопрос.ДаНет;
//Ответ = Вопрос("Выполнить?", Режим, 0);
//Если Ответ = КодВозвратаДиалога.Нет Тогда
// Возврат;
//КонецЕсли;
//
// ЭтаФорма.Прочитать();

// --- НИЧЕГО НЕ ВЫШЛО

ТекущиеДанные = Элементы.ЗаявкиНаТранспорт.ТекущиеДанные;

Если Не ТекущиеДанные.Статус Тогда
Возврат;
КонецЕсли;


Если ЗначениеЗаполнено(ТекущиеДанные.ИДЗаказаКлиентаВКК)
И СОТ_ЗаявкиНаТранспортВызовСервера.ЭтоПарнаяЗаявкаНаТранспорт(ТекущиеДанные.ИДЗаказаКлиентаВКК, МассивПарныхЗаявокНаТранспорт) Тогда

ТекстПарныеЗаявкиНаТранспорт = "";

Для Каждого ЗаявкаНаТранспорт Из МассивПарныхЗаявокНаТранспорт Цикл
ТекстПарныеЗаявкиНаТранспорт = ТекстПарныеЗаявкиНаТранспорт + ЗаявкаНаТранспорт + Символы.ПС;
КонецЦикла;

Оповещение = Новый ОписаниеОповещения("ПослеЗакрытияВопросаЗаявкиНаТранспортСтатусПриИзменении", ЭтотОбъект,
Новый Структура("МассивПарныхЗаявокНаТранспорт", МассивПарныхЗаявокНаТранспорт));

ПоказатьВопрос(Оповещение,
"Текущая заявка на транспорт является парной, будут выполнены следующие заявки: " + Символы.ПС + ТекстПарныеЗаявкиНаТранспорт,
РежимДиалогаВопрос.ДаНетОтмена);
Иначе

ОбработатьИзменениеСтатусаЗаявкиНаТранспорт(ТекущиеДанные.ЗаявкаНаТранспорт);
ОтправитьУведомлениеНаПочту(ТекущиеДанные.ДокументОснование, ТекущиеДанные.ЗаявкаНаТранспорт);
ОтправитьУведомлениеОРасхожденииКоличества(ТекущиеДанные.ЗаявкаНаТранспорт);

ЗаполнитьДеревоЗаявокНаПеревозку();
РазвернутьВсеСтрокиДерева();

КонецЕсли;

КонецПроцедуры

&НаКлиенте
Процедура ПослеЗакрытияВопросаЗаявкиНаТранспортСтатусПриИзменении(Результат, Параметры) Экспорт

Если Не Результат = КодВозвратаДиалога.Да Тогда
Возврат;
КонецЕсли;

Для Каждого Строка Из Параметры.МассивПарныхЗаявокНаТранспорт Цикл
ОбработатьИзменениеСтатусаЗаявкиНаТранспорт(Строка);
КонецЦикла;

ЗаполнитьДеревоЗаявокНаПеревозку();
РазвернутьВсеСтрокиДерева();

КонецПроцедуры

LexaK

да по идее все должно работать,
только немного по другому обработку Вопроса сделайте
...
Ответ = Вопрос("Выполнить?", РежимДиалогаВопрос.ДаНет, 10); //используем таймаут
Если Ответ <> КодВозвратаДиалога.Да Тогда
    Возврат;
КонецЕсли;
...
если помогло нажмите: Спасибо!

_Lebowski_

LexaK, попробовал, так тоже не получается, а что самое интересное, когда сворачиваешь клиентское приложение и потом обратно разворачиваешь форма вопроса отвисает...

LexaK

а без вопроса-то, вообще работает? или тоже висит?
если помогло нажмите: Спасибо!

_Lebowski_

LexaK, если фрагмент кода, который закомментирован убрать, то все работает нормально, а с вопросом зависает...

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск