pageInfo=#pageInfo# id="#d.abstract_service_param_class_id#" status=#pageInfo.status# trackOut="tr" idAttributesOut="id" /> select a.abstract_service ,a.abstract_service_id ,a.code from abstract_service a where a.abstract_service_id= select p.param_class, m.measure_id, m.measure from param_class p left outer join measure m on m.measure_id=p.measure_id where param_class_id= select a.login as creator, a.shortname as creator_shortname, m.login as updater, m.shortname as updater_shortname from #pageInfo.entity# e left outer join usr a on (e.creator_id=a.usr_id) left outer join usr m on (e.updater_id=m.usr_id) where e.#pageInfo.key#= Компонент [#d.abstract_service_param_class_id#] #qParamClass.param_class# [#d.param_class_id#] абстрактной услуги #qAbstractService.abstract_service# [#d.abstract_service_id#]
#status.errorMessage#
Компонент
select c.param_class_id, c.param_class, m.measure_short from param_class c left outer join measure m on (c.measure_id=m.measure_id) order by 2 Единица измерения: #qParamClass.measure#(нет) Вариант компонента либо фиксируется в варианте услуги, либо выбирается при формировании спецификации
Множественный
checked /> Если отметка стоит, то для экземпляра услуги можно выбирать несколько вариантов компонента, например, несколько типов диска
Сортировка
Целое число - порядок, в котором Компонент будет выводиться в составе данной услуги. Рекомендуется ставить через 100, чтобы потом удобнее было тасовать
Описание
Создано
#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#)
Это шаблон для компонента экземпляра услуги (строки спецификации). Если в компонентах услуги определен Компонент, а не конкретный вариант компонента, то нужно присвоить цены всем компонентам этого класса, которые актуальны для данной услуги. Это требуется не только для назначения цен, но и для ограничения списка возможных вариантов выбора компонента для данной услуги. *** Может быть, вместо "компонент" нужно ввести термин "тип компонента", потому что это не экземпляр. Например, Компонент - дисковое пространство, а компонент - дисковое пространство SSD, это уточнение класса компонента, но не конкретный объем на конкретном СХД, и даже не конкретная дисковая квота в рамках контракта (спецификации)

Реализации (конкретные параметры вариантов услуг), использующих данный компонент

select ac.abstract_service_param_class_id ,g.area_code ,s.abstract_service_id ,s.service_id ,a.abstract_service ,a.code ,sp.service_param_id ,ac.param_class_id ,pc.param_class ,p.param_id ,p.param ,p.code as param_code ,p.sort ,s.modifier_id /*всегда берем ключ от той таблицы, к которой присоединяем - если нарушена ссылка, останется больше информации*/ ,m.modifier ,a.modifier_class_id ,mc.modifier_class ,m.code as modifier_code ,u.measure_short from abstract_service_param_class ac left outer join param_class pc on (ac.param_class_id=pc.param_class_id) left outer join service_param sp on (ac.abstract_service_param_class_id=sp.abstract_service_param_class_id) left outer join param p on (ac.param_class_id=p.param_class_id AND sp.param_id=p.param_id)/***условие выглядит избыточно жестким, сразу из класса и экземпляра, а зачем*/ 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 modifier m on (s.modifier_id=m.modifier_id) /*** тут еще можно присоединить класс модификатора, и тоже варианты - из шаблона или экземпляра... но экземпляр бывает пустым*/ left outer join modifier_class mc on (mc.modifier_class_id=m.modifier_class_id) /*кажется, в данном случае правильно по шаблону*/ left outer join measure u on (pc.measure_id=u.measure_id)/***единица измерения из класса может быть переопределена - может, здесь вообще без нее обойтись... цены-то нет. А в цене единица должна быть зафиксирована*/ where ac.abstract_service_param_class_id= order by p.sort, ac.abstract_service_param_class_id
ID Вариант услуги Код Компонент Ед.изм. Сортировка
#service_param_id# #abstract_service# #modifier# #request.skuCode(area_code, code, modifier_code, param_code)# #param_class#: #param# #measure_short# #sort#