Сравнить оформление индикатора и подтверждённый прогресс

Учебные задачи

Наклонные сегменты, цвет рамки и ширина относятся к представлению. После каждого нажатия отдельно проверяем реальный счётчик и собственную формулу процента.

Где и как запускать

Модуль новой управляемой формы учебной внешней обработки. Код содержит готовые процедуры с директивами; вставляйте на уровне модуля, не внутрь другого обработчика. Каждую задачу запускайте в отдельной копии формы.

Подготовка

  1. В отдельной учебной базе платформы 8.5.1.1343 создайте внешнюю обработку УчебныеЭлементы85, пустую управляемую форму и назначьте её основной. Используйте тонкий клиент Windows.

  2. В свойствах формы → События назначьте процедуру ПриСозданииНаСервере. Вставьте полный код урока на уровне модуля, не внутрь другой процедуры.

  3. Не создавайте перечисленные в коде реквизиты, поля и кнопку вручную: они добавляются при создании формы. Каждый урок запускайте в отдельной копии формы.

  4. Сохраните свою EPF и откройте её в учебной базе через Файл → Открыть. Код не читает рабочие заказы и не требует справочника товаров.

  5. Реквизит формы хранит значение, а ПолеФормы его отображает. ПутьКДанным связывает две части; неизвестного свойства Поле.Значение здесь нет.

  6. Расчёты используют собственные 3 книги по 250 и учебные условия. Они ничего не записывают в базу, не создают файлов и не вызывают сеть.

  7. Запуск и вид в 1С не проверены. Учитывайте интерфейс вашей учебной базы: Версия8_5 и Такси по-разному используют некоторые свойства.

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Реквизиты = Новый Массив;
    Реквизиты.Добавить(Новый РеквизитФормы("УчебныйПрогресс", Новый ОписаниеТипов("Число",
        Новый КвалификаторыЧисла(1, 0, ДопустимыйЗнак.Неотрицательный))));
    ЭтаФорма.ИзменитьРеквизиты(Реквизиты);
    ЭтаФорма.УчебныйПрогресс = 0;
    Поле = Элементы.Добавить("УчебныйИндикатор", Тип("ПолеФормы"));
    Поле.Вид = ВидПоляФормы.ПолеИндикатора;
    Поле.ПутьКДанным = "УчебныйПрогресс";
    Поле.Заголовок = "Четыре собственные проверки";
    Поле.МинимальноеЗначение = 0;
    Поле.МаксимальноеЗначение = 4;
    Поле.Ориентация = ОриентацияЭлементаФормы.Горизонтально;
    Поле.ОтображатьПроценты = Истина;
    Поле.Отображение = РежимСглаживанияИндикатора.ПрерывистыйНаклонный;
    Поле.ЦветРамки = Новый Цвет(40, 65, 95);
    Поле.Ширина = 40;
    Поле.РастягиватьПоГоризонтали = Истина;
    Поле.РастягиватьПоВертикали = Ложь;

    КомандаДействия = ЭтаФорма.Команды.Добавить("УчебноеДействие");
    КомандаДействия.Действие = "УчебноеДействие";
    КомандаДействия.Заголовок = "Выполнить следующую учебную проверку";
    КомандаДействия.Подсказка = "Действие только над данными учебной формы";
    КомандаДействия.ИзменяетСохраняемыеДанные = Ложь;
    Кнопка = Элементы.Добавить("КнопкаУчебноеДействие", Тип("КнопкаФормы"));
    Кнопка.ИмяКоманды = КомандаДействия.Имя;
    Кнопка.Заголовок = КомандаДействия.Заголовок;
КонецПроцедуры

&НаКлиенте
Процедура УчебноеДействие(Команда)
    Поле = Элементы.УчебныйИндикатор;
    Если ТипЗнч(УчебныйПрогресс) <> Тип("Число") Тогда
        ВызватьИсключение "Учебный прогресс должен быть числом";
    КонецЕсли;
    Если УчебныйПрогресс < 0 ИЛИ УчебныйПрогресс > 4 ИЛИ УчебныйПрогресс <> Цел(УчебныйПрогресс) Тогда
        ВызватьИсключение "Допустимо целое число выполненных проверок от 0 до 4";
    КонецЕсли;
    Если УчебныйПрогресс = 4 Тогда
        Сообщить("Все четыре учебные проверки уже выполнены. Закройте и откройте форму для нового прохода");
        Возврат;
    КонецЕсли;
    Если УчебныйПрогресс = 0 Тогда
        Успех = СтрДлина("Книга") = 5;
        Название = "Длина собственного слова Книга";
    ИначеЕсли УчебныйПрогресс = 1 Тогда
        Успех = 3 * 250 = 750;
        Название = "Сумма трёх собственных книг";
    ИначеЕсли УчебныйПрогресс = 2 Тогда
        Успех = Окр(750 * 10 / 100, 2) = 75;
        Название = "Десятипроцентная учебная скидка";
    Иначе
        Успех = 750 - 75 = 675;
        Название = "Собственная сумма после скидки";
    КонецЕсли;
    Если Не Успех Тогда
        ВызватьИсключение "Не прошла учебная проверка: " + Название;
    КонецЕсли;
    УчебныйПрогресс = УчебныйПрогресс + 1;
    Процент = 100 * УчебныйПрогресс / 4;
    Сообщить(Название);
    Сообщить(Успех);
    Сообщить(СтрШаблон("Выполнено %1 из 4; расчётный процент %2", УчебныйПрогресс, Процент));
    Сообщить(Поле.Отображение = РежимСглаживанияИндикатора.ПрерывистыйНаклонный);
    Сообщить(Процент = УчебныйПрогресс * 25);
    Сообщить(УчебныйПрогресс >= 1 И УчебныйПрогресс <= 4);
КонецПроцедуры

Разбор по шагам

  1. Связываем поле с собственным счётчиком; начальное значение и допустимый диапазон не зависят от оформления.

  2. Режим ПрерывистыйНаклонный выбирает изображение заполнения. Это не таймер и не признак работающего фонового процесса.

  3. RGB-цвет рамки задаёт собственное значение, а ширина 40 измеряется символами. Горизонтальное растягивание разрешено отдельно.

  4. После фактической проверки счётчик увеличивается один раз и формула сверяется с эквивалентной УчебныйПрогресс × 25.

  5. Нажимайте по одному разу и сравнивайте счётчик, сообщения и индикатор. Никакие длительные операции и искусственные паузы не выполняются.

Как проверить результат

  1. После второго нажатия ожидаются 2 из 4, 50% и четыре Истина; после четвёртого — 4 из 4 и 100%.

  2. Осмотрите режим сегментов и рамку в выбранной теме. Если клиент отображает оформление иначе, не объявляйте арифметические проверки неуспешными без их результатов.

Ожидаемый результат

Новичок различает успешное выполнение шага, число в реквизите и способы визуализации этого числа.

На что обратить внимание

  1. Анимация или сглаживание сами по себе не подтверждают выполнение проверки.

  2. Пятьдесят процентов означают две из четырёх проверок, а не реквизит со значением 50.

  3. Управление процентом не является журналом выполнения: данные исчезают при закрытии учебной формы.

Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.

Не хотите разбираться сами?

Адаптируем это решение под вашу базу. Оценка бесплатно.

Оставить задачу

1С, 1С:Предприятие — товарные знаки ООО «1С». Сайт не является официальным представительством фирмы «1С» и не аффилирован с ней.