Имя: Пароль:
1C
1С v8
Тупняк с запросом
,
0 ZanZiBar
 
03.04.14
09:55
Народ. Нужен хелп. Короче задача такова собрать внешний отчёт по УТ.3 на определённый день. Показать Запланированные и Фактические поступления. Это сделано. Но нужно что бы 3м столбцом выводился процент Факта от Плана. Вот тут я и прикурил. Делал и через вычисляемые поля, и в теле запроса вводил, и в модуле пробовал вбивать настройки. Не работает. Делал через СКД
Текст запроса
//////////////////////
ВЫБРАТЬ
    ЕСТЬNULL(ДвиженияДенежныхСредствОбороты.Контрагент, ПланируемыеПоступленияДенежныхСредствОбороты.Контрагент) КАК Контрагент,
    ЕСТЬNULL(ДвиженияДенежныхСредствОбороты.Период, ПланируемыеПоступленияДенежныхСредствОбороты.Период) КАК Период,
    ВЫРАЗИТЬ(ПланируемыеПоступленияДенежныхСредствОбороты.СуммаПриход как ЧИСЛО(17,2)) КАК План,
    ВЫРАЗИТЬ(ДвиженияДенежныхСредствОбороты.СуммаОборот как ЧИСЛО(17,2)) КАК Факт,
    ВЫБОР
        КОГДА ДвиженияДенежныхСредствОбороты.СуммаОборот ЕСТЬ NULL
            ТОГДА "Нет поступлений"
        ИНАЧЕ ВЫБОР
                КОГДА ПланируемыеПоступленияДенежныхСредствОбороты.СуммаПриход ЕСТЬ NULL
                    ТОГДА "Нет запланированных"
                ИНАЧЕ ВЫРАЗИТЬ(ДвиженияДенежныхСредствОбороты.СуммаОборот / ПланируемыеПоступленияДенежныхСредствОбороты.СуммаПриход * 100 КАК ЧИСЛО(17, 2))
            КОНЕЦ
    КОНЕЦ КАК Процент
ИЗ
    РегистрНакопления.ПланируемыеПоступленияДенежныхСредств.Обороты(&ДатаНач, КОНЕЦПЕРИОДА(&ДатаНач, ДЕНЬ), День, Контрагент.Покупатель = &Покупатель) КАК ПланируемыеПоступленияДенежныхСредствОбороты
        ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ДвиженияДенежныхСредств.Обороты(
                &ДатаНач1,
                КОНЕЦПЕРИОДА(&ДатаНач1, ДЕНЬ),
                День,
                ПриходРасход = &Приход
                    И Контрагент.Покупатель = &Покупатель) КАК ДвиженияДенежныхСредствОбороты
        ПО ПланируемыеПоступленияДенежныхСредствОбороты.Контрагент = ДвиженияДенежныхСредствОбороты.Контрагент
            И (ДвиженияДенежныхСредствОбороты.Период = ПланируемыеПоступленияДенежныхСредствОбороты.Период)

УПОРЯДОЧИТЬ ПО
    ДвиженияДенежныхСредствОбороты.Период
//////////////////////
1 ZanZiBar
 
03.04.14
09:57
УТ 10.3
2 dk
 
03.04.14
09:58
полное соединение не надо
надо объединение с группировкой
3 cw014
 
03.04.14
09:59
1) А что именно не работает?
2) А как ты так рушишь прикольно процент, превращая его в составной тип
4 ZanZiBar
 
03.04.14
10:03
(2) В теле запроса заменить "ПОЛНОЕ СОЕДИНЕНИЕ" на "ОБЪЕДИНЕНИЕ С ГРУППИРОВКОЙ"?

(3) 1)Не выводит процент. Максимум чего добивался это деление на ноль. Но тексты не выводились что нет плана или факта

2) Не понял каким образом?
5 cw014
 
03.04.14
10:05
(3)    ВЫБОР
        КОГДА ДвиженияДенежныхСредствОбороты.СуммаОборот ЕСТЬ NULL
            ТОГДА "Нет поступлений" <--------- Строка однако
        ИНАЧЕ ВЫБОР
                КОГДА ПланируемыеПоступленияДенежныхСредствОбороты.СуммаПриход ЕСТЬ NULL
                    ТОГДА "Нет запланированных" <--------- Строка однако
                ИНАЧЕ ВЫРАЗИТЬ(ДвиженияДенежныхСредствОбороты.СуммаОборот / ПланируемыеПоступленияДенежныхСредствОбороты.СуммаПриход * 100 КАК ЧИСЛО(17, 2)) <--------- Число внезапно
            КОНЕЦ
    КОНЕЦ КАК Процент
6 cw014
 
03.04.14
10:06
(4) А зачем ты "выразить" везде нафтыкал?
7 ZanZiBar
 
03.04.14
10:08
(5) Так ведь идёт проверка на NULL. Если есть хоть в одном поле должна быть строка. Если нет должно быть число
8 salvator
 
03.04.14
10:09
(7) Кто тебе сказал, что должна быть строка?
9 ZanZiBar
 
03.04.14
10:10
(6) Когда пытался вбить выполнение в модуле выполнение. 1с ругалось что мол не может применять действия не к числу. Вот и оставил что бы гарантированно Поля План и Факт были числовыми
10 cw014
 
03.04.14
10:10
ВЫБРАТЬ
    ЕСТЬNULL(ДвиженияДенежныхСредствОбороты.Контрагент, ПланируемыеПоступленияДенежныхСредствОбороты.Контрагент) КАК Контрагент,
    ЕСТЬNULL(ДвиженияДенежныхСредствОбороты.Период, ПланируемыеПоступленияДенежныхСредствОбороты.Период) КАК Период,
    ЕСТЬNULL(ПланируемыеПоступленияДенежныхСредствОбороты.СуммаПриход,0) КАК План,
    ЕСТЬNULL(ДвиженияДенежныхСредствОбороты.СуммаОборот,0) КАК Факт,
    ВЫБОР
        КОГДА ЕСТЬNULL(ПланируемыеПоступленияДенежныхСредствОбороты.СуммаПриход,0) = 0
            ТОГДА 0
        ИНАЧЕ
            ВЫРАЗИТЬ(ЕСТЬNULL(ДвиженияДенежныхСредствОбороты.СуммаОборот,0) / ЕСТЬNULL(ПланируемыеПоступленияДенежныхСредствОбороты.СуммаПриход,0) * 100 КАК ЧИСЛО(17, 2))
    КОНЕЦ КАК Процент,
    ВЫБОР
        КОГДА ДвиженияДенежныхСредствОбороты.СуммаОборот ЕСТЬ NULL
            ТОГДА "Нет поступлений"
        КОГДА ПланируемыеПоступленияДенежныхСредствОбороты.СуммаПриход ЕСТЬ NULL
            ТОГДА "Нет запланированных"
        ИНАЧЕ NULL
    КОНЕЦ КАК ПроцентПредставления
ИЗ
    РегистрНакопления.ПланируемыеПоступленияДенежныхСредств.Обороты(&ДатаНач, КОНЕЦПЕРИОДА(&ДатаНач, ДЕНЬ), День, Контрагент.Покупатель = &Покупатель) КАК ПланируемыеПоступленияДенежныхСредствОбороты
        ПОЛНОЕ СОЕДИНЕНИЕ РегистрНакопления.ДвиженияДенежныхСредств.Обороты(
                &ДатаНач1,
                КОНЕЦПЕРИОДА(&ДатаНач1, ДЕНЬ),
                День,
                ПриходРасход = &Приход
                    И Контрагент.Покупатель = &Покупатель) КАК ДвиженияДенежныхСредствОбороты
        ПО ПланируемыеПоступленияДенежныхСредствОбороты.Контрагент = ДвиженияДенежныхСредствОбороты.Контрагент
            И (ДвиженияДенежныхСредствОбороты.Период = ПланируемыеПоступленияДенежныхСредствОбороты.Период)

УПОРЯДОЧИТЬ ПО
    ДвиженияДенежныхСредствОбороты.Период
11 cw014
 
03.04.14
10:12
Убирай доступ к полю "ПроцентПредставления"
Выводи его через условное офрпмоение
12 ZanZiBar
 
03.04.14
10:17
(10)Процент всё равно не считает
(11)А можно по подробнее для ламера?
13 cw014
 
03.04.14
10:30
(12) Не считает наверное потому что либо виженияДенежныхСредствОбороты.СуммаОборот = 0, либо ПланируемыеПоступленияДенежныхСредствОбороты.СуммаПриход = 0?
14 ZanZiBar
 
03.04.14
10:48
(13) Нет. Есть контрагентцы по которым есть и план и факт
15 ZanZiBar
 
03.04.14
11:29
Ну давайте же гуру. Помогите новичку
16 dk
 
03.04.14
12:42
покажи что в результате запроса сейчас
2 + 2 = 3.9999999999999999999999999999999...