Скрипты позволяют с помощью метода getCatalog получать значения справочников и использовать их в форме: например, вычислять табличные значения или фильтровать строки одного справочника по значению из другого справочника.
Допустим, есть задача: когда оператор выбирает в форме регион, в поле «Город» должны быть доступны только города из этого региона, а не общий список городов.
В этом примере полю «Регион» соответствует справочник «Регионы», а полю «Город» — справочник «Города». Города и регионы связаны между собой в отдельном справочнике «Города по регионам».
Чтобы фильтровать список городов по выбранному региону, добавим в скрипты формы следующий блок кода:
let catalogItems = null; form.getCatalog("Города по регионамНазвание справочника, который связывает значения двух других справочников").then(items => { catalogItems = items; }); form.onChange(["РегионПоле, при изменении которого меняется список выбираемых значений в другом поле"]).setFilter("ГородПоле, значения в котором фильтруются в зависимости от выбора в первом поле", state => { if (!catalogItems || !state.changes[0] || !state.changes[0].columns) return null; const region = state.changes[0].columns["РегионНазвание колонки, по значениям которой осуществляется фильтрация"]; const filtered = catalogItems .filter(item => item.columns["РегионНазвание колонки, по значениям которой осуществляется фильтрация"] === region) .map(item => item.columns["ГородНазвание колонки, из которой берутся отфильтрованные значения"]); return filtered.length > 0 ? { values: filtered } : null });