Две строки собственных меток хранят отдельные значение, подпись и индекс картинки. Индекс 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: чтобы показать оба состояния, понадобится реальный набор из двух картинок. Этот ресурс не выдаётся за такой набор.
Не присваивайте здесь случайную двоичную картинку вместо подготовленного библиотечного набора.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.