Расширение поля формы для поля ввода.ГиперссылкаМножественныхЗначений

Свойства · MultipleValuesHyperlink

Тип: Булево, Неопределено. Содержит признак того, что множественное значение отображается в виде гиперссылки: Истина – текст множественных значений в виде гиперссылки. Ложь — гиперссылка отсутствует. Неопределено – гиперссылка множественных значений отображается только для ссылочных типов данных. Значение по умолчанию: Неопределено. Используется, если в поле ввода редактируются данные типа СписокЗначений или ДанныеФормыКоллекция.

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

Расширение поля формы для поля ввода.ГиперссылкаМножественныхЗначений (Form field extension for a text box.MultipleValuesHyperlink)

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

ГиперссылкаМножественныхЗначений (MultipleValuesHyperlink)

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

Использование:
Чтение и запись.
Описание:
Тип: Булево, Неопределено.
Содержит признак того, что множественное значение отображается в виде гиперссылки:
Истина – текст множественных значений в виде гиперссылки.

Ложь — гиперссылка отсутствует.

Неопределено – гиперссылка множественных значений отображается только для ссылочных типов данных.
Значение по умолчанию: Неопределено.
Используется, если в поле ввода редактируются данные типа СписокЗначений или ДанныеФормыКоллекция.
Доступность:

Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.

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

Доступен, начиная с версии 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. Рабочие данные не читаются и не записываются.

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

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

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

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

  1. Тип реквизита — СписокЗначений; поле автоматически работает с множественными значениями.

  2. book и pen — значения, Книга и Ручка — представления. Карандаш пока есть только в списке возможного выбора.

  3. РасширенноеРедактированиеМножественныхЗначений разрешает ввод непосредственно внутри поля.

  4. Запрет дубликатов проверяет интерактивное добавление и стандартный диалог редактирования списка, а не произвольный серверный код.

  5. Команда проверяет исходные две метки и настройки. Если пользователь изменил набор, предлагается переоткрыть учебную форму.

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

  1. На исходных двух метках пять сообщений Истина.

  2. В выпадающем списке видны флажки; попробуйте добавить Карандаш и затем вернуть исходные две метки.

  3. Повторное интерактивное добавление Книга не должно создавать второй book.

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

Множественные значения и варианты выбора показаны как два разных списка.

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

  1. Свойства множественных значений требуют платформу не ниже 8.3.23; урок предназначен для установленной 8.5.1.

  2. Не принимайте запрет дублирования в интерфейсе за универсальную серверную проверку списка.

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

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

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

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

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