ФормаКлиентскогоПриложения.ВертикальнаяПрокрутка

Свойства · VerticalScroll

Тип: ВертикальнаяПрокруткаФормы. Управляет вертикальной прокруткой.

Полное описание, параметры и ограничения

ФормаКлиентскогоПриложения.ВертикальнаяПрокрутка (ClientApplicationForm.VerticalScroll)

ФормаКлиентскогоПриложения (ClientApplicationForm)

ВертикальнаяПрокрутка (VerticalScroll)

Доступен, начиная с версии 8.3.3.

Использование:
Чтение и запись.
Описание:
Тип: ВертикальнаяПрокруткаФормы.
Управляет вертикальной прокруткой.
Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент.
Изменение свойства на клиенте требует обращения к серверу.

Использование в версии:

Доступен, начиная с версии 8.3.3.

Методическая информация

Практические примеры

Проверить прокрутку сжимаемой группы на своих пояснениях

Двадцать учебных строк создают содержимое выше группы. Прокрутка требует также подходящего режима формы и вертикального растяжения.

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

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

Подготовка

  1. Создайте отдельную внешнюю обработку с новой пустой управляемой основной формой. Каждый урок — свой полный модуль и отдельная копия формы.

  2. Не создавайте вручную УчебноеНазвание, УчебнаяГруппа, ПолеУчебногоНазвания и УчебнаяНадпись: код добавляет их сам.

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

  4. Откройте сохранённую учебную EPF в настольном тонком/толстом или веб-клиенте. Данные принадлежат только этой форме; справочники, документы и регистры не используются.

  5. Внешняя кнопка находится вне учебной группы и остаётся доступной для обратного переключения. Код не обходит ограничения на внешние обработки.

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

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

&НаКлиенте
Процедура УчебноеДействие(Команда)
    Сообщить(Элементы.УчебнаяГруппа.ВертикальнаяПрокруткаПриСжатии);
    Сообщить(Элементы.УчебнаяГруппа.РастягиватьПоВертикали);
    Сообщить(ЭтаФорма.УчебноеНазвание);
КонецПроцедуры

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

  1. У формы задан ИспользоватьПриНеобходимости; без подходящего значения ВертикальнаяПрокрутка нельзя требовать работу свойства группы.

  2. Группа растягивается по вертикали, желаемая высота 6 — единицы формы, не пиксели.

  3. Свойство 8.5.1 включается на сервере. Двадцать декораций содержат собственные строки без чтения базы.

  4. Сузьте и уменьшите окно, чтобы содержимое реально превышало выделенную высоту; проверьте возможность дойти до строки 20.

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

  1. Нажатие выводит Истина, Истина, Книга или ваш текст.

  2. В интерфейсе Такси/Версия8_5 при реальном сжатии проверьте прокрутку до последнего пояснения; на большом окне прокрутка может не понадобиться.

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

Подготовлены условия прокрутки, а не обещана полоса при любых размерах.

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

  1. Неопределено у свойства означает автоматическое определение и трактуется как Ложь.

  2. Настройка интерфейса не измеряет производительность обработки.

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

Сжать страницу с двадцатью собственными пояснениями и проверить прокрутку

ВертикальнаяПрокруткаПриСжатии требует растяжения страницы и подходящего режима прокрутки всей формы.

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

Полный модуль своей новой управляемой формы внешней обработки. Данные только в памяти формы.

Подготовка

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

  2. В событии формы ПриСозданииНаСервере назначьте одноимённый обработчик. Не создавайте вручную реквизиты НазваниеТовара, Количество, Цена, Сумма, две страницы и команду: код создаёт их сам.

  3. Первая страница содержит вымышленную Книгу: количество 3, цена 250, сумма 750. Это только значения формы, не номенклатура, цены, документ или регистр базы.

  4. Другая страница с собственным пояснением нужна для ручного переключения вкладок. Команда находится вне страниц и не скрывается при переключении.

  5. Используйте настольный тонкий/толстый клиент 8.5.1.1343. Сохранённые свойства не доказывают видимый эффект во всех темах и интерфейсах; размеры окна и внешний вид проверяются вручную.

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Реквизиты = Новый Массив;
    Реквизиты.Добавить(Новый РеквизитФормы("НазваниеТовара", Новый ОписаниеТипов("Строка")));
    Для Каждого Имя Из СтрРазделить("Количество,Цена,Сумма", ",") Цикл
        Реквизиты.Добавить(Новый РеквизитФормы(Имя, Новый ОписаниеТипов("Число")));
    КонецЦикла;
    ЭтаФорма.ИзменитьРеквизиты(Реквизиты);
    НазваниеТовара = "Книга";
    Количество = 3;
    Цена = 250;
    Сумма = Количество * Цена;
    Страницы = Элементы.Добавить("УчебныеСтраницы", Тип("ГруппаФормы"));
    Страницы.Вид = ВидГруппыФормы.Страницы;
    Страница = Элементы.Добавить("УчебнаяСтраницаКниги", Тип("ГруппаФормы"), Страницы);
    Страница.Вид = ВидГруппыФормы.Страница;
    Страница.Заголовок = "Собственная Книга";
    Другая = Элементы.Добавить("УчебнаяСтраницаПояснения", Тип("ГруппаФормы"), Страницы);
    Другая.Вид = ВидГруппыФормы.Страница;
    Другая.Заголовок = "Что меняется";
    Пояснение = Элементы.Добавить("УчебноеПояснение", Тип("ДекорацияФормы"), Другая);
    Пояснение.Вид = ВидДекорацииФормы.Надпись;
    Пояснение.Заголовок = "Меняются только элементы и значения собственной формы. Записи в базе нет.";
    Для Каждого Имя Из СтрРазделить("НазваниеТовара,Количество,Цена,Сумма", ",") Цикл
        Поле = Элементы.Добавить("УчебноеПоле" + Имя, Тип("ПолеФормы"), Страница);
        Если Имя = "Сумма" Тогда
            Поле.Вид = ВидПоляФормы.ПолеНадписи;
        Иначе
            Поле.Вид = ВидПоляФормы.ПолеВвода;
        КонецЕсли;
        Поле.ПутьКДанным = Имя;
        Поле.Заголовок = Имя;
        Поле.ПоложениеЗаголовка = ПоложениеЗаголовкаЭлементаФормы.Авто;
    КонецЦикла;
    Страницы.ТекущаяСтраница = Страница;
    ЭтаФорма.ВертикальнаяПрокрутка = ВертикальнаяПрокруткаФормы.ИспользоватьПриНеобходимости;
    Страница.РастягиватьПоВертикали = Истина;
    Страница.Высота = 6;
    Страница.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная;
    Страница.ВертикальнаяПрокруткаПриСжатии = Истина;
    Для Номер = 1 По 20 Цикл
        Надпись = Элементы.Добавить("УчебнаяСтрокаСтраницы" + Строка(Номер), Тип("ДекорацияФормы"), Страница);
        Надпись.Вид = ВидДекорацииФормы.Надпись;
        Надпись.Заголовок = "Собственное пояснение страницы " + Строка(Номер);
    КонецЦикла;

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

КонецПроцедуры

&НаКлиенте
Процедура УчебноеДействие(Команда)
    Сообщить(ЭтаФорма.ВертикальнаяПрокрутка = ВертикальнаяПрокруткаФормы.ИспользоватьПриНеобходимости);
    Сообщить(Элементы.УчебнаяСтраницаКниги.РастягиватьПоВертикали);
    Сообщить(Элементы.УчебнаяСтраницаКниги.ВертикальнаяПрокруткаПриСжатии = Истина);
    Сообщить(Элементы.УчебнаяСтраницаКниги.Высота = 6);
    Сообщить("Попробуйте дойти прокруткой до собственного пояснения 20");
КонецПроцедуры

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

  1. У формы разрешить вертикальную прокрутку при необходимости; одно свойство дочерней страницы без этого недостаточно.

  2. Страница растягивается по вертикали, желаемая высота 6 строк; это не шесть пикселей.

  3. Создать двадцать собственных надписей внутри этой страницы ниже четырёх учебных полей.

  4. Уменьшить высоту окна, чтобы содержимое реально превысило выделенное место. Проверить достижимость двадцатой надписи.

  5. Вторая страница и внешняя команда остаются доступными, данные первой страницы не теряются.

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

  1. Команда выводит четыре Истина и подсказку о последнем пояснении.

  2. При реальном сжатии вручную проверьте прокрутку до пояснения 20. На большом окне полоса может не понадобиться — это не ошибка.

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

Условия прокрутки подготовлены на реальном длинном наполнении собственной страницы.

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

  1. Неопределено у ВертикальнаяПрокруткаПриСжатии определяется автоматически и интерпретируется как Ложь.

  2. Нельзя обещать видимую полосу при любых размерах окна.

  3. Это прокрутка страницы интерфейса, а не загрузка следующей страницы данных из базы.

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

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

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

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

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