Расширение поля формы для поля ввода.АвтоВыборНезаполненного

Свойства · AutoChoiceIncomplete

Тип: Булево, Неопределено. Указывает необходимость предоставления выбора незаполненного значения в поле ввода. Если значение свойства Неопределено (в Конфигураторе выбрано значение Авто), то при автоматическом определении значения используются текущие значения свойств АвтоОтметкаНезаполненного и ОтметкаНезаполненного.

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

Расширение поля формы для поля ввода.АвтоВыборНезаполненного (Form field extension for a text box.AutoChoiceIncomplete)

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

АвтоВыборНезаполненного (AutoChoiceIncomplete)

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

Использование:
Чтение и запись.
Описание:
Тип: Булево, Неопределено.
Указывает необходимость предоставления выбора незаполненного значения в поле ввода. Если значение свойства Неопределено (в Конфигураторе выбрано значение Авто), то при автоматическом определении значения используются текущие значения свойств АвтоОтметкаНезаполненного и ОтметкаНезаполненного.
Доступность:

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

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

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

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

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

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

Пользователь выбирает Черновик/Опубликован/Закрыт, а реквизит хранит 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. Красная отметка обязательности не запускает проверку вашего внешнего обмена автоматически.

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

Настроить быстрый выбор статуса без истории

Собственный список содержит draft/Черновик и published/Опубликован. Выбор, история и место кнопки настраиваются независимо.

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

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

Подготовка

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

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

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

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

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

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

&НаКлиенте
Процедура УчебноеДействие(Команда)
    Поле = Элементы.ПолеПримера;
    Выбранный = Поле.СписокВыбора.НайтиПоЗначению(ЗначениеПримера);
    Если Выбранный = Неопределено Тогда
        Сообщить("Значение не входит в собственный список разрешённых статусов");
        Возврат;
    КонецЕсли;
    Сообщить(СтрШаблон("Значение %1; представление %2", Выбранный.Значение, Выбранный.Представление));
    Сообщить(Поле.БыстрыйВыбор);
    Сообщить(Поле.ИсторияВыбораПриВводе = ИсторияВыбораПриВводе.НеИспользовать);
    Сообщить(Не Поле.АвтоВыборНезаполненного);
КонецПроцедуры

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

  1. СписокВыбора содержит собственные значения, а не запрос к справочнику.

  2. РежимВыбораИзСписка отображает представления списка; реквизит сохраняет draft либо published.

  3. БыстрыйВыбор управляет выпадающим выбором, ИсторияВыбораПриВводе выключает её использование для этого поля.

  4. Автоматический выбор незаполненного выключен отдельно от отображения кнопок.

  5. ЗаголовокКнопкиВыбора — свойство интерфейса 8.5: в самом поле используется как подсказка кнопки.

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

  1. На открытии диагностика draft / Черновик и три Истина.

  2. После выбора Опубликован диагностика published / Опубликован.

  3. Для значения вне списка команда прекращается с объяснением.

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

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

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

  1. Заголовок кнопки применяется только в интерфейсе Версия 8.5; в другом режиме внешний вид может отличаться.

  2. Отключение истории поля не означает стирание всех ранее сохранённых данных пользователя.

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

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

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

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

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