ДоступноеПолеОтбораКомпоновкиДанных.ФормаВыбора

Свойства · ChoiceForm

Тип: Строка. Полное имя формы, используемое для выбора значения поля или параметра.

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

ДоступноеПолеОтбораКомпоновкиДанных.ФормаВыбора (DataCompositionFilterAvailableField.ChoiceForm)

ДоступноеПолеОтбораКомпоновкиДанных (DataCompositionFilterAvailableField)

ФормаВыбора (ChoiceForm)

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

Использование:
Только чтение.
Описание:
Тип: Строка.
Полное имя формы, используемое для выбора значения поля или параметра.
Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение.

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

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

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

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

Исследовать настройки ввода, не открывая чужую форму

Читаем правила ввода значения собственного поля: маску, формат, форму выбора и связи. Никакие формы справочников или внешние соединения не запускаются.

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

Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.

Подготовка

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

  2. Схема СКД строится программно, макет в конфигурации не нужен. Источник Local выполняет запрос из двух собственных константных строк, без справочников, документов и регистров.

  3. Каждое упражнение запускайте отдельно. Книга: 3 × 250 = 750; Ручка: 1 × 50 = 50; общая сумма 800. Результат хранится в памяти, не записывается в файл или базу.

  4. Для исследования поставьте точку останова перед последними проверками. ТаблицаЗначений и процессоры СКД здесь создаются и используются на сервере; напрямую в тонкий клиент таблица не возвращается.

Схема = Новый СхемаКомпоновкиДанных;
Источник = Схема.ИсточникиДанных.Добавить();
Источник.Имя = "УчебныйИсточник";
Источник.ТипИсточникаДанных = "Local";
Набор = Схема.НаборыДанных.Добавить(Тип("НаборДанныхЗапросСхемыКомпоновкиДанных"));
Набор.Имя = "УчебныеТовары";
Набор.ИсточникДанных = Источник.Имя;
Набор.АвтоЗаполнениеДоступныхПолей = Истина;
Набор.Запрос = "ВЫБРАТЬ
|    ""Книга"" КАК Наименование,
|    3 КАК Количество,
|    250 КАК Цена,
|    750 КАК Сумма
|ОБЪЕДИНИТЬ ВСЕ
|ВЫБРАТЬ ""Ручка"", 1, 50, 50";
Настройки = Схема.НастройкиПоУмолчанию;
Для Каждого ИмяПоля Из СтрРазделить("Наименование,Количество,Цена,Сумма", ",") Цикл
    Выбранное = Настройки.Выбор.Элементы.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
    Выбранное.Поле = Новый ПолеКомпоновкиДанных(ИмяПоля);
    Выбранное.Использование = Истина;
КонецЦикла;
Детали = Настройки.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
Детали.Использование = Истина;
АвтоВыбор = Детали.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));
АвтоВыбор.Использование = Истина;
Доступные = Новый ИсточникДоступныхНастроекКомпоновкиДанных(Схема);
Редактор = Новый КомпоновщикНастроекКомпоновкиДанных;
Редактор.Инициализировать(Доступные);
Редактор.ЗагрузитьНастройки(Настройки);
Рабочие = Редактор.Настройки;
ПолеКоличества = Рабочие.ДоступныеПоляОтбора.НайтиПоле(Новый ПолеКомпоновкиДанных("Количество"));
Если ПолеКоличества = Неопределено Тогда
    ВызватьИсключение "Нет собственного поля отбора Количество";
КонецЕсли;
Сообщить("Быстрый выбор: " + Строка(ПолеКоличества.БыстрыйВыбор));
Сообщить("Группы/элементы: " + Строка(ПолеКоличества.ВыборГруппИЭлементов));
Сообщить("Маска: " + ПолеКоличества.Маска);
Сообщить("Формат ввода: " + ПолеКоличества.ФорматРедактирования);
Сообщить("Форма выбора: " + ПолеКоличества.ФормаВыбора);
ПараметрыВыбора = ПолеКоличества.ПолучитьПараметрыВыбора();
СвязиВыбора = ПолеКоличества.ПолучитьСвязиПараметровВыбора();
Сообщить("Параметров выбора: " + Строка(ПараметрыВыбора.Количество()));
Сообщить("Связей выбора: " + Строка(СвязиВыбора.Количество()));
СвязьТипа = ПолеКоличества.СвязьПоТипу;
Сообщить("Поле связи по типу: " + Строка(СвязьТипа.Поле));
Сообщить("Номер элемента связи: " + Строка(СвязьТипа.ЭлементСвязи));

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

  1. Маска и ФорматРедактирования — строки правил ввода; они не меняют фактическое число 3 в запросе.

  2. ФормаВыбора — имя формы, а не открытая форма. В этом упражнении её не вызываем.

  3. Методы возвращают отдельные коллекции параметров выбора и связей параметров выбора.

  4. СвязьПоТипу описывает источник типа. Номер элемента связи не является номером строки результата.

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

  1. Вывод содержит диагностические настройки собственного числового поля. Не ожидайте формы выбора справочника у числовой константы.

  2. Исходный запрос и отбор остаются неизменны; процессор не запускается.

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

Правила редактирования отделены от данных и от действий интерфейса.

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

  1. Пустая строка имени формы — не ошибка открытия: форму здесь вообще не открывают.

  2. БыстрыйВыбор управляет механизмом выбора, не ускоряет выполнение запроса.

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

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

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

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

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

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