Руководство Melbis Shop: оглавление
Раздел «Реестр настроек» (закладка «Проектирование») — центральное место, где разработчик задаёт свойства и опции элементов магазина. Владельцу важно знать, что многие настраиваемые списки (Тип, Состояние, Стиль, Содержание и т.п.), встречающиеся по всему магазину, расширяются именно здесь. Окно состоит из четырёх закладок.
*.Закладка объявляет поля, которых нет в обычной карточке элемента. Список «Расположение» выбирает, чему опции принадлежат: каталог разделы, характеристики, бренды, поставщики, поставщики склады, параметры, параметры значения, пользователи, пользователи группы, промо-блоки, фильтры, налоги области. Наборы независимы — опции разделов не видны у брендов и наоборот.
Слева — дерево «Список разделов»: опции группируются папками, переставляются и переименовываются. Признак группы включается кнопкой на панели; у группы своих настроек нет, она только объединяет опции.
Для конечной опции справа открываются «Настройки опции»:
Если вместо свободного ввода нужен выбор из готового списка, значения перечисляются в группе «Набор фиксированных ключей»: у каждого свой ключ и наименование.
Сами значения заполняются не здесь, а в разделах, к которым опции относятся — например, «Каталог» → «Дополнительные опции» проставляет их сразу по всему дереву разделов. Реестр только объявляет, какие опции существуют и какого они вида; витрина читает их значения и меняет поведение раздела — сколько товаров на странице, какой блок показать и тому подобное.
Закладка объявляет именованные 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-запросов — в руководстве разработчика.