Разбор схемы работы зависимых полей

Ситуация: зависимые выпадающие списки

Предположим, в системе есть форма ввода данных, где пользователь должен указать три параметра:

  • Тип продукции;
  • Регион;
  • Город.

При этом наполнение списка «Город» должно зависеть от того, какой тип продукции и какой регион выбраны. Иными словами, пользователю должны показываться только те города, которые в справочнике явно привязаны к выбранной паре «тип продукции + регион».

Такая логика позволяет:

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

Для реализации этого механизма используются три справочника (они играют роль источников данных) и специальная настройка, которая связывает поля формы между собой. Структурная схема представлена ниже.

Теоретическое объяснение структурной схемы

Схема разделена на три крупные области, которые показаны прямоугольниками: «Справочники», «Форма ввода данных» и «Настройка зависимости». Внутри каждой области находятся элементы, а между областями проведены стрелки, показывающие, как эти элементы взаимодействуют.

Блок «Справочники»

Здесь изображены три справочника — хранилища данных, из которых берутся значения для полей формы:

  • Справочник «Типы продукции» — перечень возможных типов.
  • Справочник «Регионы» — перечень регионов.
  • Справочник «Города» — содержит названия городов, но, что важно, у каждой записи о городе есть два дополнительных поля: «Тип продукции» и «Регион».

Стрелки, идущие от справочника «Города» к двум другим справочникам, показывают, что справочник «Города» использует их в своей структуре — он ссылается на них, чтобы определить, к какому типу продукции и к какому региону относится тот или иной город.

Блок «Форма ввода данных»

В форме находятся три выпадающих списка:

  • «Тип продукции» и «Регион» — это обычные независимые поля. Они получают свои значения напрямую из соответствующих справочников (это показано не стрелками, но подразумевается по смыслу).
  • «Город» — выделено как зависимое. Стрелки, направленные от полей «Тип продукции» и «Регион» к полю «Город», указывают на то, что содержимое последнего зависит от того, что выбрано в первых двух.

Блок «Настройка зависимости»

Этот блок показывает, как система связывает поля формы и справочники, чтобы поле «Город» подчинялось выбору в полях «Тип продукции» и «Регион».

Внутри блока есть два элемента:

  • «Настройка поля Город» — это просто отметка, что для поля «Город» установлено особое правило.
  • «Условие фильтрации» — это само правило, которое записано в виде трёх коротких фраз: «Фильтровать по полю», «Подставлять из», «Поля формы»:
    • «Фильтровать по полю» — означает, что при отборе городов нужно смотреть на какие‑то конкретные поля в справочнике городов.
    • «Подставлять из» и «Поля формы» — означают, что значения для сравнения берутся не откуда-то из справочника, а прямо из полей формы, которые заполнил пользователь.

Конкретно в нашем примере:

  • «Поля формы» — это поля «Тип продукции» и «Регион».
  • «Поля справочника», по которым нужно фильтровать, — это поля «Тип продукции» и «Регион» внутри справочника «Города».

Итог: система берёт то, что пользователь выбрал в «Тип продукции» и «Регион», ищет в справочнике «Города» записи, где эти два поля совпадают, и показывает только такие города.

Итоговая связь

Последняя стрелка на схеме идёт от справочника «Города» прямо к полю «Город» на форме. Она показывает, что после того, как условие фильтрации отработало, отобранные значения (города, соответствующие выбранным типу продукции и региону) попадают в выпадающий список на экране.

Создание таблиц

Для создания зависимых списков этого необходимо создать таблицы-справочники и целевую таблицу. Подробнее о настройке выпадающих списков смотрите в разделе «Настройка выпадающих списков ФВД».

Примечание — далее на примере создадим форму ввода данных «Домашняя техника», в которой выбор бренда будет зависеть от выбора типа техники.

Из главного меню перейдите на портал ФВД: «Формы ввода данных/ Настройки/ Таблицы». Подробнее о создании таблицы ФВД смотрите в разделе «Формирование таблицы для хранения данных и настройка свойств полей данных в форме ввода».

Создание таблицы-справочника для первого поля (основной список)

Выберите хранилище данных, нажмите на кнопку «Добавить», укажите название таблицы, например, «Тип домашней техники».

Нажмите на кнопку «Добавить поле», укажите тип поля и название. Например: applainces_type — значения для основного выпадающего списка: Стиральная машина, Блендер, Кофеварка, Пылесос.

Проверьте данные и нажмите на кнопки «Сохранить» и «Записать в хранилище».

Создание таблицы-справочника для второго поля (зависимый список)

В нужном хранилище данных нажмите на кнопку «Добавить», укажите название таблицы, например, «Бренд домашней техники».

Добавьте основное поле. Например, applainces_type. Перейдите в настройки свойств поля и в разделе «Выбор из справочника» выберите основную таблицу-справочник, созданную на шаге один. Затем укажите поле, из которого будут подставляться значения.

Добавьте поле для зависимого выпадающего списка, например applainces_brand.

Проверьте данные и нажмите на кнопки «Сохранить» и «Записать в хранилище».

Примечание — для корректной работы зависимых выпадающих списков в целевой таблице при заполнении таблицы-справочника каждая запись должна быть связана с соответствующими значениями из основных таблиц-справочников (или фиксированными значениями, если зависимость настроена от значений справочника).
Например, для связи «Тип техники → Бренд» каждая запись бренда должна содержать ссылку на конкретный тип техники: Bosch, LG, Samsung — для стиральных машин; Philips, Braun, KitchenAid — для блендеров и т.д.

Создание целевой таблицы

Создание таблицы, в которой необходимо настроить зависимый выпадающий список.

В нужном хранилище данных нажмите на кнопку «Добавить», укажите название таблицы, например, «Домашняя техника».

Создайте необходимые поля:

  • home_appliance — свяжите основной выпадающий список с таблицей-справочником и полем «Типы домашней техники» в настройках свойств поля;
  • applainces_brand — свяжите зависимый выпадающий список с таблицей-справочником «Бренды домашней техники» и с полем «Бренды техники»;
  • при необходимости добавьте другие поля. Например, «Комментарий» или «Дата».
Примечание — убедитесь, что для полей с выпадающим списком выбраны соответствующие справочники. После создания таблицы в хранилище редактирование полей будет невозможно.

Проверьте данные и нажмите на кнопки «Сохранить» и «Записать в хранилище».

Настройка ФВД с целевой таблицей

После заполнения данными таблиц справочников настройте зависимые поля в целевой форме ввода данных. Подробнее о настройке формы смотрите в разделе «Настройка форм ввода данных в режиме конструктора».

В форме ввода данных теперь можно настроить зависимость выпадающего списка от одного или нескольких полей (как от других выпадающих списков, так и от фиксированных значений справочника).

Настройка зависимого поля:

  • Перейдите в настройки поля, для которого нужно настроить зависимость (в примере — appliances brand).
  • Включите переключатель напротив раздела настроек «Зависимое поле»:
    • «Поле Справочника для связи» — выберите поле из справочника зависимого списка, по которому будет выполняться фильтрация (например, «Тип техники»). Значение нельзя сбросить, если связь уже добавлена. В примере: в справочнике «Бренд домашней техники» есть поле «Тип техники», выберите его
    • «Тип зависимости» — выберите один из вариантов:
      • «От полей Формы ввода» — значение для фильтрации берётся из одного или нескольких полей текущей формы. В примере: выберите «От полей Формы ввода».
      • «От значений Справочника» — значение для фильтрации берётся из фиксированных записей справочника (можно выбрать несколько значений).
      • «Зависит от» – в зависимости от выбранного типа:

        • Если выбран тип «От полей Формы ввода», здесь отобразятся все поля формы, имеющие тип «Выпадающий список». Выберите то поле, значение которого будет использовано для фильтрации.
          В примере: выберите поле home_appliance (тип техники).

        • Если выбран тип «От значений Справочника», то выберите одно или несколько значений из справочника, при совпадении с которыми будет срабатывать фильтрация.

Примечание — зависимость будет работать даже если родительское поле защищено от редактирования (предзаполнено и недоступно для изменения пользователем).

Нажмите на кнопку «Сохранить» в настройках поля и на кнопку «Сохранить» в настройках формы. Зависимый выпадающий список в форме ввода данных настроен.

Связи контента