• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Помогите С Запросом

  • Автор темы Allexei
  • Дата начала
A

Allexei

Всем доброго времени суток. Вопрос такой. Есть запрос по регустру.В выборку попадают поля номенклатура и количествоПроданногоТовара.Все это дело выводится в отчет. Сделано все, разумеется, на скд. Теперь необходимо что бы выводилось еще два поля.Первое поля это процент продаж от общих продаж и второе это процент продаж от продаж по данной группе товаров (где группа является самым верхним уровнем справосника номенклатуры). Есть идеи как это сделать не прибегая к ручному кодописанию?
------------------------
с первым разобрался. Второй вопрос открыт. Как вариант хотел сделать итоги по иерархии, поместить их во временную таблицу, из временной таблицы выбрать элементы у которых родитель равен пустой ссылке. Но к сожелению во временных таблицах функции итогов не работают...
 
D

Darlock

А сделать отдельный пакет, который будет считать это, не подходит? Сделать аналог итогов, только не итоги использовать, а группировку.
 
A

Allexei

А сделать отдельный пакет, который будет считать это, не подходит? Сделать аналог итогов, только не итоги использовать, а группировку.

Если честно то не совсем понял как. Сейчас сделано так:
Код:
ВЫБРАТЬ
Номенклатура.Ссылка
ПОМЕСТИТЬ Товары
ИЗ
Справочник.Номенклатура КАК Номенклатура
ГДЕ
Номенклатура.Ссылка = &Ссылка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Товары.Ссылка,
ВЫБОР
КОГДА Товары.Ссылка.Родитель.Родитель = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
ТОГДА Товары.Ссылка.Родитель
КОГДА Товары.Ссылка.Родитель.Родитель.Родитель = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
ТОГДА Товары.Ссылка.Родитель.Родитель
КОГДА Товары.Ссылка.Родитель.Родитель.Родитель.Родитель = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
ТОГДА Товары.Ссылка.Родитель.Родитель.Родитель
КОГДА Товары.Ссылка.Родитель.Родитель.Родитель.Родитель.Родитель = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
ТОГДА Товары.Ссылка.Родитель.Родитель.Родитель.Родитель
КОГДА Товары.Ссылка.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
ТОГДА Товары.Ссылка.Родитель.Родитель.Родитель.Родитель.Родитель
КОНЕЦ КАК Родитель
ИЗ
Товары КАК Товары

Если не трудно то не могли бы Вы привести пример для товаров помещенных во временную таблицу "Товары"
 
U

unknown181538

я так понимаю в написанных пакетах еще есть КолПродТов допустим

ВЫБРАТЬ
Номенклатура.Ссылка
ПОМЕСТИТЬ Товары
ИЗ
Справочник.Номенклатура КАК Номенклатура
ГДЕ
Номенклатура.Ссылка = &Ссылка

;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
Товары.Ссылка,
ВЫБОР
КОГДА Товары.Ссылка.Родитель.Родитель = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
ТОГДА Товары.Ссылка.Родитель
КОГДА Товары.Ссылка.Родитель.Родитель.Родитель = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
ТОГДА Товары.Ссылка.Родитель.Родитель
КОГДА Товары.Ссылка.Родитель.Родитель.Родитель.Родитель = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
ТОГДА Товары.Ссылка.Родитель.Родитель.Родитель
КОГДА Товары.Ссылка.Родитель.Родитель.Родитель.Родитель.Родитель = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
ТОГДА Товары.Ссылка.Родитель.Родитель.Родитель.Родитель
КОГДА Товары.Ссылка.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
ТОГДА Товары.Ссылка.Родитель.Родитель.Родитель.Родитель.Родитель
КОНЕЦ КАК Родитель,
КолПродТов
ПОМЕСТИТЬ ВТ_1
ИЗ
Товары КАК Товары
;
ВЫБРАТЬ
ВТ_1.Родитель,
СУММА(ВТ_1.КолПродТов)КАК КолПоГруппе
ПОМЕСТИТЬ ВТ_Сгр
ИЗ ВТ_1 КАК ВТ_1
СГРУППИРОВАТЬ ПО ВТ_1.Родитель
;
ВЫБРАТЬ
ВТ_1.КолПрод/ВТ_Сгр.КолПоГруппе КАК Процент,
ВТ_1.Товар,
ВТ_1.Родитель КАК Родитель
ИЗ ВТ_1 КАК ВТ_1 ВНУТРЕННЕЕ СОЕДИНЕНИЕ
ВТ_Сгр По ВТ_1.Родитель = ВТ_Сгр.Родитель

Но вообще, мне кажется, что можно и средствами СКД посчитать процент из группы, если в результат будет попадать только родитель верхнего уровня, как вы сделали.
 
A

Allexei

unknown181538 именно так и сделал, просто текст запроса не стал приводить полностью так как не думаю что там есть что то трудное кроме получения корневого элемента(да и его получение не трудное, просто не очень красивое какое то...). Тока проблема состоит в том что конструкция выбор когда....выбор когда...не очень феншуйная, мне кажется...Вот и думал как бы ее сделать более "православной"...
 
D

Darlock

"ВЫБОР КОГДА..." вполне нормальная конструкция, я в ЗУПе видел и не раз
 
U

unknown181538

Нафига ж я это тогда печатал....)))
 
A

Allexei

unknown181538
Ну я же не напечатал.А вопрос встречается только на мисте и то долго искал.Большое спасибо всем.
 
P

puh14

Где -то встречал вопрос разработчику среды (не 1с), что на 143-ем вложенном кейсе выдается ошибка компиляции ;-)
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!