Тип: Строка. Содержит путь к реквизиту, содержащему значение из множественного значения.
Полное описание, параметры и ограничения
Расширение поля формы для поля ввода.ПутьКДаннымЗначенияМножественногоЗначения (Form field extension for a text box.MultipleValueValueDataPath)
Расширение поля формы для поля ввода (Form field extension for a text box)
ПутьКДаннымЗначенияМножественногоЗначения (MultipleValueValueDataPath)
Доступен, начиная с версии 8.3.23.
Использование:
Чтение и запись.
Описание:
Тип: Строка.
Содержит путь к реквизиту, содержащему значение из множественного значения.
Доступность:
Сервер.
См. также:
Расширение поля формы для поля ввода, свойство ПутьКДаннымПредставленияМножественногоЗначения
Расширение поля формы для поля ввода, свойство ПутьКДаннымКартинкиМножественногоЗначения
Использование в версии:
Доступен, начиная с версии 8.3.23.
Методическая информация
Практические примеры
Показать картинку множественных значений по числовому индексу
Две строки собственных меток хранят отдельные значение, подпись и индекс картинки. Индекс 0 обращается к реальной первой картинке своего библиотечного ресурса, не к номеру строки формы.
Где и как запускать
Полный модуль своей управляемой формы в новой конфигурации УчебныйВыборВвода85. Настольный тонкий клиент Windows; типовые данные и проверка ссылок читаются на сервере. Запуск в 1С не проверен.
Подготовка
Создайте с нуля отдельную конфигурацию УчебныйВыборВвода85: управляемое приложение, Такси, язык Русский, платформа 8.5.1.1343, без расширений, общих реквизитов-разделителей и прикладных обработчиков. Не используйте рабочую базу.
Создайте иерархический справочник УчебныеКниги85, иерархия групп и элементов, код Строка длиной 10 без автонумерации, наименование Строка 100. Добавьте реквизиты МеткаСтенда (Строка 30, для группы и элемента) и Секция (Строка 30, для элемента).
В своём новом стенде вручную заведите группы BOOKGROUP/Книги и PENGROUP/Канцелярия. В первой группе заведите BOOK/Книга и ALBUM/Альбом с Секция = Книги, во второй PEN/Ручка с Секция = Канцелярия. У всех этих собственных записей МеткаСтенда = owned-input85. Других записей не создавайте.
Каждый урок — отдельная новая управляемая форма внешней обработки. Назначьте ПриСозданииНаСервере, вставьте полный модуль. Реквизиты, поле и учебную команду код создаёт сам: вручную одноимённые элементы не добавляйте.
После F7 обновите только собственную конфигурацию. Запускайте настольный тонкий клиент Windows. Уроки не выполнялись: runtimeVerifiedScenarios=0, фактическое отображение и стандартный выбор ещё требуют отдельного ручного теста.
Будущий ручной опыт читает только свои подготовленные записи и меняет данные формы в памяти. Код не создаёт, не записывает и не удаляет объекты базы или файлы, не вызывает внешнюю сеть, печать или привилегированный режим.
Коды BOOK, ALBUM, PEN и метка owned-input85 — конкретные значения подготовленного собственного стенда, не имена товаров вашей конфигурации. Если подготовка не совпала, исправляйте только свой стенд, не отключайте защиту для production.
Для этого урока импортируйте собственный owned-book-marker-32.png из lesson-assets руководства в Общие → Общие картинки → УчебныйМаркер. PNG содержит одну картинку 32×32, а не два булевых значка.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Метаданные.ОбщиеРеквизиты.Количество() <> 0 Тогда
ВызватьИсключение "Нужен только собственный новый неразделённый стенд УчебныйВыборВвода85";
КонецЕсли;
Если Метаданные.ОбщиеКартинки.Найти("УчебныйМаркер") = Неопределено Тогда
ВызватьИсключение "Импортируйте свою общую картинку УчебныйМаркер";
КонецЕсли;
Новые = Новый Массив;
Новые.Добавить(Новый РеквизитФормы("Метки", Новый ОписаниеТипов("ТаблицаЗначений")));
Новые.Добавить(Новый РеквизитФормы("Значение", Новый ОписаниеТипов("Строка"), "Метки"));
Новые.Добавить(Новый РеквизитФормы("Представление", Новый ОписаниеТипов("Строка"), "Метки"));
Новые.Добавить(Новый РеквизитФормы("ИндексКартинки", Новый ОписаниеТипов("Число"), "Метки"));
ЭтаФорма.ИзменитьРеквизиты(Новые);
Данные = Новый ТаблицаЗначений;
Данные.Колонки.Добавить("Значение", Новый ОписаниеТипов("Строка"));
Данные.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
Данные.Колонки.Добавить("ИндексКартинки", Новый ОписаниеТипов("Число"));
СтрокаКниги = Данные.Добавить();
СтрокаКниги.Значение = "book";
СтрокаКниги.Представление = "Книга";
СтрокаКниги.ИндексКартинки = 0;
СтрокаРучки = Данные.Добавить();
СтрокаРучки.Значение = "pen";
СтрокаРучки.Представление = "Ручка";
СтрокаРучки.ИндексКартинки = 0;
ЭтаФорма.ЗначениеВРеквизитФормы(Данные, "Метки");
Поле = Элементы.Добавить("ПолеУчебныхМеток", Тип("ПолеФормы"));
Поле.Вид = ВидПоляФормы.ПолеВвода;
Поле.ПутьКДанным = "Метки";
Поле.Заголовок = "Собственные метки с общей картинкой";
Поле.ПутьКДаннымЗначенияМножественногоЗначения = "Метки.Значение";
Поле.ПутьКДаннымПредставленияМножественногоЗначения = "Метки.Представление";
Поле.ПутьКДаннымКартинкиМножественногоЗначения = "Метки.ИндексКартинки";
Поле.КартинкаМножественныхЗначений = БиблиотекаКартинок.УчебныйМаркер;
Поле.РасширенноеРедактированиеМножественныхЗначений = Ложь;
Поле.ГиперссылкаМножественныхЗначений = Ложь;
КомандаДействия = ЭтаФорма.Команды.Добавить("УчебноеДействие");
КомандаДействия.Действие = "УчебноеДействие";
КомандаДействия.Заголовок = "Проверить свой выбор";
КомандаДействия.Подсказка = "Действие только над данными учебной формы";
КомандаДействия.ИзменяетСохраняемыеДанные = Ложь;
Кнопка = Элементы.Добавить("КнопкаУчебноеДействие", Тип("КнопкаФормы"));
Кнопка.ИмяКоманды = КомандаДействия.Имя;
Кнопка.Заголовок = КомандаДействия.Заголовок;
КонецПроцедуры
&НаКлиенте
Процедура УчебноеДействие(Команда)
Если Метки.Количество() <> 2 Тогда
ВызватьИсключение "Ожидались две собственные строки меток";
КонецЕсли;
Книга = Метки[0];
Ручка = Метки[1];
Сообщить(Книга.Значение = "book" И Книга.Представление = "Книга");
Сообщить(Ручка.Значение = "pen" И Ручка.Представление = "Ручка");
Сообщить(Книга.ИндексКартинки = 0 И Ручка.ИндексКартинки = 0);
Сообщить("Числовой индекс 0 выбирает первую картинку собственного ресурса, а не строку меток");
КонецПроцедуры
Разбор по шагам
Свой PNG импортирован в общую картинку УчебныйМаркер. Она существует до начала урока, код не создаёт ресурс по одному имени и не скачивает изображение.
Сервер создаёт настоящую таблицу Значение/Представление/ИндексКартинки и переносит её в реквизит формы. Клиент видит ДанныеФормыКоллекция.
Все три пути множественных значений указывают на реально созданные колонки и присваиваются на сервере.
ИндексКартинки имеет тип Число. Поэтому КартинкаМножественныхЗначений предоставляет набор, в котором 0 обозначает первую собственную картинку.
У собственного ресурса одна картинка. Обе метки получают индекс 0; индекс 1 и вторую картинку урок не выдумывает.
Расширенное редактирование и гиперссылки выключены. Команда проверяет две реальные строки и индексы, не изменяя значения или библиотечный ресурс.
Как проверить результат
Три Истина и пояснение индекса. В поле видны подписи Книга и Ручка, не строковые коды book/pen.
Фактические обе картинки проверьте в своей теме. Числовое равенство не доказывает, что клиент их уже отрисовал.
Количество строк и собственные значения остаются прежними; ни один PNG не изменяется.
Ожидаемый результат
Использован реальный числовой источник картинки с одним допустимым библиотечным элементом и отдельной проверкой данных меток.
На что обратить внимание
Числовой индекс картинки не является идентификатором или индексом строки формы.
Для булевой колонки Истина использует индекс 0, Ложь — 1: чтобы показать оба состояния, понадобится реальный набор из двух картинок. Этот ресурс не выдаётся за такой набор.
Не присваивайте здесь случайную двоичную картинку вместо подготовленного библиотечного набора.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Показать метки из коллекции с разными значением и подписью
Две строки собственного реквизита ТаблицаЗначений отображаются как метки. Значение, подпись и встроенная картинка имеют разные пути к данным.
Где и как запускать
Модуль новой управляемой формы учебной внешней обработки. Код содержит готовые процедуры с директивами; вставляйте на уровне модуля, не внутрь другого обработчика. Каждую задачу запускайте в отдельной копии формы.
Подготовка
Создайте отдельную учебную внешнюю обработку с пустой управляемой основной формой. Каждую задачу запускайте в своей копии формы.
Не добавляйте вручную реквизит Метки, поле ПолеМеток и команду УчебноеДействие: их создаст код.
В свойствах формы → События свяжите ПриСозданииНаСервере с одноимённой процедурой. Вставьте весь модуль, включая клиентские и серверные процедуры.
Сохраните учебную EPF и откройте через Файл → Открыть в тонком или толстом клиенте Windows. Рабочие данные не читаются и не записываются.
Картинка 32×32 полностью включена в код через Base64. Не нужны файл макета, скачивание или доступ к каталогу картинок.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Новые = Новый Массив;
Новые.Добавить(Новый РеквизитФормы("Метки", Новый ОписаниеТипов("ТаблицаЗначений")));
Новые.Добавить(Новый РеквизитФормы("Значение", Новый ОписаниеТипов("Строка"), "Метки"));
Новые.Добавить(Новый РеквизитФормы("Представление", Новый ОписаниеТипов("Строка"), "Метки"));
Новые.Добавить(Новый РеквизитФормы("Картинка", Новый ОписаниеТипов("Картинка"), "Метки"));
ЭтаФорма.ИзменитьРеквизиты(Новые);
Данные = Новый ТаблицаЗначений;
Данные.Колонки.Добавить("Значение", Новый ОписаниеТипов("Строка"));
Данные.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
Данные.Колонки.Добавить("Картинка", Новый ОписаниеТипов("Картинка"));
Байты = Base64Значение("iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAArklEQVR4nO3VOxKAIAxF0SzEtbgk99/FRhuE8F4+0lCkc3LPCDOIqsrKWRrfADfguE7tTSlgFI1iSuIMoiyOIkrjD8BE/BE3/0R5/AWMEFXn/om7Ae0SbxwGWOcYiY8QMGCGIL7jAMhyNO4GTC4We0w+QC/GxsOANsrGIQCLiMTDACaeDmDjFCDrPZjFTUAmwmqYgKSHSUKACALZDQE8CHQvDEAwnl0uQOZsgKwG3AxgSxA9ZssYAAAAAElFTkSuQmCC");
УчебнаяКартинка = Новый Картинка(Байты);
Метка = Данные.Добавить();
Метка.Значение = "book";
Метка.Представление = "Книга";
Метка.Картинка = УчебнаяКартинка;
Метка = Данные.Добавить();
Метка.Значение = "pen";
Метка.Представление = "Ручка";
Метка.Картинка = УчебнаяКартинка;
ЭтаФорма.ЗначениеВРеквизитФормы(Данные, "Метки");
Поле = Элементы.Добавить("ПолеМеток", Тип("ПолеФормы"));
Поле.Вид = ВидПоляФормы.ПолеВвода;
Поле.ПутьКДанным = "Метки";
Поле.Заголовок = "Две собственные метки";
Поле.ПутьКДаннымЗначенияМножественногоЗначения = "Метки.Значение";
Поле.ПутьКДаннымПредставленияМножественногоЗначения = "Метки.Представление";
Поле.ПутьКДаннымКартинкиМножественногоЗначения = "Метки.Картинка";
Поле.РасширенноеРедактированиеМножественныхЗначений = Ложь;
Поле.ГиперссылкаМножественныхЗначений = Ложь;
Поле.ЦветТекстаМножественныхЗначений = Новый Цвет(24, 40, 60);
Поле.ЦветФонаМножественныхЗначений = Новый Цвет(235, 244, 255);
Поле.ШрифтМножественныхЗначений = Новый Шрифт(Поле.ШрифтМножественныхЗначений, , 11, Ложь);
Поле.Ширина = 60;
КомандаДействия = ЭтаФорма.Команды.Добавить("УчебноеДействие");
КомандаДействия.Действие = "УчебноеДействие";
КомандаДействия.Заголовок = "Проверить значения и выделение";
КомандаДействия.Подсказка = "Действие только над данными учебной формы";
КомандаДействия.ИзменяетСохраняемыеДанные = Ложь;
Кнопка = Элементы.Добавить("КнопкаУчебноеДействие", Тип("КнопкаФормы"));
Кнопка.ИмяКоманды = КомандаДействия.Имя;
Кнопка.Заголовок = КомандаДействия.Заголовок;
КонецПроцедуры
&НаКлиенте
Процедура УчебноеДействие(Команда)
Если Метки.Количество() <> 2 Тогда
ВызватьИсключение "Ожидались две собственные метки";
КонецЕсли;
Книга = Метки[0];
Ручка = Метки[1];
Сообщить(Книга.Значение = "book" И Книга.Представление = "Книга");
Сообщить(Ручка.Значение = "pen" И Ручка.Представление = "Ручка");
Сообщить(ТипЗнч(Книга.Картинка) = Тип("Картинка"));
Поле = Элементы.ПолеМеток;
Сообщить("Размер картинки из настройки: " + Строка(Поле.РазмерКартинкиМножественногоЗначения));
Сообщить("Фигура картинки из настройки: " + Строка(Поле.ФигураКартинкиМножественногоЗначения));
Идентификаторы = Новый Массив;
Идентификаторы.Добавить(Книга.ПолучитьИдентификатор());
Поле.УстановитьВыделенныеМножественныеЗначения(Идентификаторы);
Выделенные = Поле.ПолучитьВыделенныеМножественныеЗначения();
Сообщить(Выделенные.Количество() = 1 И Выделенные.Найти(Книга.ПолучитьИдентификатор()) <> Неопределено);
Сообщить(Метки.Количество() = 2);
КонецПроцедурыРазбор по шагам
Сервер создаёт ТаблицаЗначений с колонками Значение, Представление и Картинка и переносит её в реквизит формы.
В клиентском модуле реквизит представлен ДанныеФормыКоллекция. Пути ко всем трём колонкам задаются на сервере.
Картинки находятся непосредственно в колонке типа Картинка: здесь нет индексов в наборе картинок и сетевых адресов.
РасширенноеРедактированиеМножественныхЗначений выключено: для коллекции строки показываются без интерактивного редактирования через поле.
Цвета относятся к оформлению. РазмерКартинкиМножественногоЗначения и ФигураКартинкиМножественногоЗначения только читаются: установленная справка не разрешает программную запись.
ШрифтМножественныхЗначений и РазмерКартинкиМножественногоЗначения не применяются в интерфейсе Версия 8.5.
После проверки двух строк выбираем Книга по идентификатору строки формы, не по её индексу.
Как проверить результат
Пять сообщений Истина и две диагностические строки о размере/фигуре картинки; две собственные метки сохраняются после выделения.
Подписи Книга/Ручка отличаются от значений book/pen. Фактический внешний вид проверьте в своей теме клиента.
Ожидаемый результат
Разделены источник коллекции, значение метки, представление, картинка и выделение.
На что обратить внимание
Индекс 0 используется только после проверки количества для получения известной собственной строки; в метод выделения передаётся её идентификатор.
Пути множественных значений доступны на сервере; не присваивайте их в клиентской команде.
Не присваивайте значения свойствам размера и фигуры картинки: для этих свойств документировано только чтение.
Установка шрифта не подтверждает, что он будет применён в интерфейсе 8.5 или любой теме.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.