===Пример 1. Установка используемых скидок в логических модулях=== Следующий пример демонстрирует, как с использованием [[кассир5:внешниемодули:apiлогическихмодулей|API логических модулей]] можно реализовать выбор одной скидки из нескольких активных. Перем ВыбраннаяСкидка;// в переменной модуля формы запоминаем выбранную скидку //при нажатии кнопки оплаты предлагаем выбрать одну из активных скидок Процедура Регистрация_ФункцияФормыРегистрации_Оплата_ПредОбработка(НомерВидаОплаты) Экспорт _Отказ = Ложь; __Источник = _Источник; ВыбраннаяСкидка = Неопределено; Если _Источник.ПросмотрЧека ИЛИ НЕ _Источник.ТипЧека_Продажа Тогда Возврат; КонецЕсли; КэшСкидок = _Источник.ФункцииСкидки.ЛокКэшСкидок; Если КэшСкидок = Неопределено Тогда Возврат; КонецЕсли; Отбор = Новый Структура("Активность, Использование", Истина, Истина); СписокВыбора = Новый СписокЗначений(); Для Каждого Схема Из КэшСкидок.НайтиСтроки(Отбор) Цикл Для Каждого Ск Из Схема.Скидки.НайтиСтроки(Отбор) Цикл СписокВыбора.Добавить(Новый Структура("Схема, Скидка", Схема, Ск), Ск.Скидка.Наименование); КонецЦикла; КонецЦикла; Если СписокВыбора.Количество() = 0 Тогда ИначеЕсли СписокВыбора.Количество() = 1 Тогда ВыбраннаяСкидка = СписокВыбора[0].Значение; Иначе ФормаВыбораНомер1 = МенеджерОбъектов.ПолучитьОбщийОбъект("Регистрация.ФормаВыбораНомер1"); ФормаВыбораНомер1.СписокЧеков = СписокВыбора; ФормаВыбораНомер1.ТипФормы = 1; Ответ = ФормаВыбораНомер1.ОткрытьМодально(); Если Ответ = Неопределено Тогда _Отказ = Истина; Возврат; Иначе ВыбраннаяСкидка = Ответ.Значение; КонецЕсли; КонецЕсли; Если ВыбраннаяСкидка <> Неопределено Тогда __Источник.ФункцииСкидки.РассчетСкидки(); __Источник.ОбновитьЭлементыФормыРегистрации(); __Источник.НажатаПромИтог = Ложь; _Источник = __Источник; КонецЕсли; КонецПроцедуры //устанавливаем активной только выбранную скидку Функция РассчетСкидок_ПолучитьМассивАктивныхСкидокИзКэша_ПостОбработка(Покупка, ВостСкидки) Экспорт _Отказ = Ложь; Если Покупка = Неопределено Тогда Если ВыбраннаяСкидка <> Неопределено Тогда _РезультатВызова.Очистить(); Для Каждого Ск Из ВыбраннаяСкидка.Схема.Скидки Цикл Ск.Использование = Ложь; КонецЦикла; ВыбраннаяСкидка.Скидка.Использование = Истина; _РезультатВызова.Добавить(ВыбраннаяСкидка.Схема); _Отказ = Истина; КонецЕсли; КонецЕсли; Возврат _РезультатВызова; КонецФункции //при успешном закрытии чека сбрасываем выбранную скидку Функция Регистрация_ЗакрытьЧекКонтекст_ПостОбработка(Отмена) Экспорт _Отказ = Ложь; Если _РезультатВызова = Истина Тогда ВыбраннаяСкидка = Неопределено; КонецЕсли; Возврат _РезультатВызова; КонецФункции