Приветствую, форумчане!
Самописная, 8.3, управляемые формы
Имеется вот такая процедура
&НаКлиенте
Процедура ПрименитьСкидкуМенеджераЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Оповещение = Новый ОписаниеОповещения( "ВведенаСуммаСкидкиМенеджераЗавершение", ЭтотОбъект, ДополнительныеПараметры);
ПоказатьВводЧисла( Оповещение, 0, ДополнительныеПараметры.МассивДанныхАкций[0].ПредставлениеСкидки );
РассчитатьИтоговыеЗначенияДокумента();
КонецПроцедуры
Constantus @ Сегодня, 13:41
,
Как вариант, я бы свою форму сделал, с чекбоксом (процент-сумма), и нет проблем..
nik389 @ Сегодня, 16:46
,
Ну я сейчас так и пытаюсь сделать... Подскажите как это сделать в УФ. Нужно же открыть эту форму, выбрать нужное значение и потом выбранное значение передать в код для дальнейшей обработки...
ОткрытьФорму("Документ.Заказ.Форма.ФормаПС");
На форме есть строковый реквизит. "СписокВыбора": Процент(Процент), Сумма(Сумма)
Как теперь выбранное значение передать код?
&НаКлиенте
Процедура ПрименитьСкидкуМенеджераЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
ОткрытьФорму("Документ.Заказ.Форма.ФормаПС").ОткрытьМодально();
//??????????????????? как обработать выбранное значение из спискавыбора формы "ФормаПС"?
Оповещение = Новый ОписаниеОповещения( "ВведенаСуммаСкидкиМенеджераЗавершение", ЭтотОбъект, ДополнительныеПараметры);
ПоказатьВводЧисла( Оповещение, 0, ДополнительныеПараметры.МассивДанныхАкций[0].ПредставлениеСкидки );
РассчитатьИтоговыеЗначенияДокумента();
КонецПроцедуры
Constantus @ Сегодня, 14:39
,
ну да, нужно открыть форму, например так, делал хитрый выбор периода:
ПараметрыПодбора = Новый Структура("ЗакрыватьПриВыборе, ПериодЗагрузки", Истина,ПериодЗагрузки);
ОткрытьФорму("ОбщаяФорма.ВыборКвартала", ПараметрыПодбора, Элементы.ПериодЗагрузки);
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("ПериодЗагрузки") Тогда
ПарамКвартал = Параметры.ПериодЗагрузки;
Иначе
Отказ = Истина;
КонецЕсли;
Если ПарамКвартал = Дата(1,1,1) Тогда
ПарамКвартал = ТекущаяДата();
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура КомандаОК(Команда)
ВыбКв = ДатьКвартал();
ОповеститьОВыборе(ВыбКв);
КонецПроцедуры
Я бы влепил обязательный к заполнению реквизит число и на форме указал вид - переключатель (такой типа двух радиобаттонов). Два положения - или процент или сумма - и никаких сложных бубнов. Не надо еще одну форму и нет модальности..
Перепробовал много методов, но самое страшное, что вместе с кодом при вызове формы выбора срабатывает код:
Оповещение = Новый ОписаниеОповещения( "ВведенаСуммаСкидкиМенеджераЗавершение", ЭтотОбъект, ДополнительныеПараметры);
ПоказатьВводЧисла( Оповещение, 0, ДополнительныеПараметры.МассивДанныхАкций[0].ПредставлениеСкидки );
Процедура ПрименитьСкидкуМенеджераЗавершение(РезультатВопроса, ДополнительныеПараметры) Экспорт
Перем ВЗ;
Оповещение = Новый ОписаниеОповещения("ПослеВводаЗначения", ЭтаФорма);//, Параметры);
ОткрытьФорму("Документ.Заказ.Форма.ФормаПС",,,,,,Оповещение);
// Здесть обработать результат выбора, потом перейти дальше
//Оповещение = Новый ОписаниеОповещения("ВведенПроцентСкидкиМенеджераЗавершение", ЭтотОбъект, ДополнительныеПараметры); //Ввод Процента
Оповещение = Новый ОписаниеОповещения("ВведенаСуммаСкидкиМенеджераЗавершение", ЭтотОбъект, ДополнительныеПараметры);
ПоказатьВводЧисла( Оповещение, 0, ДополнительныеПараметры.МассивДанныхАкций[0].ПредставлениеСкидки );
КонецПроцедуры
// Выбор Типа скидки Процент/Сумма
&НаКлиенте
Процедура ПослеВводаЗначения(ВыбЗнач, Параметры) Экспорт
Если ВыбЗнач<>Неопределено Тогда
// обработка введенного значения
ВыборТипаСкидки = ВыбЗнач;
КонецЕсли;
КонецПроцедуры
ПоказатьВводЗначения(Оповещение, ВЗ, "Выбор типа скидки: Сумма/Процент", ОписаниеТипов); // один из вариантов
Массив = Новый Массив;
Массив.Добавить(Тип("ПеречислениеСсылка.ВидМодели"));
ОписаниеТипов = Новый ОписаниеТипов(Массив);
Если ВвестиЗначение(ВЗ, "Введите значение", ОписаниеТипов) Тогда
// обработка введенного значения
//Сообщить("Введенное значение: "+ВЗ);
КонецЕсли;
Применил такое изобретение:
СП = Новый СписокЗначений;
СП.Добавить("Процент");
СП.Добавить("Сумма");
Выборка = СП.ВыбратьЭлемент("Выберите нужный вид скидки:");
Если Выборка.Значение = "Процент" Тогда
Сообщить(Выборка.Значение);
Оповещение = Новый ОписаниеОповещения("ВведенПроцентСкидкиМенеджераЗавершение", ЭтотОбъект, ДополнительныеПараметры);
ПоказатьВводЧисла( Оповещение, 0, ДополнительныеПараметры.МассивДанныхАкций[0].ПредставлениеСкидки );
ИначеЕсли Выборка.Значение = "Сумма" Тогда
Сообщить(Выборка.Значение);
Оповещение = Новый ОписаниеОповещения("ВведенаСуммаСкидкиМенеджераЗавершение", ЭтотОбъект, ДополнительныеПараметры);
ПоказатьВводЧисла( Оповещение, 0, ДополнительныеПараметры.МассивДанныхАкций[0].ПредставлениеСкидки );
ИначеЕсли Выборка = Неопределено Тогда
Возврат;
КонецЕсли;
&НаКлиенте
Процедура КакСделатьНемодальныйВыборЗначения(Команда)
Цвета = Новый СписокЗначений;
Цвета.Добавить("Красный");
Цвета.Добавить("Зелёный");
Цвета.Добавить("Синий");
// процедура ПослеВыбораЭлемента определена чуть ниже
ОповещениеПослеВыбораЭлемента = Новый ОписаниеОповещения(
"ПослеВыбораЭлемента", ЭтотОбъект
);
Цвета.ПоказатьВыборЭлемента(
ОповещениеПослеВыбораЭлемента,
"Выберите любимый цвет"
);
КонецПроцедуры
&НаКлиенте
Процедура ПослеВыбораЭлемента(Элемент, Параметры) Экспорт
Если Элемент <> Неопределено Тогда
Сообщить(Элемент.Значение);
КонецЕсли;
КонецПроцедуры
Вы можете сколько угодно формировать цепочки вызовов, т.е. в данном случае в "ПослеВыбораЭлемента" вызывайте ввод числа со своим оповещением в зависимости от выбранного элемента. Если нужно пробросить какие-то данные пишите в доп параметры или пробросьте дальше доп параметры - по сути и результат выбора, число или процент, можно в доп. параметры пробросить и обойтись одним методом.
У меня так из последнего перенос даты выполнения задачи:
1. Сначала вопрос перенос это или отмена - оповещение
2. При переносе запрос даты - оповещение
3. Если дата раньше другой ключевой даты еще вопрос, а уверены ли Вы, что именно так - оповещение. Здесь в случае прохождения контроля или дальше при подтверждении просто вызывается один метод с фиксацией даты.
Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua