Получение значения группировки

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

  1. Skellar

    Skellar Well-Known Member

    Регистрация:
    22 июл 2008
    Сообщения:
    87
    Симпатии:
    0
    Подскажите, есть запрос :
    Код ( (Unknown Language)):
    ВЫБРАТЬ
    ВП.Показатель,
    ВП.Период,
    "Формула",
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВП.Показатель)
    ИЗ
    (ВЫБРАТЬ
    ВаловаяПрибыль.Показатель КАК Показатель,
    ВаловаяПрибыль.Период КАК Период,
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВаловаяПрибыль.Показатель) КАК Раздел,
    ВаловаяПрибыль.Сумма КАК Сумма
    ИЗ
    ВаловаяПрибыль КАК ВаловаяПрибыль

    СГРУППИРОВАТЬ ПО
    ВаловаяПрибыль.Период,
    ВаловаяПрибыль.Сумма,
    ВаловаяПрибыль.Показатель) КАК ВП
    ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    Сч9001.Период КАК Период,
    Сч9001.Сумма КАК Сумма,
    Сч9001.Показатель КАК Показатель
    ИЗ
    Сч9001 КАК Сч9001) КАК Выручка
    ПО ВП.Период = Выручка.Период
    ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    ДоходыРасходы.Период КАК Период,
    ДоходыРасходы.Сумма КАК Сумма,
    ДоходыРасходы.Показатель КАК Показатель
    ИЗ
    (ВЫБРАТЬ
    Сч9101.Период КАК Период,
    Сч9101.Раздел КАК Раздел,
    Сч9101.Показатель КАК Показатель,
    ЕСТЬNULL(Сч9101.Сумма, 0) КАК Сумма
    ИЗ
    Сч9101 КАК Сч9101

    ОБЪЕДИНИТЬ ВСЕ

    ВЫБРАТЬ
    Сч9102.Период,
    Сч9102.Раздел,
    Сч9102.Показатель,
    ЕСТЬNULL(-Сч9102.Сумма, 0)
    ИЗ
    Сч9102 КАК Сч9102) КАК ДоходыРасходы) КАК ДохРас
    ПО ВП.Период = ДохРас.Период
    ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
    Сч9008.Период КАК Период,
    Сч9008.Сумма КАК Сумма,
    Сч9008.Показатель КАК Показатель
    ИЗ
    Сч9008 КАК Сч9008) КАК ОХР
    ПО ВП.Период = ОХР.Период

    СГРУППИРОВАТЬ ПО
    ВП.Период,
    ВП.Показатель,
    ВП.Сумма
    Как получить значение КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВП.Показатель) ? В отчете выводятся различные количества (2 и 1). При попытке поставить условие типа: Если Количество..... = 2 Тогда Выполнить. Но это условие не выполняется. А если написать КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВП.Показатель)+1, результаты вывод увеличатся вдвое. Вопрос - как получить из КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВП.Показатель) обычное число? Или как сделать условие, чтобы оно реагировало?
     
  2. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    Ничего не понял.
     
  3. Skellar

    Skellar Well-Known Member

    Регистрация:
    22 июл 2008
    Сообщения:
    87
    Симпатии:
    0
    Перезапарился я с этими отчетами уже. Сейчас попробую корректнее сформулировать. Пятая строка описания запроса - поле КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВП.Показатель). Оно выводит в таблицу цифорки 1 или 2 в зависимости от ВП.Показатель. Мне нужно сделать условие с КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВП.Показатель). Условие должно быть таким: Если КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВП.Показатель) = 2, то блаблабла. Условие не выполняется. Не выполняется и все тут. Думается, что из-за группировок, но их убирать нельзя. Как сделать, чтобы условие выполнялось?
    Из замеченного - если написать "КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВП.Показатель)+1 " - будут выводится цифорки 2 или 4.
    Пояснение - ВП это таблица вложенного запроса, формируется из таблицы ВаловаяПрибыль, которая является временной таблицей, которая формируется из объединения двух временных таблиц. Здесь привел только кусок кода, в самом запросе строк 250-300. Приводить остальной текст считаю нецелесообразным.
    Так понятнее?
     
  4. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    Условие надо в секцию ГДЕ, или как? Почему нельзя его туда написать?
     
  5. Skellar

    Skellar Well-Known Member

    Регистрация:
    22 июл 2008
    Сообщения:
    87
    Симпатии:
    0
    Простите, а как оно будет выглядеть в "где" ?
    Я планировал сделать поле условием и выводить вот так:
    ВЫБОР КОГДА КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВП.Показатель)=2 ТОГДА (длинная формула) ИНАЧЕ (другая формула) КОНЕЦ
    Не выходит, КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВП.Показатель) считает себя равным единице. Что ж я делаю не так ?
     
  6. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    Сгруппируйте в запросе, поместите во временную таблицу, или во вложенный запрос, и еще одним запросом обработайте результат.
     
  7. Skellar

    Skellar Well-Known Member

    Регистрация:
    22 июл 2008
    Сообщения:
    87
    Симпатии:
    0
    У меня в запросе есть вложенный вопрос ВП, там идет группировка и я делаю отдельное поле КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВаловаяПрибыль.Показатель) КАК Раздел. Так вот, попытка проделать вышеперечисленное с этим Раздел тоже проваливается.
    Я правильно понял, вы такой подход имеете ввиду?
     
  8. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    Пишите же по-русски. Еще один вложенный надо, или в ВТ помещайте.
     
  9. Skellar

    Skellar Well-Known Member

    Регистрация:
    22 июл 2008
    Сообщения:
    87
    Симпатии:
    0
    Поместил свой запрос в еще один вложенный. Тот же результат. Что вам не нравится в моем русском?
     
  10. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    А.... просто не читал все.

    ВЫБРАТЬ
    ВП.Показатель,
    ВП.Период,
    "Формула",
    ВЫБОР КОГДА ВП.Раздел=2 ТОГДА
    ....
    ИНАЧЕ
    ....
    КОНЕЦ КАК
    ИЗ
    (ВЫБРАТЬ
    ВаловаяПрибыль.Показатель КАК Показатель,
    ВаловаяПрибыль.Период КАК Период,
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ВаловаяПрибыль.Показатель) КАК Раздел,


    Так пробовали?
     
  11. Skellar

    Skellar Well-Known Member

    Регистрация:
    22 июл 2008
    Сообщения:
    87
    Симпатии:
    0
    Да, я в 7ом сообщении писал. Та же фигня. Есть еще какие-нибудь мысли? = \
     
  12. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    Просто в первом посте у вас есть переменная "Раздел", а верхний запрос выбирает не ее.
     
  13. Skellar

    Skellar Well-Known Member

    Регистрация:
    22 июл 2008
    Сообщения:
    87
    Симпатии:
    0
    Вобщем не понимаю я, что делать. Задвоение происходит из за того, что ВП по сути состоит из объединения двух таблиц.
     
  14. Darlock

    Darlock Well-Known Member
    1C Team

    Регистрация:
    4 янв 2008
    Сообщения:
    558
    Симпатии:
    0
    Попробуйте разложить вашу махину на более простые запросы и использовать пакет запросов (временные таблицы) станет проще разбираться с траблой и вам и нам
     
  15. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    + к тому, есть консоль запросов, которая позволяет просматривать содержимое временных таблиц.
     
  16. Allexei

    Allexei Well-Known Member

    Регистрация:
    2 май 2008
    Сообщения:
    322
    Симпатии:
    0
    Количество различные определяется на этапе работы с выбранной информацией а не на этапе выборки данных. То бишь весь запрос во временную таблицу а после применяйте формулу к нему.
     
  17. Skellar

    Skellar Well-Known Member

    Регистрация:
    22 июл 2008
    Сообщения:
    87
    Симпатии:
    0
    Allexei, Попробовал, результат Количества при таком выводе везде был = 1.
    Darlock, Да весь запрос и так разложен на кучу временных таблиц. Просто итог - стыковка нескольких таблиц, результаты в которых есть результат формул ,которые применяются к разным значениям этих временных таблиц. Стыковал через объединения. Старался максимально упростить конструкцию, но все равно получилось много строк.
    Проблема была в том, что основная таблица ВП формировалась из ОБЪЕДИНЕНИЯ двух временных таблиц. На начальном этапе работы не получилось полным соединением сделать корректно, некоторые строки или суммы не выводились. А из-за ОБЪЕДИНЕНИЯ и были проблемы. В итоге решил все сделав полное соединение и использовав ЕСТЬNULL(ПараметрВременнойТаблицы1,ПараметрВременнойТаблицы2).
    Всем большое спасибо!
     
Загрузка...

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