Настоящий переключатель связан с собственным числовым реквизитом. Два значения 1 и 2 имеют разные представления и разные доплаты.
Где и как запускать
Модуль новой управляемой формы учебной внешней обработки. Код содержит готовые процедуры с директивами; вставляйте на уровне модуля, не внутрь другого обработчика. Каждую задачу запускайте в отдельной копии формы.
Подготовка
В отдельной учебной базе платформы 8.5.1.1343 создайте внешнюю обработку УчебныеЭлементы85, пустую управляемую форму и назначьте её основной. Используйте тонкий клиент Windows.
В свойствах формы → События назначьте процедуру ПриСозданииНаСервере. Вставьте полный код урока на уровне модуля, не внутрь другой процедуры.
Не создавайте перечисленные в коде реквизиты, поля и кнопку вручную: они добавляются при создании формы. Каждый урок запускайте в отдельной копии формы.
Сохраните свою EPF и откройте её в учебной базе через Файл → Открыть. Код не читает рабочие заказы и не требует справочника товаров.
Реквизит формы хранит значение, а ПолеФормы его отображает. ПутьКДанным связывает две части; неизвестного свойства Поле.Значение здесь нет.
Расчёты используют собственные 3 книги по 250 и учебные условия. Они ничего не записывают в базу, не создают файлов и не вызывают сеть.
Запуск и вид в 1С не проверены. Учитывайте интерфейс вашей учебной базы: Версия8_5 и Такси по-разному используют некоторые свойства.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Реквизиты = Новый Массив;
Реквизиты.Добавить(Новый РеквизитФормы("УчебныйВыбор", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(1, 0, ДопустимыйЗнак.Неотрицательный))));
ЭтаФорма.ИзменитьРеквизиты(Реквизиты);
ЭтаФорма.УчебныйВыбор = 1;
Поле = Элементы.Добавить("УчебныйПереключатель", Тип("ПолеФормы"));
Поле.Вид = ВидПоляФормы.ПолеПереключателя;
Поле.ПутьКДанным = "УчебныйВыбор";
Поле.Заголовок = "Учебный вариант";
Поле.СписокВыбора.Добавить(1, "Самовывоз — без доплаты");
Поле.СписокВыбора.Добавить(2, "Учебная доставка — 150");
Поле.ВидПереключателя = ВидПереключателя.Переключатель;
Поле.КоличествоКолонок = 2;
Поле.Ориентация = ОриентацияЭлементаФормы.Вертикально;
Поле.ВысотаЭлемента = 0;
КомандаДействия = ЭтаФорма.Команды.Добавить("УчебноеДействие");
КомандаДействия.Действие = "УчебноеДействие";
КомандаДействия.Заголовок = "Посчитать выбранный вариант";
КомандаДействия.Подсказка = "Действие только над данными учебной формы";
КомандаДействия.ИзменяетСохраняемыеДанные = Ложь;
Кнопка = Элементы.Добавить("КнопкаУчебноеДействие", Тип("КнопкаФормы"));
Кнопка.ИмяКоманды = КомандаДействия.Имя;
Кнопка.Заголовок = КомандаДействия.Заголовок;
КонецПроцедуры
&НаКлиенте
Процедура УчебноеДействие(Команда)
Поле = Элементы.УчебныйПереключатель;
Если ТипЗнч(УчебныйВыбор) <> Тип("Число") Тогда
ВызватьИсключение "Код варианта должен быть числом";
КонецЕсли;
Если УчебныйВыбор <> 1 И УчебныйВыбор <> 2 Тогда
ВызватьИсключение "Выберите учебный вариант 1 или 2";
КонецЕсли;
Доплата = 0;
Если УчебныйВыбор = 2 Тогда
Доплата = 150;
КонецЕсли;
СуммаКниг = 3 * 250;
Итого = СуммаКниг + Доплата;
Сообщить(СуммаКниг = 750);
Сообщить(Итого - Доплата = СуммаКниг);
Сообщить(СтрШаблон("Книги: %1; доплата: %2; итого: %3", СуммаКниг, Доплата, Итого));
Сообщить(Поле.СписокВыбора.Количество() = 2);
Сообщить(Поле.СписокВыбора.Получить(0).Значение = 1);
Сообщить(Поле.СписокВыбора.Получить(1).Значение = 2);
КонецПроцедуры
Разбор по шагам
Создаём числовой реквизит УчебныйВыбор и поле вида ПолеПереключателя. Начальное значение 1 соответствует самовывозу.
Возвращённый СписокВыбора доступен только для чтения как свойство, но его собственный метод Добавить наполняет список двумя вариантами.
Первый параметр Добавить — сохранённое значение, второй — видимая подпись. Индекс 0 первого элемента не равен его учебному значению 1.
В Версия8_5 используется Ориентация.Вертикально и игнорируется КоличествоКолонок. В Такси ориентация игнорируется, а две колонки задаются другим свойством.
После выбора кнопка проверяет допустимость кода и прибавляет к собственным 750 ровно 0 или 150. Она не оформляет доставку.
Как проверить результат
Сначала нажмите кнопку: ожидаются итог 750 и пять Истина. Выберите доставку и нажмите снова: 900, доплата 150.
Проверьте два варианта в том интерфейсе, который активен в учебной базе. Не ожидайте двух колонок в Версия8_5.
Ожидаемый результат
Два реальных значения интерфейса участвуют в конкретном расчёте; значения, подписи и индексы разведены.
На что обратить внимание
Горизонтально не поддерживается для этого переключателя: не копируйте ориентацию полосы регулирования.
СписокВыбора = Новый СписокЗначений запрещён: свойство только для чтения. Пустой список скрывает поле.
Действия ВыбратьВариант принадлежат тестируемому полю автоматизации, а не этому обычному элементу формы.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.