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

Тема в разделе "1C и всё что с ней связано", создана пользователем Allexei, 24 янв 2012.

  1. Allexei

    Allexei Well-Known Member

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

    Darlock Well-Known Member
    1C Team

    Регистрация:
    4 янв 2008
    Сообщения:
    558
    Симпатии:
    0
    А сделать отдельный пакет, который будет считать это, не подходит? Сделать аналог итогов, только не итоги использовать, а группировку.
     
  3. Allexei

    Allexei Well-Known Member

    Регистрация:
    2 май 2008
    Сообщения:
    322
    Симпатии:
    0
    Если честно то не совсем понял как. Сейчас сделано так:
    Код ( (Unknown Language)):
    ВЫБРАТЬ
    Номенклатура.Ссылка
    ПОМЕСТИТЬ Товары
    ИЗ
    Справочник.Номенклатура КАК Номенклатура
    ГДЕ
    Номенклатура.Ссылка = &Ссылка
    ;

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

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    я так понимаю в написанных пакетах еще есть КолПродТов допустим

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

    ;

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

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

    Allexei Well-Known Member

    Регистрация:
    2 май 2008
    Сообщения:
    322
    Симпатии:
    0
    unknown181538 именно так и сделал, просто текст запроса не стал приводить полностью так как не думаю что там есть что то трудное кроме получения корневого элемента(да и его получение не трудное, просто не очень красивое какое то...). Тока проблема состоит в том что конструкция выбор когда....выбор когда...не очень феншуйная, мне кажется...Вот и думал как бы ее сделать более "православной"...
     
  6. Darlock

    Darlock Well-Known Member
    1C Team

    Регистрация:
    4 янв 2008
    Сообщения:
    558
    Симпатии:
    0
    "ВЫБОР КОГДА..." вполне нормальная конструкция, я в ЗУПе видел и не раз
     
  7. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    Нафига ж я это тогда печатал....)))
     
  8. Allexei

    Allexei Well-Known Member

    Регистрация:
    2 май 2008
    Сообщения:
    322
    Симпатии:
    0
    unknown181538
    Ну я же не напечатал.А вопрос встречается только на мисте и то долго искал.Большое спасибо всем.
     
  9. puh14

    puh14 Well-Known Member
    1C Team

    Регистрация:
    11 июл 2008
    Сообщения:
    1.412
    Симпатии:
    0
    Где -то встречал вопрос разработчику среды (не 1с), что на 143-ем вложенном кейсе выдается ошибка компиляции ;-)
     
Загрузка...

Поделиться этой страницей