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#]
***
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#
(для оплаты по потреблению заполняется при биллинге)