1. Руководство пользователя › 1.5 Проектирование › Реестр настроек

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

Дополнительные опции

Закладка объявляет поля, которых нет в обычной карточке элемента. Список «Расположение» выбирает, чему опции принадлежат: каталог разделы, характеристики, бренды, поставщики, поставщики склады, параметры, параметры значения, пользователи, пользователи группы, промо-блоки, фильтры, налоги области. Наборы независимы — опции разделов не видны у брендов и наоборот.

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

Для конечной опции справа открываются «Настройки опции»:

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

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

Индивидуальные фильтры

Закладка объявляет именованные SQL-запросы, которые сотрудник включает в «Расширенном запросе» раздела наравне с обычными условиями. Список «Расположение» говорит, где фильтр появится: товары, заказы или покупатели.

Запрос пишется к базе сервера и должен вернуть один столбец — идентификаторы строк, которые надо отобрать. Префикс таблиц пишется как {DBNICK}_, программа подставит имя магазина. Например, покупатели без заказов:

SELECT c.id
  FROM {DBNICK}_client c
  LEFT JOIN {DBNICK}_orders_version ov
    ON ov.client_id = c.id
 WHERE ov.id IS NULL

Параметры. Двоеточие с именем — :DAYS_AGO — делает место, куда сотрудник подставит своё значение: при запуске фильтра программа спросит их в отдельном окне. Имена произвольные, одно и то же имя в запросе можно повторять.

Списки значений

Вводить числовой идентификатор руками неудобно, поэтому параметр может предлагать выбор. Для этого на второй закладке заводится список значений со своим Псевдонимом, а параметр называет этот псевдоним после собаки:

WHERE ps.id = :STOCK@QUERY_STOCK

Запрос списка пишется к локальной базе программы — той, куда приезжают справочники при открытии окна, — и обязан вернуть ровно два столбца, ID и NAME. Сотрудник видит NAME, а в фильтр уходит ID. Имя может собираться из нескольких, чтобы одинаковые значения различались:

SELECT ps.id AS ID,
       '[' || p.name || '] ' || ps.name AS NAME
  FROM cut_provider_stock ps
  JOIN cut_provider p
    ON ps.provider_id = p.id
 ORDER BY p.pos, ps.pos

Списки общие: один псевдоним зовут сколько угодно фильтров в любых разделах. Ошибка в запросе или неизвестный псевдоним ничего не ломают — параметр просто останется полем для ручного ввода.

Имена таблиц локальной базы отличаются от серверных: справочники приезжают копиями с приставкой cut_, а рабочие копии товаров и характеристик — с приставкой u_. Посмотреть структуру можно в «Среде разработки».

Детали написания модулей и SQL-запросов — в руководстве разработчика.