Расширение поля формы для поля ввода.ПутьКДаннымКартинкиМножественногоЗначения

Свойства · MultipleValuePictureDataPath

Тип: Строка. Содержит путь к реквизиту, содержащему картинку множественного значения. Для получения картинки множественных значений в свойстве поля ввода "ПутьКДаннымКартинкиМножественногоЗначения" может быть указана колонка c типом Картинка, Строка, Число или Булево: Строка - значение в колонке представляет собой навигационную ссылку с адресом картинки. Число - значение в колонке представляет собой индекс в наборе картинок, задаваемых свойством КартинкаМножественныхЗначений. Булево - если Истина используется индекс 0, если Ложь используется индекс 1.

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

Расширение поля формы для поля ввода.ПутьКДаннымКартинкиМножественногоЗначения (Form field extension for a text box.MultipleValuePictureDataPath)

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

ПутьКДаннымКартинкиМножественногоЗначения (MultipleValuePictureDataPath)

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

Использование:
Чтение и запись.
Описание:
Тип: Строка.
Содержит путь к реквизиту, содержащему картинку множественного значения.
Для получения картинки множественных значений в свойстве поля ввода "ПутьКДаннымКартинкиМножественногоЗначения" может быть указана колонка c типом Картинка, Строка, Число или Булево:
Строка - значение в колонке представляет собой навигационную ссылку с адресом картинки.

Число - значение в колонке представляет собой индекс в наборе картинок, задаваемых свойством КартинкаМножественныхЗначений.

Булево - если Истина используется индекс 0, если Ложь используется индекс 1.

Доступность:

Сервер.

См. также:
Расширение поля формы для поля ввода, свойство КартинкаМножественныхЗначений
Расширение поля формы для поля ввода, свойство ПутьКДаннымЗначенияМножественногоЗначения
Расширение поля формы для поля ввода, свойство ПутьКДаннымПредставленияМножественногоЗначения

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

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

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

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

Показать картинку множественных значений по числовому индексу

Две строки собственных меток хранят отдельные значение, подпись и индекс картинки. Индекс 0 обращается к реальной первой картинке своего библиотечного ресурса, не к номеру строки формы.

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

Полный модуль своей управляемой формы в новой конфигурации УчебныйВыборВвода85. Настольный тонкий клиент Windows; типовые данные и проверка ссылок читаются на сервере. Запуск в 1С не проверен.

Подготовка

  1. Создайте с нуля отдельную конфигурацию УчебныйВыборВвода85: управляемое приложение, Такси, язык Русский, платформа 8.5.1.1343, без расширений, общих реквизитов-разделителей и прикладных обработчиков. Не используйте рабочую базу.

  2. Создайте иерархический справочник УчебныеКниги85, иерархия групп и элементов, код Строка длиной 10 без автонумерации, наименование Строка 100. Добавьте реквизиты МеткаСтенда (Строка 30, для группы и элемента) и Секция (Строка 30, для элемента).

  3. В своём новом стенде вручную заведите группы BOOKGROUP/Книги и PENGROUP/Канцелярия. В первой группе заведите BOOK/Книга и ALBUM/Альбом с Секция = Книги, во второй PEN/Ручка с Секция = Канцелярия. У всех этих собственных записей МеткаСтенда = owned-input85. Других записей не создавайте.

  4. Каждый урок — отдельная новая управляемая форма внешней обработки. Назначьте ПриСозданииНаСервере, вставьте полный модуль. Реквизиты, поле и учебную команду код создаёт сам: вручную одноимённые элементы не добавляйте.

  5. После F7 обновите только собственную конфигурацию. Запускайте настольный тонкий клиент Windows. Уроки не выполнялись: runtimeVerifiedScenarios=0, фактическое отображение и стандартный выбор ещё требуют отдельного ручного теста.

  6. Будущий ручной опыт читает только свои подготовленные записи и меняет данные формы в памяти. Код не создаёт, не записывает и не удаляет объекты базы или файлы, не вызывает внешнюю сеть, печать или привилегированный режим.

  7. Коды BOOK, ALBUM, PEN и метка owned-input85 — конкретные значения подготовленного собственного стенда, не имена товаров вашей конфигурации. Если подготовка не совпала, исправляйте только свой стенд, не отключайте защиту для production.

  8. Для этого урока импортируйте собственный owned-book-marker-32.png из lesson-assets руководства в Общие → Общие картинки → УчебныйМаркер. PNG содержит одну картинку 32×32, а не два булевых значка.

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    Если Метаданные.ОбщиеРеквизиты.Количество() <> 0 Тогда
        ВызватьИсключение "Нужен только собственный новый неразделённый стенд УчебныйВыборВвода85";
    КонецЕсли;
    Если Метаданные.ОбщиеКартинки.Найти("УчебныйМаркер") = Неопределено Тогда
        ВызватьИсключение "Импортируйте свою общую картинку УчебныйМаркер";
    КонецЕсли;
    Новые = Новый Массив;
    Новые.Добавить(Новый РеквизитФормы("Метки", Новый ОписаниеТипов("ТаблицаЗначений")));
    Новые.Добавить(Новый РеквизитФормы("Значение", Новый ОписаниеТипов("Строка"), "Метки"));
    Новые.Добавить(Новый РеквизитФормы("Представление", Новый ОписаниеТипов("Строка"), "Метки"));
    Новые.Добавить(Новый РеквизитФормы("ИндексКартинки", Новый ОписаниеТипов("Число"), "Метки"));
    ЭтаФорма.ИзменитьРеквизиты(Новые);
    Данные = Новый ТаблицаЗначений;
    Данные.Колонки.Добавить("Значение", Новый ОписаниеТипов("Строка"));
    Данные.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
    Данные.Колонки.Добавить("ИндексКартинки", Новый ОписаниеТипов("Число"));
    СтрокаКниги = Данные.Добавить();
    СтрокаКниги.Значение = "book";
    СтрокаКниги.Представление = "Книга";
    СтрокаКниги.ИндексКартинки = 0;
    СтрокаРучки = Данные.Добавить();
    СтрокаРучки.Значение = "pen";
    СтрокаРучки.Представление = "Ручка";
    СтрокаРучки.ИндексКартинки = 0;
    ЭтаФорма.ЗначениеВРеквизитФормы(Данные, "Метки");
    Поле = Элементы.Добавить("ПолеУчебныхМеток", Тип("ПолеФормы"));
    Поле.Вид = ВидПоляФормы.ПолеВвода;
    Поле.ПутьКДанным = "Метки";
    Поле.Заголовок = "Собственные метки с общей картинкой";
    Поле.ПутьКДаннымЗначенияМножественногоЗначения = "Метки.Значение";
    Поле.ПутьКДаннымПредставленияМножественногоЗначения = "Метки.Представление";
    Поле.ПутьКДаннымКартинкиМножественногоЗначения = "Метки.ИндексКартинки";
    Поле.КартинкаМножественныхЗначений = БиблиотекаКартинок.УчебныйМаркер;
    Поле.РасширенноеРедактированиеМножественныхЗначений = Ложь;
    Поле.ГиперссылкаМножественныхЗначений = Ложь;

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

&НаКлиенте
Процедура УчебноеДействие(Команда)
    Если Метки.Количество() <> 2 Тогда
        ВызватьИсключение "Ожидались две собственные строки меток";
    КонецЕсли;
    Книга = Метки[0];
    Ручка = Метки[1];
    Сообщить(Книга.Значение = "book" И Книга.Представление = "Книга");
    Сообщить(Ручка.Значение = "pen" И Ручка.Представление = "Ручка");
    Сообщить(Книга.ИндексКартинки = 0 И Ручка.ИндексКартинки = 0);
    Сообщить("Числовой индекс 0 выбирает первую картинку собственного ресурса, а не строку меток");
КонецПроцедуры

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

  1. Свой PNG импортирован в общую картинку УчебныйМаркер. Она существует до начала урока, код не создаёт ресурс по одному имени и не скачивает изображение.

  2. Сервер создаёт настоящую таблицу Значение/Представление/ИндексКартинки и переносит её в реквизит формы. Клиент видит ДанныеФормыКоллекция.

  3. Все три пути множественных значений указывают на реально созданные колонки и присваиваются на сервере.

  4. ИндексКартинки имеет тип Число. Поэтому КартинкаМножественныхЗначений предоставляет набор, в котором 0 обозначает первую собственную картинку.

  5. У собственного ресурса одна картинка. Обе метки получают индекс 0; индекс 1 и вторую картинку урок не выдумывает.

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

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

  1. Три Истина и пояснение индекса. В поле видны подписи Книга и Ручка, не строковые коды book/pen.

  2. Фактические обе картинки проверьте в своей теме. Числовое равенство не доказывает, что клиент их уже отрисовал.

  3. Количество строк и собственные значения остаются прежними; ни один PNG не изменяется.

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

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

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

  1. Числовой индекс картинки не является идентификатором или индексом строки формы.

  2. Для булевой колонки Истина использует индекс 0, Ложь — 1: чтобы показать оба состояния, понадобится реальный набор из двух картинок. Этот ресурс не выдаётся за такой набор.

  3. Не присваивайте здесь случайную двоичную картинку вместо подготовленного библиотечного набора.

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

Показать метки из коллекции с разными значением и подписью

Две строки собственного реквизита ТаблицаЗначений отображаются как метки. Значение, подпись и встроенная картинка имеют разные пути к данным.

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

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

Подготовка

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

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

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

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

  5. Картинка 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);
КонецПроцедуры

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

  1. Сервер создаёт ТаблицаЗначений с колонками Значение, Представление и Картинка и переносит её в реквизит формы.

  2. В клиентском модуле реквизит представлен ДанныеФормыКоллекция. Пути ко всем трём колонкам задаются на сервере.

  3. Картинки находятся непосредственно в колонке типа Картинка: здесь нет индексов в наборе картинок и сетевых адресов.

  4. РасширенноеРедактированиеМножественныхЗначений выключено: для коллекции строки показываются без интерактивного редактирования через поле.

  5. Цвета относятся к оформлению. РазмерКартинкиМножественногоЗначения и ФигураКартинкиМножественногоЗначения только читаются: установленная справка не разрешает программную запись.

  6. ШрифтМножественныхЗначений и РазмерКартинкиМножественногоЗначения не применяются в интерфейсе Версия 8.5.

  7. После проверки двух строк выбираем Книга по идентификатору строки формы, не по её индексу.

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

  1. Пять сообщений Истина и две диагностические строки о размере/фигуре картинки; две собственные метки сохраняются после выделения.

  2. Подписи Книга/Ручка отличаются от значений book/pen. Фактический внешний вид проверьте в своей теме клиента.

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

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

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

  1. Индекс 0 используется только после проверки количества для получения известной собственной строки; в метод выделения передаётся её идентификатор.

  2. Пути множественных значений доступны на сервере; не присваивайте их в клиентской команде.

  3. Не присваивайте значения свойствам размера и фигуры картинки: для этих свойств документировано только чтение.

  4. Установка шрифта не подтверждает, что он будет применён в интерфейсе 8.5 или любой теме.

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

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

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

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

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