pageInfo=#pageInfo# id="#d.specification_item_param_id#" status=#pageInfo.status# trackOut="tr" idAttributesOut="id" /> select sp.param_id, sp.service_id, sp.service_param_id, ac.param_class_id ,p.param, p.param_short, p.precision, spp.min_price, c.param_class, u.measure_short ,g.area_code, a.code as abstract_service_code, m.code as modifier_code, p.code as param_code from service_param sp left outer join service s on (sp.service_id=s.service_id) left outer join abstract_service a on (s.abstract_service_id=a.abstract_service_id) left outer join abstract_service_param_class ac on (sp.abstract_service_param_class_id=ac.abstract_service_param_class_id) left outer join area g on a.area_id=g.area_id left outer join modifier m on (s.modifier_id=m.modifier_id) left outer join param p on (sp.param_id=p.param_id) left outer join measure u on (p.measure_id=u.measure_id) left outer join param_class c on (ac.param_class_id=c.param_class_id) left outer join service_param_price spp on (sp.service_param_id=spp.service_param_id) where sp.service_param_id= select f.specification_id, f.specification, a.code as abstract_service_code, a.abstract_service_id, a.abstract_service, s.service_id, m.modifier_id, m.modifier, m.code as modifier_code from specification_item si left outer join service s on (si.service_id=s.service_id) left outer join abstract_service a on (s.abstract_service_id=a.abstract_service_id) left outer join specification f on (si.specification_id=f.specification_id) left outer join modifier m on (s.modifier_id=m.modifier_id) where si.specification_item_id= select sp.param_id, c.param_class, p.param, p.param_short, p.precision, spp.min_price, spp.service_param_price_id, a.code as abstract_service_code, a.abstract_service, m.modifier, n.specification, g.area_code, m.code as modifier_code, p.code as param_code ,au.login as creator, au.shortname as creator_shortname, mu.login as updater, mu.shortname as updater_shortname from specification_item_param sip left outer join service_param sp on (sip.service_param_id=sp.service_param_id) left outer join abstract_service_param_class ac on (sp.abstract_service_param_class_id=ac.abstract_service_param_class_id) -- варианты -- вариант компонента задан в шаблоне, тогда он не должен быть задан в экземпляре, и в шаблоне не должен быть задан класс (компонент) -- в шалоне задан компонент, тогда в экземпляре должен быть задан его вариант -- запрещенные комбинации: -- в шаблоне задан класс, но в экземпляре не задан вариант компонента -- в шаблоне задан класс, но в экземпляре задан член другого класса -- в шаблоне задан вариант компонента (не задан класс, это контролируется ограничением), но в экземпляре тоже задан компонент -- ... left outer join param p on (sp.param_id=p.param_id) -- *** выглядит неэффективно. Также создаст ошибку при -1 в sip.param_id left outer join param_class c on (ac.param_class_id=c.param_class_id) -- это конкретная запись экземпляра, -- поэтому вариант компонента всегда известен, и класс берем от него, -- не нужно задумываться, какой класс определен в шаблоне left outer join service_param_price spp on /***/ (sp.service_param_id=spp.service_param_id) -- параллельные сущности со specification_item_param left outer join service s on (sp.service_id=s.service_id) left outer join abstract_service a on (s.abstract_service_id=a.abstract_service_id) left outer join area g on (a.area_id=g.area_id) left outer join specification_item si on (sip.specification_item_id=si.specification_item_id) left outer join specification n on (si.specification_id=n.specification_id) left outer join modifier m on (s.modifier_id=m.modifier_id) left outer join usr au on (sip.creator_id=au.usr_id) left outer join usr mu on (sip.updater_id=mu.usr_id) where sip.specification_item_param_id= Вариант компонента #qDecoration.param_class#/#qDecoration.param# экземпляра услуги #qDecoration.abstract_service_code# #qDecoration.abstract_service# / #qDecoration.modifier# (#qDecoration.specification#) [#d.specification_item_param_id#]
#status.errorMessage#
***
Спецификация
*** select p.param, p.precision, m.measure_short from param p left outer join param_class c on (p.param_class_id=c.param_class_id) left outer join measure m on (coalesce(p.measure_id,c.measure_id)=m.measure_id) where p.param_id= #qParam.param# +++ select p.param_id, p.param, c.param_class, m.measure_short from param p join param_class c on (p.param_class_id=c.param_class_id) left outer join measure m on (coalesce(p.measure_id, c.measure_id)=m.measure_id) where p.param_class_id= order by 3,2 здесь выбирается вариант компонента. Если вариантов нет, создавать единственный вариант не нужно (из шаблона - варианта услуги)
--->
Количество
#qServiceParam.measure_short# (для оплаты по потреблению заполняется при биллинге)
Цена без НДС
₽       Базовая цена без НДС: #qDecoration.min_price# ₽не задана
Создано
#dateFormat(d.dt_created,'DD.MM.YYYY')# #timeFormat(d.dt_created,'HH:MM')# #qDecoration.creator# (#qDecoration.creator_shortname#)       Изменено #dateFormat(d.dt_updated,'DD.MM.YYYY')# #timeFormat(d.dt_updated,'HH:MM')# #qDecoration.updater# (#qDecoration.updater_shortname#)