ПолеФормы.ОграничениеТипа

Свойства · TypeRestriction

Тип: ОписаниеТипов. Ограничивает состав типов вводимых значений. Может использоваться, когда данные, с которыми связан элемент управления, имеют более широкий состав типов, чем необходимо предоставить пользователю для ввода в конкретной ситуации.

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

ПолеФормы.ОграничениеТипа (FormField.TypeRestriction)

ПолеФормы (FormField)

ОграничениеТипа (TypeRestriction)

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

Использование:
Чтение и запись.
Описание:
Тип: ОписаниеТипов.
Ограничивает состав типов вводимых значений. Может использоваться, когда данные, с которыми связан элемент управления, имеют более широкий состав типов, чем необходимо предоставить пользователю для ввода в конкретной ситуации.
Доступность:

Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.

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

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

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

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

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

Реквизит допускает Строка/Число, поле разрешает ввод только строки. Показано отличие интерфейсного ОграничениеТипа от типа самого реквизита.

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

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

Подготовка

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

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

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

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

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

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

&НаКлиенте
Процедура УчебноеДействие(Команда)
    Если ТипЗнч(ЗначениеПримера) <> Тип("Строка") Тогда
        Сообщить("Для этой команды нужна строка, а не число");
        Возврат;
    КонецЕсли;
    Если ПустаяСтрока(ЗначениеПримера) Тогда
        Сообщить("Заполните собственное учебное название");
        Возврат;
    КонецЕсли;
    Сообщить("Допустимое название: " + ЗначениеПримера);
КонецПроцедуры

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

  1. При создании реквизита задаём составной тип Строка,Число, а начальное значение Книга.

  2. ОграничениеТипа поля сужает доступный пользователю ввод до строки, не переписывает схему реквизита.

  3. Команда отдельно проверяет фактический тип перед использованием строковых операций.

  4. Пустую строку отклоняем отдельным правилом. Интерфейсное ограничение не объявляется полной валидацией данных.

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

  1. Исходная Книга проходит команду; пустая строка даёт просьбу заполнить название.

  2. В отдельной копии измените начальное значение в коде на 42: независимо от его отображения команда отклоняет числовой тип.

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

Разделены тип реквизита, ограничение поля и проверка команды.

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

  1. Сужение поля не заменяет проверки при программном присваивании или серверной записи.

  2. Нельзя расширить этим свойством тип за пределы допустимого типа реквизита.

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

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

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

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

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