Расширение поля формы для поля ввода.ОтметкаОбязательногоЗаполнения

Свойства · MarkRequiredComplete

Тип: Булево, Неопределено. Указывает, нужно ли у поля отображать отметку обязательного заполнения (в виде красной звездочки) или нет. Если Истина, то отметка обязательного заполнения будет отображаться, иначе — не будет. Если Неопределено, то определяется значением свойства ПроверкаЗаполнения реквизита, с которым связано поле. Если указано значение ВыдаватьОшибку, то это эквивалентно значению Истина.

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

Расширение поля формы для поля ввода.ОтметкаОбязательногоЗаполнения (Form field extension for a text box.MarkRequiredComplete)

Расширение поля формы для поля ввода (Form field extension for a text box)

ОтметкаОбязательногоЗаполнения (MarkRequiredComplete)

Применяется только в интерфейсе «Версия 8.5»

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

Использование:
Чтение и запись.
Описание:
Тип: Булево, Неопределено.
Указывает, нужно ли у поля отображать отметку обязательного заполнения (в виде красной звездочки) или нет.
Если Истина, то отметка обязательного заполнения будет отображаться, иначе — не будет.
Если Неопределено, то определяется значением свойства ПроверкаЗаполнения реквизита, с которым связано поле. Если указано значение ВыдаватьОшибку, то это эквивалентно значению Истина.
Доступность:

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

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

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

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

Применяется только в интерфейсе «Версия 8.5»

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

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

Разделить маску ввода кода и настоящую проверку формата

Маска UUU-999 допускает три буквы или цифры в верхнем регистре и три цифры. Правило нашего кода строже: ровно три латинские буквы и три цифры.

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

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

Подготовка

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

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

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

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

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

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

&НаКлиенте
Процедура УчебноеДействие(Команда)
    Если Не КодПодходитКонтракту(ЗначениеПримера) Тогда
        Сообщить("Нужны три латинские буквы A–Z, дефис и три цифры, например ABC-123.");
        Возврат;
    КонецЕсли;
    Сообщить("Допустимый учебный код: " + ЗначениеПримера);
КонецПроцедуры

&НаСервереБезКонтекста
Функция КодПодходитКонтракту(Текст)
    Возврат СтрПодобнаПоРегулярномуВыражению(Текст, "^[A-Z]{3}-[0-9]{3}$", Ложь, Ложь);
КонецФункции

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

  1. Маска описывает удобство интерактивного ввода: U — алфавитно-цифровой символ с переводом в верхний регистр, 9 — цифра.

  2. U допускает также цифры и нелатинские буквы, поэтому маска не соответствует нашему бизнес-правилу полностью.

  3. Клиентская команда передаёт фактическую строку в отдельную серверную функцию.

  4. Регулярное выражение с якорями проверяет всю строку и только латинские A–Z. Проверка регистрозависима.

  5. При несоответствии обработка прекращается; строка не исправляется и не отправляется во внешний сервис.

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

  1. ABC-123 проходит проверку.

  2. 123-456 подходит маске, но не бизнес-проверке; выводится объяснение.

  3. Кириллические АБВ-123 также должны быть отклонены строгим латинским контрактом.

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

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

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

  1. Синтаксис Маска 1С не является регулярным выражением.

  2. Латинская A и похожая кириллическая А — разные символы; не заменяйте их автоматически без согласованного правила.

  3. При импорте через сервер интерактивная маска не применяется, серверная проверка остаётся обязательной.

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

Выбрать статус из списка и отличить значение от представления

Пользователь выбирает Черновик/Опубликован/Закрыт, а реквизит хранит draft/published/closed. Список задаётся полностью в коде формы.

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

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

Подготовка

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

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

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

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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Новые = Новый Массив;
    ТипРеквизита = Новый ОписаниеТипов("Строка", , Новый КвалификаторыСтроки(24));
    Новые.Добавить(Новый РеквизитФормы("ЗначениеПримера", ТипРеквизита));
    ЭтаФорма.ИзменитьРеквизиты(Новые);
    ЭтаФорма.ЗначениеПримера = "draft";
    Поле = Элементы.Добавить("ПолеПримера", Тип("ПолеФормы"));
    Поле.Вид = ВидПоляФормы.ПолеВвода;
    Поле.ПутьКДанным = "ЗначениеПримера";
    Поле.Заголовок = "Статус учебной карточки";
    Поле.СписокВыбора.Добавить("draft", "Черновик");
    Поле.СписокВыбора.Добавить("published", "Опубликован");
    Поле.СписокВыбора.Добавить("closed", "Закрыт");
    Поле.РежимВыбораИзСписка = Истина;
    Поле.РедактированиеТекста = Ложь;
    Поле.КнопкаСпискаВыбора = Истина;
    Поле.КнопкаВыпадающегоСписка = Истина;
    Поле.КнопкаОчистки = Истина;
    Поле.ВысотаСпискаВыбора = 3;
    Поле.ШиринаВыпадающегоСписка = 24;
    Поле.ОтметкаОбязательногоЗаполнения = Истина;
    Поле.АвтоВыборНезаполненного = Ложь;
    Поле.АвтоОтметкаНезаполненного = Истина;

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

&НаКлиенте
Процедура УчебноеДействие(Команда)
    Если ЗначениеПримера <> "draft" И ЗначениеПримера <> "published"
        И ЗначениеПримера <> "closed" Тогда
        Сообщить("Выберите один из трёх статусов. Пустой/неизвестный статус не обработан.");
        Возврат;
    КонецЕсли;
    Сообщить("Хранимый код статуса: " + ЗначениеПримера);
    Сообщить("Карточка в базе или на сайте не изменена");
КонецПроцедуры

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

  1. СписокВыбора — существующий СписокЗначений поля. Его наполняют методом Добавить; присваивать новую коллекцию свойству не нужно.

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

  3. РежимВыбораИзСписка и запрет редактирования текста направляют пользователя к подготовленным вариантам.

  4. КнопкаОчистки оставлена для демонстрации отсутствующего значения; команда в этом случае отказывается от обработки.

  5. Отметка обязательного заполнения визуальна. Код явно проверяет все допустимые значения до любого последующего обмена.

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

  1. Выберите Опубликован, затем кнопку: выводится код published, а не слово Опубликован.

  2. После очистки выводится просьба выбрать статус; значение не отправляется в сервис.

  3. В списке три варианта и нет автоматического назначения первого при пустом поле.

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

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

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

  1. Это учебный набор, не реальные состояния API Авито. Перед интеграцией сверяйте контракт сервиса.

  2. Представление может меняться или переводиться, поэтому обмен должен использовать код, а не подпись.

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

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

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

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

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

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