Тип: Булево. Определяет возможность ввода пустых множественных значений. По умолчанию - Ложь. Истина – интерактивный ввод пустых множественных значений разрешен: Добавляется пункт контекстного меню "Добавить пустое значение", Свойство КнопкаОткрытия принимает значение Истина. Пункт контекстного меню "Добавить пустое значение" отображается недоступным, если пустое значение выбранного типа уже присутствует в списке (в коллекции), либо для выбранного типа отсутствует пустое значение. Ложь – интерактивный ввод пустых множественных значений запрещен: При добавлении в результате интерактивных действий пустые значения игнорируется. Проверка на пустые значения выполняется после вызова обработчика ДобавлениеМножественныхЗначений, перед добавлением значения. Если проверка не проходит, то отображается оповещение пользователю с текстом "Пустое значение не может быть добавлено". Запрет ввода пустых множественных значений также распространяется на работу стандартного диалога редактирования списка значений, который вызывается при нажатии на кнопку "Открыть" или сочетания клавиш Ctrl+Shift+F4, если в поле ввода содержит данные типа СписокЗначений.
Полное описание, параметры и ограничения
Расширение поля формы для поля ввода.РазрешитьВводПустыхМножественныхЗначений (Form field extension for a text box.AllowInputEmptyMultipleValues)
Расширение поля формы для поля ввода (Form field extension for a text box)
РазрешитьВводПустыхМножественныхЗначений (AllowInputEmptyMultipleValues)
Доступен, начиная с версии 8.3.23.
Использование:
Чтение и запись.
Описание:
Тип: Булево.
Определяет возможность ввода пустых множественных значений.
По умолчанию - Ложь.
Истина – интерактивный ввод пустых множественных значений разрешен:
Добавляется пункт контекстного меню "Добавить пустое значение",
Свойство КнопкаОткрытия принимает значение Истина.
Пункт контекстного меню "Добавить пустое значение" отображается недоступным, если пустое значение выбранного типа уже присутствует в списке (в коллекции), либо для выбранного типа отсутствует пустое значение.
Ложь – интерактивный ввод пустых множественных значений запрещен:
При добавлении в результате интерактивных действий пустые значения игнорируется. Проверка на пустые значения выполняется после вызова обработчика ДобавлениеМножественныхЗначений, перед добавлением значения. Если проверка не проходит, то отображается оповещение пользователю с текстом "Пустое значение не может быть добавлено".
Запрет ввода пустых множественных значений также распространяется на работу стандартного диалога редактирования списка значений, который вызывается при нажатии на кнопку "Открыть" или сочетания клавиш Ctrl+Shift+F4, если в поле ввода содержит данные типа СписокЗначений.
Доступность:
Тонкий клиент, веб-клиент, сервер, толстый клиент.
Использование в версии:
Доступен, начиная с версии 8.3.23.
Методическая информация
Практические примеры
Настроить две метки и правила интерактивного ввода
Книга и Ручка находятся в собственном СписокЗначений. Показываем флажки выбора, запрещаем интерактивные повторы и пустые значения.
Где и как запускать
Модуль новой управляемой формы учебной внешней обработки. Код содержит готовые процедуры с директивами; вставляйте на уровне модуля, не внутрь другого обработчика. Каждую задачу запускайте в отдельной копии формы.
Подготовка
Создайте отдельную учебную внешнюю обработку с пустой управляемой основной формой. Каждую задачу запускайте в своей копии формы.
Не добавляйте вручную реквизит ЗначениеПримера, поле ПолеПримера и команду УчебноеДействие: их создаст код.
В свойствах формы → События свяжите ПриСозданииНаСервере с одноимённой процедурой. Вставьте весь модуль, включая клиентские и серверные процедуры.
Сохраните учебную EPF и откройте через Файл → Открыть в тонком или толстом клиенте Windows. Рабочие данные не читаются и не записываются.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Новые = Новый Массив;
ТипРеквизита = Новый ОписаниеТипов("СписокЗначений");
Новые.Добавить(Новый РеквизитФормы("ЗначениеПримера", ТипРеквизита));
ЭтаФорма.ИзменитьРеквизиты(Новые);
ЭтаФорма.ЗначениеПримера = Новый СписокЗначений;
Поле = Элементы.Добавить("ПолеПримера", Тип("ПолеФормы"));
Поле.Вид = ВидПоляФормы.ПолеВвода;
Поле.ПутьКДанным = "ЗначениеПримера";
Поле.Заголовок = "Учебные метки";
ЭтаФорма.ЗначениеПримера.Добавить("book", "Книга");
ЭтаФорма.ЗначениеПримера.Добавить("pen", "Ручка");
Поле.РасширенноеРедактированиеМножественныхЗначений = Истина;
Поле.РазрешитьДублированиеМножественныхЗначений = Ложь;
Поле.РазрешитьВводПустыхМножественныхЗначений = Ложь;
Поле.ГиперссылкаМножественныхЗначений = Ложь;
Поле.КнопкаОткрытия = Истина;
Поле.Ширина = 60;
Поле.СписокВыбора.Добавить("book", "Книга");
Поле.СписокВыбора.Добавить("pen", "Ручка");
Поле.СписокВыбора.Добавить("pencil", "Карандаш");
Поле.КнопкаВыпадающегоСписка = Истина;
Поле.ОтображатьФлажкиВВыпадающемСпискеПриВводеМножественныхЗначений = Истина;
КомандаДействия = ЭтаФорма.Команды.Добавить("УчебноеДействие");
КомандаДействия.Действие = "УчебноеДействие";
КомандаДействия.Заголовок = "Проверить учебные метки";
КомандаДействия.Подсказка = "Действие только над данными учебной формы";
КомандаДействия.ИзменяетСохраняемыеДанные = Ложь;
Кнопка = Элементы.Добавить("КнопкаУчебноеДействие", Тип("КнопкаФормы"));
Кнопка.ИмяКоманды = КомандаДействия.Имя;
Кнопка.Заголовок = КомандаДействия.Заголовок;
КонецПроцедуры
&НаКлиенте
Процедура УчебноеДействие(Команда)
Если ЗначениеПримера.Количество() <> 2 Тогда
Сообщить("Для проверки исходных двух меток переоткройте свою форму");
Возврат;
КонецЕсли;
Книга = ЗначениеПримера.НайтиПоЗначению("book");
Ручка = ЗначениеПримера.НайтиПоЗначению("pen");
Если Книга = Неопределено Или Ручка = Неопределено Тогда
ВызватьИсключение "Не найдены две собственные метки book и pen";
КонецЕсли;
Поле = Элементы.ПолеПримера;
Сообщить(Книга.Представление = "Книга" И Ручка.Представление = "Ручка");
Сообщить(Не Поле.РазрешитьДублированиеМножественныхЗначений);
Сообщить(Не Поле.РазрешитьВводПустыхМножественныхЗначений);
Сообщить(Поле.ОтображатьФлажкиВВыпадающемСпискеПриВводеМножественныхЗначений);
Сообщить(Поле.СписокВыбора.Количество() = 3);
КонецПроцедуры
Разбор по шагам
Тип реквизита — СписокЗначений; поле автоматически работает с множественными значениями.
book и pen — значения, Книга и Ручка — представления. Карандаш пока есть только в списке возможного выбора.
РасширенноеРедактированиеМножественныхЗначений разрешает ввод непосредственно внутри поля.
Запрет дубликатов проверяет интерактивное добавление и стандартный диалог редактирования списка, а не произвольный серверный код.
Команда проверяет исходные две метки и настройки. Если пользователь изменил набор, предлагается переоткрыть учебную форму.
Как проверить результат
На исходных двух метках пять сообщений Истина.
В выпадающем списке видны флажки; попробуйте добавить Карандаш и затем вернуть исходные две метки.
Повторное интерактивное добавление Книга не должно создавать второй book.
Ожидаемый результат
Множественные значения и варианты выбора показаны как два разных списка.
На что обратить внимание
Свойства множественных значений требуют платформу не ниже 8.3.23; урок предназначен для установленной 8.5.1.
Не принимайте запрет дублирования в интерфейсе за универсальную серверную проверку списка.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Выделить и снять выделение меток по идентификаторам
Получаем идентификаторы конкретных Книга и Ручка. Меняем только выделение, не значения, порядок или количество меток.
Где и как запускать
Модуль новой управляемой формы учебной внешней обработки. Код содержит готовые процедуры с директивами; вставляйте на уровне модуля, не внутрь другого обработчика. Каждую задачу запускайте в отдельной копии формы.
Подготовка
Создайте отдельную учебную внешнюю обработку с пустой управляемой основной формой. Каждую задачу запускайте в своей копии формы.
Не добавляйте вручную реквизит ЗначениеПримера, поле ПолеПримера и команду УчебноеДействие: их создаст код.
В свойствах формы → События свяжите ПриСозданииНаСервере с одноимённой процедурой. Вставьте весь модуль, включая клиентские и серверные процедуры.
Сохраните учебную EPF и откройте через Файл → Открыть в тонком или толстом клиенте Windows. Рабочие данные не читаются и не записываются.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Новые = Новый Массив;
ТипРеквизита = Новый ОписаниеТипов("СписокЗначений");
Новые.Добавить(Новый РеквизитФормы("ЗначениеПримера", ТипРеквизита));
ЭтаФорма.ИзменитьРеквизиты(Новые);
ЭтаФорма.ЗначениеПримера = Новый СписокЗначений;
Поле = Элементы.Добавить("ПолеПримера", Тип("ПолеФормы"));
Поле.Вид = ВидПоляФормы.ПолеВвода;
Поле.ПутьКДанным = "ЗначениеПримера";
Поле.Заголовок = "Выделение учебных меток";
ЭтаФорма.ЗначениеПримера.Добавить("book", "Книга");
ЭтаФорма.ЗначениеПримера.Добавить("pen", "Ручка");
Поле.РасширенноеРедактированиеМножественныхЗначений = Истина;
Поле.РазрешитьДублированиеМножественныхЗначений = Ложь;
Поле.РазрешитьВводПустыхМножественныхЗначений = Ложь;
Поле.ГиперссылкаМножественныхЗначений = Ложь;
Поле.КнопкаОткрытия = Истина;
Поле.Ширина = 60;
КомандаДействия = ЭтаФорма.Команды.Добавить("УчебноеДействие");
КомандаДействия.Действие = "УчебноеДействие";
КомандаДействия.Заголовок = "Проверить выделение";
КомандаДействия.Подсказка = "Действие только над данными учебной формы";
КомандаДействия.ИзменяетСохраняемыеДанные = Ложь;
Кнопка = Элементы.Добавить("КнопкаУчебноеДействие", Тип("КнопкаФормы"));
Кнопка.ИмяКоманды = КомандаДействия.Имя;
Кнопка.Заголовок = КомандаДействия.Заголовок;
КонецПроцедуры
&НаКлиенте
Процедура УчебноеДействие(Команда)
Если ЗначениеПримера.Количество() <> 2 Тогда
Сообщить("Для проверки исходных двух меток переоткройте свою форму");
Возврат;
КонецЕсли;
Книга = ЗначениеПримера.НайтиПоЗначению("book");
Ручка = ЗначениеПримера.НайтиПоЗначению("pen");
Если Книга = Неопределено Или Ручка = Неопределено Тогда
ВызватьИсключение "Не найдены две собственные метки book и pen";
КонецЕсли;
Поле = Элементы.ПолеПримера;
ИдентификаторКниги = Книга.ПолучитьИдентификатор();
ИдентификаторРучки = Ручка.ПолучитьИдентификатор();
Идентификаторы = Новый Массив;
Идентификаторы.Добавить(ИдентификаторКниги);
Поле.УстановитьВыделенныеМножественныеЗначения(Идентификаторы);
Выделенные = Поле.ПолучитьВыделенныеМножественныеЗначения();
Сообщить(Выделенные.Количество() = 1 И Выделенные.Найти(ИдентификаторКниги) <> Неопределено);
Идентификаторы.Очистить();
Идентификаторы.Добавить(ИдентификаторРучки);
Поле.УстановитьВыделенныеМножественныеЗначения(Идентификаторы);
Выделенные = Поле.ПолучитьВыделенныеМножественныеЗначения();
Сообщить(Выделенные.Количество() = 1 И Выделенные.Найти(ИдентификаторРучки) <> Неопределено);
Идентификаторы.Очистить();
Поле.УстановитьВыделенныеМножественныеЗначения(Идентификаторы);
Сообщить(Поле.ПолучитьВыделенныеМножественныеЗначения().Количество() = 0);
Сообщить(ЗначениеПримера.Количество() = 2);
Сообщить(Книга.Значение = "book" И Ручка.Значение = "pen");
КонецПроцедуры
Разбор по шагам
Находим элементы по значению и проверяем результат до получения идентификаторов.
ПолучитьИдентификатор возвращает идентификатор элемента, не индекс 0 или 1.
УстановитьВыделенныеМножественныеЗначения получает массив числовых идентификаторов.
ПолучитьВыделенныеМножественныеЗначения проверяется через Найти: порядок возвращённого массива не предполагается.
Пустой массив снимает выделение. Исходные значения и количество остаются прежними.
Как проверить результат
Пять сообщений Истина.
После команды ни одна метка не выделена, обе по-прежнему присутствуют.
Ожидаемый результат
Безопасно проверены установка, чтение и сброс выделения множественных значений.
На что обратить внимание
Методы выделения доступны Windows/веб-клиенту; не переносите клиентский обработчик в мобильный клиент без проверки доступности.
После удаления элемента его старый идентификатор нельзя использовать как идентификатор нового элемента.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.