Имя: Пароль:
1C
 
Как сделать не модальный вызов перед формой выбора элемента на УФ?
0 Elf56
 
24.10.17
14:04
Всем доброго времени суток.

Имеется 1С:Предприятие 8.3 (8.3.10.2466)

Справочник на управляемых формах.

Есть реквизит формы ВладелецПомещения (типа Справочник.Контрагенты) который отображается на форме. Задача в том, чтобы сделать не модальный вопрос с кнопками Да Нет, перед открытием формы выбора так, что если пользователь выбирает Нет не чего не происходит т.е. СтандартнаяОбработка = ЛОЖЬ, а если пользователь нажимает да, то открывается форма выбора и пользователь выбирает элемент справочника. Но вот в чем загвостка перед вопросом форма выбора не должна открываться ведь это не модальный вопрос.

Пробую так.

&НаКлиенте
Процедура ОбработатьВопросСменыВладельца(Результат, ДополнительныеПараметры) Экспорт

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

&НаКлиенте
Процедура ВладелецПомещенияНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка, НеПервыйВызов = НЕОПРЕДЕЛЕНО)
    
    Если ЕстьВладелейПомещенияНаДату(Объект.Владелец, ДатаАктуальности, Объект.Ссылка) = ИСТИНА И НеПервыйВызов = НЕОПРЕДЕЛЕНО Тогда
        
        НеПервыйВызов = ИСТИНА;
        
        ДополнительныеПараметры = Новый Структура();
        ДополнительныеПараметры.Вставить("Элемент", Элемент);
        ДополнительныеПараметры.Вставить("ДанныеВыбора", ДанныеВыбора);
        ДополнительныеПараметры.Вставить("СтандартнаяОбработка", СтандартнаяОбработка);
        ДополнительныеПараметры.Вставить("НеПервыйВызов", НеПервыйВызов);
        
        СтандартнаяОбработка = ЛОЖЬ;
        
        ТекстВопроса = НСтр("ru='ВНИМАНИЕ! На дату актуальности по данному помещению уже есть владелец
                            |Вы уверены, что хотите сменить Владельца?'");
        Обработчик = Новый ОписаниеОповещения("ОбработатьВопросСменыВладельца", ЭтаФорма, ДополнительныеПараметры);
        ПоказатьВопрос(Обработчик, ТекстВопроса, РежимДиалогаВопрос.ДаНет, 20, КодВозвратаДиалога.Да, НСтр("ru='Подтверждение смены владельца'"));
    Иначе
        
        СтандартнаяОбработка = ИСТИНА;
        
    КонецЕсли;
    
    НеПервыйВызов = НЕОПРЕДЕЛЕНО;
    
КонецПроцедуры

На кнопку Нет все прекрасно срабатывает вернее не чего не срабатывает как и должно быть.
На кнопку Да также не чего не срабатывает ))), а должно открыться форма выбора.
Как быть?

Всем заранее спасибо за ответы.
1 elCust
 
24.10.17
14:16
Прочитайте вот здесь http://its.1c.ru/docs/v8nonmodal/#19 про блокирующие формы.

Думаю найдете решение.
2 Elf56
 
24.10.17
14:27
Все оказалось куда проще просто в процедуру обработчика вопроса надо было сделать вот так

&НаКлиенте
Процедура ОбработатьВопросСменыВладельца(Результат, ДополнительныеПараметры) Экспорт

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

Где ДополнительныеПараметры это элемент формы из которого вызывается вопрос
3 Elf56
 
24.10.17
14:28
ДополнительныеПараметры.Элемент надо заменить на ДополнительныеПараметры