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