Документация iSZN

Lookup.FilterRules

Дополнительное свойство элемента структуры персонального документа Lookup.FilterRules содержит правила фильтрации значений реквизитов.

Чтобы определить правило фильтрации необходимо указать для данного реквизита в свойстве Lookup.CustomSQL запрос, который возвращает дополнительный столбец, по которому осуществляется фильтрация значений реквизита.

В правиле фильтрации необходимо указать:

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

Пример

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

Структура документа:

Элемент Тип данных Примечание
Обращения Таблица
- Дата обращения Дата
- Вид услуги Ссылка Ссылка на запись справочника предметов назначения.
- Вид подуслуги Строка Ссылка на запись справочника предметов назначения. Доступны подуслуги выбранного предмета назначения.
- Количество Целое число

Свойство Lookup.SQL реквизита «Вид услуги» имеет вид:

SELECT uszn.pkGen.RgnPrefix(region_id)||name AS value, region_id*1000000+id AS vobj
  FROM uszn.dic_pk_items
  WHERE region_id IN (SELECT parent_id FROM uszn.tsrv_flat_regions WHERE child_id={PC_REGION_ID})
  ORDER BY region_id, name

Для реквизита «Вид подуслуги» необходимо в свойстве Lookup.CustomSQL выбирать дополнительно столбец item_key, который будет проверяться правилом фильтрации на равенство столбцу vobj реквизита «Вид услуги»:

SELECT region_id*1000000+id AS vobj, uszn.pkGen.RgnPrefix(region_id)||name AS value,
    item_region_id*1000000+item_id AS item_key
  FROM uszn.dic_pk_subitems
  WHERE region_id IN (SELECT parent_id FROM uszn.tsrv_flat_regions WHERE child_id={PC_REGION_ID})
  ORDER BY region_id, name

Для реквизита «Вид подуслуги» необходимо в свойстве FilterRules указать правило:

Наименование поля item_key
Оператор =
Второй операнд Реквизит «Вид услуги»
Действие при невыполнении правила Show error
Текст ошибки при валидации реквизита подуслуга не соответствует выбранной услуге

См. также