ОбъектМетаданных: Команда.РежимИспользованияПараметра

Свойства · ParameterUsageMode

Тип: РежимИспользованияПараметраКоманды. Перечисление из двух значений: Одиночный и Множественный. Если свойство имеет значение Множественный, то в обработчик команды передается массив значений, а не одно значение даже, если в конкретном случае значение одно. Массив значений в качестве параметра может быть передан в обработчик команды в том случае, если источником для параметра команды является таблица в режиме множественного выделения. При этом первым элементом массива всегда будет текущая строка в независимости от последовательности выделения строк таблицы.

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

ОбъектМетаданных: Команда.РежимИспользованияПараметра (MetadataObject: Command.ParameterUsageMode)

ОбъектМетаданных: Команда (MetadataObject: Command)

РежимИспользованияПараметра (ParameterUsageMode)

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

Использование:
Только чтение.
Описание:
Тип: РежимИспользованияПараметраКоманды.
Перечисление из двух значений: Одиночный и Множественный. Если свойство имеет значение Множественный, то в обработчик команды передается массив значений, а не одно значение даже, если в конкретном случае значение одно.
Массив значений в качестве параметра может быть передан в обработчик команды в том случае, если источником для параметра команды является таблица в режиме множественного выделения. При этом первым элементом массива всегда будет текущая строка в независимости от последовательности выделения строк таблицы.
Доступность:

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

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

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

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

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

Проверить тип параметра команды акта без её выполнения

В КА2 команда АктНаПередачуПрав принимает ссылки заказа клиента или заявки на возврат. UUID не подменяет ни одну из них.

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

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

Подготовка

  1. Используйте отдельную учебную копию КА2 Progress из C:\claude\KA2\Progress\XML_CF_KA2_PROGRESS, конфигурация КомплекснаяАвтоматизация 2.5.20.75, платформа 8.5.1.1343. Это не инструкция запуска в рабочей базе.

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

  3. Команды подтверждены в Catalogs\Номенклатура.xml и Documents\РеализацияТоваровУслуг.xml; форма — в Catalogs\Номенклатура\Forms\ФормаСписка.xml; нумератор — в DocumentNumerators\ДокументыРеализацииТоваров.xml.

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

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

Процедура ВыполнитьПример() Экспорт
    ДокументМетаданных = Метаданные.Документы.Найти("РеализацияТоваровУслуг");
    Если ДокументМетаданных = Неопределено Тогда
        ВызватьИсключение "Нет подтверждённого документа РеализацияТоваровУслуг";
    КонецЕсли;
    КомандаМетаданных = ДокументМетаданных.Команды.Найти("АктНаПередачуПрав");
    Если КомандаМетаданных = Неопределено Тогда
        ВызватьИсключение "Нет команды АктНаПередачуПрав";
    КонецЕсли;
    ТипыПараметра = КомандаМетаданных.ТипПараметраКоманды;
    Сообщить(КомандаМетаданных.РежимИспользованияПараметра = РежимИспользованияПараметраКоманды.Одиночный);
    Сообщить(ТипыПараметра.СодержитТип(Тип("ДокументСсылка.ЗаказКлиента")));
    Сообщить(ТипыПараметра.СодержитТип(Тип("ДокументСсылка.ЗаявкаНаВозвратТоваровОтКлиента")));
    Значения = Новый Массив;
    Значения.Добавить(Документы.ЗаказКлиента.ПустаяСсылка());
    Значения.Добавить(Документы.ЗаявкаНаВозвратТоваровОтКлиента.ПустаяСсылка());
    Значения.Добавить(Новый УникальныйИдентификатор("ff31d687-1a25-4ebc-af9d-b405c247cc9a"));
    ТипПодходит = 0;
    ТипНеПодходит = 0;
    Для Каждого Значение Из Значения Цикл
        Если ТипыПараметра.СодержитТип(ТипЗнч(Значение)) Тогда
            ТипПодходит = ТипПодходит + 1;
        Иначе
            ТипНеПодходит = ТипНеПодходит + 1;
        КонецЕсли;
    КонецЦикла;
    Сообщить(ТипПодходит = 2 И ТипНеПодходит = 1);
    Сообщить("Две пустые ссылки подходят только по типу: это не существующие документы и не разрешение выполнять команду");
КонецПроцедуры

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

  1. Находим именно команду дочерней коллекции документа, а не одноимённую команду управляемой формы или общую команду конфигурации.

  2. ТипПараметраКоманды — ОписаниеТипов. В XML этой команды два cfg:DocumentRef, а режим Single соответствует Одиночный.

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

  4. UUID имеет другой тип и отклоняется. Входящий внешний идентификатор сначала разрешают в настоящую ссылку отдельным алгоритмом обмена.

  5. Режим Множественный потребовал бы обработки массива даже при одном выбранном элементе. Здесь реальный режим Одиночный; штатный обработчик не вызывается.

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

  1. Четыре проверки ожидаются Истина на исходной схеме: Single, два допустимых типа, два подходящих и один неподходящий тип собственного набора.

  2. Ни один акт или заказ не создан. Пустые ссылки нельзя выдавать за допустимые бизнес-основания акта.

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

Разобран настоящий контракт параметра команды КА2 с безопасными значениями и явной границей проверки типа.

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

  1. СодержитТип не проверяет существование ссылки, права, состояние документа или заполненность.

  2. Ссылка на РеализацияТоваровУслуг не становится правильным параметром только потому, что команда принадлежит этому документу.

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

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

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

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

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