Тип: ОтображениеРазметкиПолосыРегулирования. Содержит режим отображения полосы.
Полное описание, параметры и ограничения
Расширение поля формы для поля полосы регулирования.ОтображениеРазметки (Form field extension for a track bar field.MarkingAppearance)
Расширение поля формы для поля полосы регулирования (Form field extension for a track bar field)
ОтображениеРазметки (MarkingAppearance)
Доступен, начиная с версии 8.2.
Использование:
Чтение и запись.
Описание:
Тип: ОтображениеРазметкиПолосыРегулирования.
Содержит режим отображения полосы.
Доступность:
Тонкий клиент, веб-клиент, сервер, толстый клиент.
Использование в версии:
Доступен, начиная с версии 8.2.
Методическая информация
Практические примеры
Разделить шаг изменения и видимые деления шкалы
Изменение идёт по единице, крупный шаг по пять, разметка по десять с обеих сторон. Расчёт использует значение реквизита, а не количество видимых делений.
Где и как запускать
Модуль новой управляемой формы учебной внешней обработки. Код содержит готовые процедуры с директивами; вставляйте на уровне модуля, не внутрь другого обработчика. Каждую задачу запускайте в отдельной копии формы.
Подготовка
В отдельной учебной базе 8.5.1.1343 создайте внешнюю обработку УчебнаяСкидка85 с пустой управляемой основной формой. Тонкий клиент Windows.
Не добавляйте реквизит УчебнаяСкидка, элемент УчебнаяПолоса и кнопку вручную: они создаются полным модулем урока.
В свойствах формы → События назначьте ПриСозданииНаСервере. Вставьте весь код на уровне модуля, сохраните свою EPF и откройте её в учебной базе.
Связанный реквизит — неотрицательное целое число. Полоса меняет именно УчебнаяСкидка, а не неизвестное свойство Значение элемента.
Исходная сумма — собственные 3 × 250 = 750. Первое нажатие при 10% рассчитывает 75 скидки и 675 к оплате. После движения полосы снова нажимайте кнопку.
Каждый урок выполняйте в отдельной копии формы. Расчёт существует только в памяти и сообщениях; рабочие документы и настройки не меняются.
Запуск и отображение в 1С не проверены. Клавиатурную чувствительность, вид шкалы и размеры проверяйте в указанном клиенте вручную.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Реквизиты = Новый Массив;
Реквизиты.Добавить(Новый РеквизитФормы("УчебнаяСкидка", Новый ОписаниеТипов("Число",
Новый КвалификаторыЧисла(3, 0, ДопустимыйЗнак.Неотрицательный))));
ЭтаФорма.ИзменитьРеквизиты(Реквизиты);
ЭтаФорма.УчебнаяСкидка = 10;
Поле = Элементы.Добавить("УчебнаяПолоса", Тип("ПолеФормы"));
Поле.Вид = ВидПоляФормы.ПолеПолосыРегулирования;
Поле.ПутьКДанным = "УчебнаяСкидка";
Поле.МинимальноеЗначение = 0;
Поле.МаксимальноеЗначение = 30;
Поле.Шаг = 1;
Поле.БольшойШаг = 5;
Поле.Ориентация = ОриентацияЭлементаФормы.Горизонтально;
Поле.ОтображениеРазметки = ОтображениеРазметкиПолосыРегулирования.СОбоихСторон;
Поле.ШагРазметки = 10;
КомандаДействия = ЭтаФорма.Команды.Добавить("УчебноеДействие");
КомандаДействия.Действие = "УчебноеДействие";
КомандаДействия.Заголовок = "Рассчитать свою скидку";
КомандаДействия.Подсказка = "Действие только над данными учебной формы";
КомандаДействия.ИзменяетСохраняемыеДанные = Ложь;
Кнопка = Элементы.Добавить("КнопкаУчебноеДействие", Тип("КнопкаФормы"));
Кнопка.ИмяКоманды = КомандаДействия.Имя;
Кнопка.Заголовок = КомандаДействия.Заголовок;
КонецПроцедуры
&НаКлиенте
Процедура УчебноеДействие(Команда)
Поле = Элементы.УчебнаяПолоса;
Если ТипЗнч(УчебнаяСкидка) <> Тип("Число") Тогда
ВызватьИсключение "Учебная скидка должна быть числом";
КонецЕсли;
Если УчебнаяСкидка < 0 ИЛИ УчебнаяСкидка > 30 Тогда
ВызватьИсключение "Допустима учебная скидка от 0 до 30";
КонецЕсли;
ИсходнаяСумма = 3 * 250;
СуммаСкидки = Окр(ИсходнаяСумма * УчебнаяСкидка / 100, 2);
КОплате = ИсходнаяСумма - СуммаСкидки;
Сообщить(ИсходнаяСумма = 750);
Сообщить(СуммаСкидки >= 0 И СуммаСкидки <= 225);
Сообщить(КОплате >= 525 И КОплате <= 750);
Сообщить(КОплате + СуммаСкидки = ИсходнаяСумма);
Сообщить(СтрШаблон("Скидка: %1 процентов; сумма скидки: %2; к оплате: %3", УчебнаяСкидка, СуммаСкидки, КОплате));
Сообщить(Поле.Шаг = 1 И Поле.БольшойШаг = 5);
Сообщить(Поле.ШагРазметки = 10);
Сообщить(Поле.ОтображениеРазметки = ОтображениеРазметкиПолосыРегулирования.СОбоихСторон);
КонецПроцедуры
Разбор по шагам
Связанный реквизит и диапазон совпадают с собственным калькулятором скидки: 0…30, начальное 10.
ШагРазметки 10 настраивает внешний вид шкалы, но не запрещает значения 11 или 12.
СОбоихСторон задаёт сторону рисования делений. Это не два реквизита и не два разных диапазона.
После одного малого шага от 10 получите 11 и расчёт 82.5 скидки, 667.5 к оплате.
Точные размеры и плотность делений зависят от поля и клиента; математический расчёт от этого не меняется.
Как проверить результат
При исходном значении ожидаются семь Истина и 75 / 675. После малого шага вправо от 10 — 82.5 / 667.5.
Осмотрите деления с обеих сторон. Не утверждайте, что на коротком поле каждый тик обязательно будет различим.
Ожидаемый результат
Три разных понятия шага изучаются на одном собственном числовом расчёте.
На что обратить внимание
ШагРазметки не округляет числовой реквизит и не заменяет Шаг.
Не подставляйте отображение разметки обычного элемента вместо другого перечисления по похожему названию.
Размер выплаты вычисляет код, а не внешний вид шкалы.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Сделать вертикальную полосу с явными ограничениями размера
Тот же собственный калькулятор скидки расположен вертикально. Размер, максимумы и направления растягивания задаём при серверном создании формы.
Где и как запускать
Модуль новой управляемой формы учебной внешней обработки. Код содержит готовые процедуры с директивами; вставляйте на уровне модуля, не внутрь другого обработчика. Каждую задачу запускайте в отдельной копии формы.
Подготовка
В отдельной учебной базе 8.5.1.1343 создайте внешнюю обработку УчебнаяСкидка85 с пустой управляемой основной формой. Тонкий клиент Windows.
Не добавляйте реквизит УчебнаяСкидка, элемент УчебнаяПолоса и кнопку вручную: они создаются полным модулем урока.
В свойствах формы → События назначьте ПриСозданииНаСервере. Вставьте весь код на уровне модуля, сохраните свою EPF и откройте её в учебной базе.
Связанный реквизит — неотрицательное целое число. Полоса меняет именно УчебнаяСкидка, а не неизвестное свойство Значение элемента.
Исходная сумма — собственные 3 × 250 = 750. Первое нажатие при 10% рассчитывает 75 скидки и 675 к оплате. После движения полосы снова нажимайте кнопку.
Каждый урок выполняйте в отдельной копии формы. Расчёт существует только в памяти и сообщениях; рабочие документы и настройки не меняются.
Запуск и отображение в 1С не проверены. Клавиатурную чувствительность, вид шкалы и размеры проверяйте в указанном клиенте вручную.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Реквизиты = Новый Массив;
Реквизиты.Добавить(Новый РеквизитФормы("УчебнаяСкидка", Новый ОписаниеТипов("Число",
Новый КвалификаторыЧисла(3, 0, ДопустимыйЗнак.Неотрицательный))));
ЭтаФорма.ИзменитьРеквизиты(Реквизиты);
ЭтаФорма.УчебнаяСкидка = 10;
Поле = Элементы.Добавить("УчебнаяПолоса", Тип("ПолеФормы"));
Поле.Вид = ВидПоляФормы.ПолеПолосыРегулирования;
Поле.ПутьКДанным = "УчебнаяСкидка";
Поле.МинимальноеЗначение = 0;
Поле.МаксимальноеЗначение = 30;
Поле.Шаг = 1;
Поле.БольшойШаг = 5;
Поле.Ориентация = ОриентацияЭлементаФормы.Вертикально;
Поле.АвтоМаксимальнаяВысота = Ложь;
Поле.АвтоМаксимальнаяШирина = Ложь;
Поле.Высота = 12;
Поле.Ширина = 12;
Поле.МаксимальнаяВысота = 20;
Поле.МаксимальнаяШирина = 18;
Поле.РастягиватьПоВертикали = Истина;
Поле.РастягиватьПоГоризонтали = Ложь;
Поле.ОтображениеРазметки = ОтображениеРазметкиПолосыРегулирования.СнизуИлиСправа;
Поле.ШагРазметки = 5;
КомандаДействия = ЭтаФорма.Команды.Добавить("УчебноеДействие");
КомандаДействия.Действие = "УчебноеДействие";
КомандаДействия.Заголовок = "Рассчитать свою скидку";
КомандаДействия.Подсказка = "Действие только над данными учебной формы";
КомандаДействия.ИзменяетСохраняемыеДанные = Ложь;
Кнопка = Элементы.Добавить("КнопкаУчебноеДействие", Тип("КнопкаФормы"));
Кнопка.ИмяКоманды = КомандаДействия.Имя;
Кнопка.Заголовок = КомандаДействия.Заголовок;
КонецПроцедуры
&НаКлиенте
Процедура УчебноеДействие(Команда)
Поле = Элементы.УчебнаяПолоса;
Если ТипЗнч(УчебнаяСкидка) <> Тип("Число") Тогда
ВызватьИсключение "Учебная скидка должна быть числом";
КонецЕсли;
Если УчебнаяСкидка < 0 ИЛИ УчебнаяСкидка > 30 Тогда
ВызватьИсключение "Допустима учебная скидка от 0 до 30";
КонецЕсли;
ИсходнаяСумма = 3 * 250;
СуммаСкидки = Окр(ИсходнаяСумма * УчебнаяСкидка / 100, 2);
КОплате = ИсходнаяСумма - СуммаСкидки;
Сообщить(ИсходнаяСумма = 750);
Сообщить(СуммаСкидки >= 0 И СуммаСкидки <= 225);
Сообщить(КОплате >= 525 И КОплате <= 750);
Сообщить(КОплате + СуммаСкидки = ИсходнаяСумма);
Сообщить(СтрШаблон("Скидка: %1 процентов; сумма скидки: %2; к оплате: %3", УчебнаяСкидка, СуммаСкидки, КОплате));
Сообщить(Поле.Ориентация = ОриентацияЭлементаФормы.Вертикально);
Сообщить(Не Поле.АвтоМаксимальнаяВысота И Не Поле.АвтоМаксимальнаяШирина);
Сообщить(Поле.Высота = 12 И Поле.Ширина = 12);
Сообщить(Поле.МаксимальнаяВысота = 20 И Поле.МаксимальнаяШирина = 18);
Сообщить(Поле.РастягиватьПоВертикали И Не Поле.РастягиватьПоГоризонтали);
Сообщить(Поле.ШагРазметки = 5);
КонецПроцедуры
Разбор по шагам
Явная Вертикально отличается от автоматического выбора по геометрии обычной формы.
Отключаем автоматические максимумы, затем задаём размеры и ограничения. Высота — в строках, ширина и максимумы — в символах по справке.
Разрешаем вертикальный рост, запрещаем горизонтальное растягивание. Это ограничения компоновки, не фиксированные пиксели.
СнизуИлиСправа для вертикального вида относится к правой стороне. ШагРазметки 5 не меняет числовой шаг 1.
Скидка и собственная арифметика сохранены. Кнопка только рассчитывает и читает настройки, не меняет размеры на клиенте.
Как проверить результат
Ожидаются десять Истина и начальный расчёт 75 / 675.
Измените высоту окна и вручную проверьте расположение, правые деления и ограничение роста в тонком клиенте.
Ожидаемый результат
Вертикальное числовое поле связано с реальным учебным расчётом, а настройки размеров заданы в правильном контексте.
На что обратить внимание
МаксимальнаяВысота = 0 снимает ограничение, а не сворачивает полосу.
ОриентацияЭлементаФормы относится к управляемому полю; Ориентация обычного элемента — другой тип.
Проверка свойств не доказывает фактический вид и расстояния в пикселях.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.