ЗначениеПараметраКомпоновкиДанных.Значение

Свойства · Value

Определяет значение параметра. Его тип определяется соответствующим доступным параметром.

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

ЗначениеПараметраКомпоновкиДанных.Значение (DataCompositionParameterValue.Value)

ЗначениеПараметраКомпоновкиДанных (DataCompositionParameterValue)

Значение (Value)

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

Использование:
Чтение и запись.
Описание:
Определяет значение параметра. Его тип определяется соответствующим доступным параметром.
Доступность:

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

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

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

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

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

Показать товары с ценой от 100 через параметр запроса

У параметра есть описание типа и значение. Передаём число отдельно от текста, не вставляя пользовательский ввод в запрос строковой склейкой.

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

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

Подготовка

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

  2. В реквизитах формы добавьте Список типа ДинамическийСписок. Создайте один элемент ТаблицаФормы с именем ТаблицаТоваров и путём к данным Список. Колонки вручную не добавляйте: их создаёт код. Это не ТаблицаЗначений и не коллекция строк для Добавить().

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

  4. При открытии код задаёт произвольный запрос из четырёх константных строк. Основная таблица не указана; таблицы базы, файлы и внешние сервисы не используются. Запись данных отсутствует.

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

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

    Список.ПоляКлюча = Новый ФиксированныйМассив(КлючевыеПоля);
    Список.ТекстЗапроса = "ВЫБРАТЬ
|    УчебныеДанные.УчебныйНомер,
|    УчебныеДанные.Наименование,
|    УчебныеДанные.Категория,
|    УчебныеДанные.Количество,
|    УчебныеДанные.Цена
|ИЗ (ВЫБРАТЬ
|    1 КАК УчебныйНомер,
|    ""Книга"" КАК Наименование,
|    ""Канцелярия"" КАК Категория,
|    3 КАК Количество,
|    250 КАК Цена
|ОБЪЕДИНИТЬ ВСЕ
|ВЫБРАТЬ 2, ""Ручка"", ""Канцелярия"", 1, 30
|ОБЪЕДИНИТЬ ВСЕ
|ВЫБРАТЬ 3, ""Чай"", ""Продукты"", 2, 150
|ОБЪЕДИНИТЬ ВСЕ
|ВЫБРАТЬ 4, ""Вода"", ""Продукты"", 0, 70) КАК УчебныеДанные
|ГДЕ УчебныеДанные.Цена >= &МинимальнаяЦена";
    Элементы.ТаблицаТоваров.ТолькоПросмотр = Истина;
    ОписаниеПараметра = Список.ПараметрыДанных.Найти("МинимальнаяЦена");
    Если ОписаниеПараметра = Неопределено Тогда
        ОписаниеПараметра = Список.ПараметрыДанных.Добавить();
        ОписаниеПараметра.Имя = "МинимальнаяЦена";
    КонецЕсли;
    ОписаниеПараметра.Заголовок = "Цена от";
    ОписаниеПараметра.ТипЗначения = Новый ОписаниеТипов("Число");
    ОписаниеПараметра.Значение = 100;
    ОписаниеПараметра.Использование = ИспользованиеПараметраКомпоновкиДанных.Всегда;
    Список.Параметры.УстановитьЗначениеПараметра("МинимальнаяЦена", 100);
    ЗначениеПараметра = Список.Параметры.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("МинимальнаяЦена"));
    Сообщить(ЗначениеПараметра.Значение = 100);
    Контроль = Новый Запрос(Список.ТекстЗапроса);
    Контроль.УстановитьПараметр("МинимальнаяЦена", 100);
    ПроверочныеСтроки = Контроль.Выполнить().Выгрузить();
    Сообщить(ПроверочныеСтроки.Количество() = 2);
    Сообщить(ПроверочныеСтроки.Найти(1, "УчебныйНомер") <> Неопределено);
    Сообщить(ПроверочныеСтроки.Найти(3, "УчебныйНомер") <> Неопределено);

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

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

  1. ПараметрыДанных содержат описание: имя, заголовок, тип, значение по умолчанию и правило использования. Коллекция доступна на сервере.

  2. Параметры содержат фактическое значение настройки. УстановитьЗначениеПараметра связывает имя с числом 100.

  3. Контрольный Запрос тоже получает параметр явно: он не наследует его из Список.Параметры.

  4. Условие >= включает цену ровно 100. Здесь Книга 250 и Чай 150; Ручка 30 и Вода 70 не проходят.

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

  1. Четыре проверки дают Истина.

  2. В таблице только Книга и Чай. Измените обе передачи 100 на 200: ожидается только Книга; поправьте проверку количества на 1.

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

Типизированный числовой порог с отдельными описанием и значением параметра.

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

  1. Параметр запроса не равен произвольному тексту SQL и не обходит права доступа.

  2. Не используйте ПараметрФункциональныхОпций: это свойство описания не поддерживается динамическим списком.

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

Подсветить малое количество в конкретной колонке учебной таблицы

При количестве меньше двух выделяем только колонку количества. Код создаёт таблицу и правило с нуля, данные не записывает.

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

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

Подготовка

  1. В учебной базе: Файл → Новый → Внешняя обработка. Создайте управляемую форму и назначьте её основной. Дайте обработке имя УчебнаяТаблица.

  2. Не добавляйте вручную реквизит Товары и одноимённые элементы: код создаст их при открытии. Модуль формы для этой задачи должен быть пустым.

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

  4. Данные Книга/Ручка создаются в памяти формы. Справочники, документы и регистры вашей конфигурации не читаются и не записываются.


&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
    НовыеРеквизиты = Новый Массив;
    НовыеРеквизиты.Добавить(Новый РеквизитФормы("Товары", Новый ОписаниеТипов("ТаблицаЗначений")));
    НовыеРеквизиты.Добавить(Новый РеквизитФормы("Код", Новый ОписаниеТипов("Строка"), "Товары", "Код"));
    НовыеРеквизиты.Добавить(Новый РеквизитФормы("Наименование", Новый ОписаниеТипов("Строка"), "Товары", "Название"));
    НовыеРеквизиты.Добавить(Новый РеквизитФормы("Количество", Новый ОписаниеТипов("Число",
        Новый КвалификаторыЧисла(9, 0, ДопустимыйЗнак.Неотрицательный)), "Товары", "Количество"));
    ЭтаФорма.ИзменитьРеквизиты(НовыеРеквизиты);
    Данные = Новый ТаблицаЗначений;
    Данные.Колонки.Добавить("Код", Новый ОписаниеТипов("Строка"));
    Данные.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка"));
    Данные.Колонки.Добавить("Количество", Новый ОписаниеТипов("Число",
        Новый КвалификаторыЧисла(9, 0, ДопустимыйЗнак.Неотрицательный)));

    СтрокаТовара = Данные.Добавить();
    СтрокаТовара.Код = "A-01";
    СтрокаТовара.Наименование = "Книга";
    СтрокаТовара.Количество = 3;
    СтрокаТовара = Данные.Добавить();
    СтрокаТовара.Код = "B-02";
    СтрокаТовара.Наименование = "Ручка";
    СтрокаТовара.Количество = 1;

    ЭтаФорма.ЗначениеВРеквизитФормы(Данные, "Товары");
    Таблица = ЭтаФорма.Элементы.Добавить("ТаблицаТоваров", Тип("ТаблицаФормы"));
    Таблица.ПутьКДанным = "Товары";
    Таблица.Заголовок = "Учебные товары";
    Таблица.Шапка = Истина;
    Таблица.АвтоВводНезаполненного = Ложь;
    Таблица.АвтоВводНовойСтроки = Ложь;
    Для Каждого ИмяКолонки Из СтрРазделить("Код,Наименование,Количество", ",") Цикл
        Колонка = Элементы.Добавить("Товары" + ИмяКолонки, Тип("ПолеФормы"), Таблица);
        Колонка.Вид = ВидПоляФормы.ПолеВвода;
        Колонка.ПутьКДанным = "Товары." + ИмяКолонки;
        Колонка.Заголовок = ИмяКолонки;
    КонецЦикла;
    Правило = ЭтаФорма.УсловноеОформление.Элементы.Добавить();
    Правило.Использование = Истина;
    Правило.Представление = "Учебное малое количество";
    Правило.Оформление.УстановитьЗначениеПараметра("ЦветФона", Новый Цвет(255, 239, 200));
    Правило.Оформление.УстановитьЗначениеПараметра("ЦветТекста", Новый Цвет(100, 60, 0));
    Условие = Правило.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
    Условие.Использование = Истина;
    Условие.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Товары.Количество");
    Условие.ВидСравнения = ВидСравненияКомпоновкиДанных.Меньше;
    Условие.ПравоеЗначение = 2;
    Условие.Представление = "Количество меньше двух";
    ПолеОформления = Правило.Поля.Элементы.Добавить();
    ПолеОформления.Использование = Истина;
    ПолеОформления.Поле = Новый ПолеКомпоновкиДанных("ТоварыКоличество");
    Сообщить(ЭтаФорма.УсловноеОформление.ПолучитьКоличествоИспользуемых() = 1);
    ПараметрЦвета = Новый ПараметрКомпоновкиДанных("ЦветФона");
    ЗаданныйЦвет = Правило.Оформление.НайтиЗначениеПараметра(ПараметрЦвета);
    Если ЗаданныйЦвет = Неопределено Тогда
        ВызватьИсключение "Не найден установленный параметр цвета";
    КонецЕсли;
    Сообщить(ЗаданныйЦвет.Использование);
    Сообщить(ТипЗнч(ЗаданныйЦвет.Значение) = Тип("Цвет"));
КонецПроцедуры

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

  1. Реквизит Товары хранит две строки, а поле ТоварыКоличество отображает числовую колонку.

  2. Отбор сравнивает путь к данным Товары.Количество с числом 2.

  3. Оформляемое поле указывается по имени элемента ТоварыКоличество, без точки. Это не тот же аргумент, что поле отбора.

  4. УстановитьЗначениеПараметра задаёт фон/текст и включает использование соответствующего параметра.

  5. НайтиЗначениеПараметра возвращает описание значения параметра, а не непосредственно Цвет; сначала проверяем Неопределено.

  6. Форма применяет оформление при изменении данных; никакие обработчики записи документа не нужны.

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

  1. При открытии количество Ручки 1 выделено, количество Книги 3 не выделено.

  2. Измените количество Книги на 1: её числовая ячейка тоже должна выделиться.

  3. Название и код не подкрашены этим правилом; проверки включённого параметра цвета Истина.

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

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

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

  1. Не передавайте Товары.Количество в список оформляемых полей формы вместо имени ТоварыКоличество.

  2. Подсветка не фильтрует строки, не блокирует запись и не является проверкой бизнес-правил.

  3. Пустой список оформляемых полей может расширить область действия: здесь поле указано явно.

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

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

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

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

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