ПараметрВыбора.По умолчанию

Конструкторы

Создает объект и заполняет его свойства значениями из параметров.

Синтаксис

Новый ПараметрВыбора(<Имя>, <Значение>)
Полное описание, параметры и ограничения

ПараметрВыбора.По умолчанию

ПараметрВыбора (ChoiceParameter)

По умолчанию

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

Синтаксис:
Новый ПараметрВыбора(<Имя>, <Значение>)
Параметры:

<Имя> (обязательный)
Тип: Строка.
Значение присваивается свойству Имя данного объекта.

<Значение> (обязательный)
Может быть любого типа. Значение присваивается свойству Значение.
Описание:

Создает объект и заполняет его свойства значениями из параметров.

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

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

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

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

Прочитать постоянный отбор единиц веса и создать его учебное описание

ВесЕдиницаИзмерения имеет единственный параметр Отбор.ТипИзмеряемойВеличины = Вес. Получаем его из схемы, а не выбираем первую попавшуюся единицу.

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

Полный серверный общий модуль учебной копии КА2 Progress. Только схема и собственные значения в памяти.

Подготовка

  1. Используйте отдельную учебную копию КА2 Progress, соответствующую C:\claude\KA2\Progress\XML_CF_KA2_PROGRESS. Названия и настройки проверены по реальным Catalogs/Номенклатура.xml и Catalogs/ВидыПодарочныхСертификатов.xml.

  2. Создайте серверный общий модуль УчебныеЗадачи, вставьте полный модуль одного урока и вызовите ВыполнитьПример() из своего серверного обработчика учебной команды.

  3. Примеры читают схему и создают значения только в памяти. Они не создают и не записывают товары, не меняют метаданные, не запускают заполнение объекта или перестроение поискового индекса.

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

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

  1. ПараметрыВыбора — фиксированный массив. Сначала проверяем ожидаемый состав, затем обращаемся к индексу 0.

  2. Виды веса заданы настоящим пользовательским перечислением ТипыИзмеряемыхВеличин.Вес. Это не число и не строка Вес.

  3. Имя параметра содержит одну точку: Отбор.ТипИзмеряемойВеличины. Такие имена разрешены справкой; произвольная цепочка из трёх точек — не то же самое.

  4. Новый ПараметрВыбора создаёт отдельное неизменяемое описание с именем и значением. Далее готовим собственный фиксированный массив для будущего учебного поля выбора.

  5. Массив не присваивается рабочей форме. Выбор единицы и вычисление коэффициента обмена здесь не выполняются.

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

  1. Пять контрольных Истина: имя, значение, два свойства собственной копии и количество массива.

  2. Исходный фиксированный массив метаданных не очищен и не дополнен.

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

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

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

  1. Не используйте Отбор по типу веса как доказательство одинаковых коэффициентов всех единиц.

  2. ПараметрВыбора не допускает Неопределено в качестве значения; здесь передано существующее значение перечисления.

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

Связать отбор книги с фактической секцией формы

СвязьПараметраВыбора передаёт текущее УчебнаяСекция в Отбор.Секция. При смене секции режим Очищать предотвращает сохранение прежнего выбора в связанном поле.

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

Полный модуль своей управляемой формы в новой конфигурации УчебныйВыборВвода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.

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

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

&НаКлиенте
Процедура УчебноеДействие(Команда)
    Сообщить(ПроверитьСвоюКнигуНаСервере());
КонецПроцедуры

&НаСервере
Функция ПроверитьСвоюКнигуНаСервере()
    Если Метаданные.ОбщиеРеквизиты.Количество() <> 0 Тогда
        ВызватьИсключение "Нужен только собственный новый неразделённый стенд УчебныйВыборВвода85";
    КонецЕсли;
    Если Не ЗначениеЗаполнено(УчебнаяКнига) Тогда
        Возврат "Сначала выберите свою учебную книгу";
    КонецЕсли;
    Если УчебнаяКнига.ЭтоГруппа Или УчебнаяКнига.МеткаСтенда <> "owned-input85" Тогда
        Возврат "Нужен свой учебный элемент, а не группа или запись с иной меткой";
    КонецЕсли;
    Если УчебнаяКнига.Секция <> УчебнаяСекция Тогда
        Возврат "Выбранная книга не соответствует фактической текущей секции";
    КонецЕсли;
    Если УчебнаяКнига.Код <> "BOOK" И УчебнаяКнига.Код <> "ALBUM" И УчебнаяКнига.Код <> "PEN" Тогда
        Возврат "Выбрана запись вне трёх подготовленных собственных товаров";
    КонецЕсли;
    Возврат "Свой элемент: " + УчебнаяКнига.Наименование + "; секция: " + УчебнаяКнига.Секция;
КонецФункции

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

  1. Постоянная метка стенда остаётся в ПараметрыВыбора. Текущая секция берётся отдельно из собственного реквизита формы, а не зашита вторым постоянным параметром.

  2. СвязиПараметровВыбора — ФиксированныйМассив объектов СвязьПараметраВыбора. Связь создаётся на сервере, где запись этого свойства разрешена.

  3. Путь УчебнаяСекция совпадает с реально добавленным реквизитом. Отбор.Секция совпадает с реальным реквизитом собственной книги.

  4. При исходном Книги выберите BOOK. Измените секцию на Канцелярия: прежний выбор должен очиститься, после открытия выбора доступна PEN.

  5. Проверка на сервере сопоставляет настоящую Секция выбранного элемента и текущее значение формы. Она не полагается только на факт очистки или видимое меню.

  6. В стандартной форме выбора отбор может ограничивать содержимое при сохранении групп для навигации. Состав и поведение проверяются отдельно в своей конфигурации.

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

  1. Книги → BOOK/ALBUM; Канцелярия → PEN. Проверка сообщает именно выбранный собственный элемент и его секцию.

  2. После смены секции прежняя ссылка не должна оставаться выбранной; без нового выбора команда предлагает выбрать книгу.

  3. Если вручную нарушить соответствие в собственном стенде, серверная проверка сообщает несовпадение, а не успех.

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

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

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

  1. Путь связи — реквизит формы, не его текущая строковая величина. Не передавайте Книги вместо УчебнаяСекция вторым аргументом.

  2. СвязиПараметровВыбора нельзя присваивать в клиентском обработчике.

  3. Очищать относится к связанному значению формы и не удаляет книгу из базы.

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

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

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

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

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