Имя: Пароль:
1C
1С v8
Запрос двоит данные
,
0 piffoff
 
07.08.13
17:16
Далаю такой запрос

ВЫБРАТЬ
    ХозрасчетныйОбороты.КорСубконто1 КАК Контрагент,
    ПланДоходовОбороты.СуммаОборот КАК СуммаПлан,
    ХозрасчетныйОбороты.СуммаОборот КАК СуммаФакт,
    ВЫБОР
        КОГДА ПланДоходовОбороты.СуммаОборот <> 0
            ТОГДА ХозрасчетныйОбороты.СуммаОборот / ПланДоходовОбороты.СуммаОборот * 100
        ИНАЧЕ 0
    КОНЕЦ КАК Процент,
    ХозрасчетныйОбороты.Период
ИЗ
    РегистрНакопления.ПланДоходов.Обороты(&НачалоПериода, &КонецПериода, , ) КАК ПланДоходовОбороты
        ПОЛНОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода, &КонецПериода, День, , , , , ) КАК ХозрасчетныйОбороты
        ПО ПланДоходовОбороты.Контрагент = ХозрасчетныйОбороты.КорСубконто1
ГДЕ
    ХозрасчетныйОбороты.Субконто1 = &Субконто1
    И ХозрасчетныйОбороты.Счет = &Счет

УПОРЯДОЧИТЬ ПО
    Контрагент


Двоит данные по плану продаж, даже не двоит и на каждую строку факта выводит сумму. Например план всего 10000 а он его выводит по 10000 на каждую строку
Можно сделать ОБЪЕДИНИНИЕМ два запроса, но нужно в запросе еще процент посчитать. Подскажите пожайлуста как получить не двоивший результат плана и рассчитать процент

http://s2.ipicture.ru/Gallery/Viewfull/29226167.html
1 Нуф-Нуф
 
07.08.13
17:16
левое
2 IBTM
 
07.08.13
17:18
соединение
3 pessok
 
07.08.13
17:20
а что это за консолька такая рюшечная? :)
4 piffoff
 
07.08.13
17:21
http://s2.ipicture.ru/Gallery/Viewfull/29226272.html
вот видно
должно быть 10 а считает 50

да я все варианьы соединения перебрал
щас попробую еще раз
5 piffoff
 
07.08.13
17:21
(3) хехе) удобная) с инфостата
6 pessok
 
07.08.13
17:23
(5) уж наверное, не самописная, называется как?)
7 piffoff
 
07.08.13
17:24
ВЫБРАТЬ
    ХозрасчетныйОбороты.КорСубконто1 КАК Контрагент,
    ПланДоходовОбороты.СуммаОборот КАК СуммаПлан,
    ХозрасчетныйОбороты.СуммаОборот КАК СуммаФакт,
    ВЫБОР
        КОГДА ПланДоходовОбороты.СуммаОборот <> 0
            ТОГДА ХозрасчетныйОбороты.СуммаОборот / ПланДоходовОбороты.СуммаОборот * 100
        ИНАЧЕ 0
    КОНЕЦ КАК Процент,
    ХозрасчетныйОбороты.Период
ИЗ
    РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода, &КонецПериода, День, , , , , ) КАК ХозрасчетныйОбороты
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПланДоходов.Обороты(&НачалоПериода, &КонецПериода, , ) КАК ПланДоходовОбороты
        ПО ПланДоходовОбороты.Контрагент = ХозрасчетныйОбороты.КорСубконто1
ГДЕ
    ХозрасчетныйОбороты.Субконто1 = &Субконто1
    И ХозрасчетныйОбороты.Счет = &Счет

УПОРЯДОЧИТЬ ПО
    Контрагент
ИТОГИ
    СУММА(СуммаПлан),
    СУММА(СуммаФакт),
    СУММА(Процент)
ПО
    Контрагент


Вот результат
http://s2.ipicture.ru/Gallery/Viewfull/29226390.html

такая же фигня
8 rutony
 
07.08.13
17:24
(6) Написано же... Запросник...
9 rutony
 
07.08.13
17:25
(7) А что не так... Все правильно ты же сам пишешь:

ИТОГИ
    СУММА(СуммаПлан),
10 piffoff
 
07.08.13
17:28
(9) не должна быть суммы в каждой строке
итоги он просто по группировке считает
11 piffoff
 
07.08.13
17:31
Правильный резульат при таком запросе
ВЫБРАТЬ
    ХозрасчетныйОбороты.Период КАК ПериодЗапрос,
    ХозрасчетныйОбороты.КорСубконто1 КАК Контрагент,
    0 КАК СуммаПлан,
    ХозрасчетныйОбороты.СуммаОборот КАК СуммаФакт
ИЗ
    РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода, &КонецПериода, День, , , , , ) КАК ХозрасчетныйОбороты
ГДЕ
    ХозрасчетныйОбороты.Субконто1 = &Субконто1
    И ХозрасчетныйОбороты.Счет = &Счет

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

ВЫБРАТЬ
    ПланДоходовОбороты.Период,
    ПланДоходовОбороты.Контрагент,
    ПланДоходовОбороты.СуммаОборот,
    0
ИЗ
    РегистрНакопления.ПланДоходов.Обороты(&НачалоПериода, &КонецПериода, Месяц, ) КАК ПланДоходовОбороты

УПОРЯДОЧИТЬ ПО
    Контрагент
ИТОГИ
    СУММА(СуммаПлан),
    СУММА(СуммаФакт)
ПО
    Контрагент

http://s2.ipicture.ru/uploads/20130807/XSJCG7E4.png
Но так не могу рассчитать процент
12 Ёпрст
 
07.08.13
17:33
убери итоги
13 Ёпрст
 
07.08.13
17:34
ты сейчас видишь их.
14 piffoff
 
07.08.13
17:34
15 rutony
 
07.08.13
17:34
(11) Сделай объединение вложенным, считай процент, а итоги сверху считай...
16 piffoff
 
07.08.13
17:36
(12) Да итоги вообще не при чем
17 Ёпрст
 
07.08.13
17:39
да уж..
18 Ёпрст
 
07.08.13
17:40
ну сверни вложенный подзапрос тогда..
будет тебе 1 строчка.
19 Ёпрст
 
07.08.13
17:46
короче, запрос по ХозрасчетныйОбороты воткни в подзапрос, там его сверни по субконто.. и потом левое соединение. усё.
20 piffoff
 
07.08.13
17:47
(19) я понял, но он же периодичный по дням?
21 piffoff
 
07.08.13
17:51
блин мне нужно к периодичному запросу прилепить непериодичный
22 piffoff
 
07.08.13
17:55
(19) не получилось

ВЫБРАТЬ
    Факт.Контрагент КАК Контрагент,
    Факт.СуммаФакт,
    План.СуммаОборот,
    План.ПериодПлан,
    Факт.ПериодФакт
ИЗ
    (ВЫБРАТЬ
        ХозрасчетныйОбороты.Период КАК ПериодФакт,
        ХозрасчетныйОбороты.КорСубконто1 КАК Контрагент,
        ХозрасчетныйОбороты.СуммаОборот КАК СуммаФакт
    ИЗ
        РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода, &КонецПериода, День, , , , , ) КАК ХозрасчетныйОбороты
    ГДЕ
        ХозрасчетныйОбороты.Субконто1 = &Субконто1
        И ХозрасчетныйОбороты.Счет = &Счет) КАК Факт
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            ПланДоходовОбороты.Период КАК ПериодПлан,
            ПланДоходовОбороты.Контрагент КАК Контрагент,
            ПланДоходовОбороты.СуммаОборот КАК СуммаОборот
        ИЗ
            РегистрНакопления.ПланДоходов.Обороты(&НачалоПериода, &КонецПериода, День, ) КАК ПланДоходовОбороты) КАК План
        ПО Факт.Контрагент = План.Контрагент

УПОРЯДОЧИТЬ ПО
    Контрагент
ИТОГИ ПО
    Контрагент
23 piffoff
 
07.08.13
18:01
Вроде такая простая задача, в запросе взять две разные таблицы, взять из них два числа и посчитать их, выполнив соответствие по полю. А не получается
24 piffoff
 
07.08.13
18:03
А можно в СКД в колонке настраиваемые поля посчитать?!

взять итоговую факт сумму по и разделить е на итог план сумму, в разрезе контрагентов
25 hhhh
 
07.08.13
18:08
(22)       ПО Факт.Контрагент = План.Контрагент

у тебя соединение по контрагенту, а по периоду где?

ведь увеличится сумма в 12 раз.
26 Ёпрст
 
07.08.13
18:09
Ё...
27 Ёпрст
 
07.08.13
18:10
как всё неверно исталковывають..
28 Ёпрст
 
07.08.13
18:12
ВЫБРАТЬ
    ПланДоходовОбороты.Период,
    ПланДоходовОбороты.Контрагент,
    ПланДоходовОбороты.СуммаОборот КАК СуммаПлан,
    Табличка.СуммаОборот как СуммаФакт
ИЗ
    РегистрНакопления.ПланДоходов.Обороты(&НачалоПериода, &КонецПериода, Месяц, ) КАК ПланДоходовОбороты
Левое Соединение
(ВЫБРАТЬ
    ХозрасчетныйОбороты.Период КАК Период,
    ХозрасчетныйОбороты.КорСубконто1 КАК Контрагент,
    Сумма(ХозрасчетныйОбороты.СуммаОборот) КАК СуммаОборот
ИЗ
    РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода, &КонецПериода, День, , , , , ) КАК ХозрасчетныйОбороты
ХозрасчетныйОбороты.Субконто1 = &Субконто1
       И ХозрасчетныйОбороты.Счет = &Счет    
Сгруппировать ПО
    ХозрасчетныйОбороты.Период,
    ХозрасчетныйОбороты.КорСубконто1
    )как табличка ПО табличка.Контрагент =ПланДоходовОбороты.Контрагент и  табличка.период = ПланДоходовОбороты.Период
29 piffoff
 
08.08.13
10:28
(28)

ВЫБРАТЬ
    ПланДоходовОбороты.Период,
    ПланДоходовОбороты.Контрагент,
    ПланДоходовОбороты.СуммаОборот КАК СуммаПлан,
    ХозрасчетныйОбороты.СуммаФакт
ИЗ
    РегистрНакопления.ПланДоходов.Обороты(&НачалоПериода, &КонецПериода, Месяц, ) КАК ПланДоходовОбороты
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            ХозрасчетныйОбороты.Период КАК Период,
            ХозрасчетныйОбороты.КорСубконто1 КАК Контрагент,
            СУММА(ХозрасчетныйОбороты.СуммаОборот) КАК СуммаФакт
        ИЗ
            РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода, &КонецПериода, День, , , , , ) КАК ХозрасчетныйОбороты
        ГДЕ
            ХозрасчетныйОбороты.Счет = &Счет
            И ХозрасчетныйОбороты.Субконто1 = &Субконто1
        
        СГРУППИРОВАТЬ ПО
            ХозрасчетныйОбороты.Период,
            ХозрасчетныйОбороты.КорСубконто1) КАК ХозрасчетныйОбороты
        ПО (ПланДоходовОбороты.Контрагент = ХозрасчетныйОбороты.Контрагент)


не верно все равно Выбирает только тек контрагентов по которым есть план, если плана нет то оних пропускает (левое соединение не туда) и главое он все равно проставляет план сумму в каждую строчку факта
(1с) код (/1с)
30 cw014
 
08.08.13
10:33
Как то так

ВЫБРАТЬ
    ВложенныйЗапрос.ПериодЗапрос,
    ВложенныйЗапрос.Контрагент,
    СУММА(ВложенныйЗапрос.СуммаПлан) КАК СуммаПлан,
    СУММА(ВложенныйЗапрос.СуммаФакт) КАК СуммаФакт,
    ВЫБОР КОГДА СУММА(ВложенныйЗапрос.СуммаПлан) = 0 ТОГДА 0 ИНАЧЕ СУММА(ВложенныйЗапрос.СуммаФакт) / СУММА(ВложенныйЗапрос.СуммаПлан) * 100 КОНЕЦ КАК Процент
ИЗ
(ВЫБРАТЬ
    ХозрасчетныйОбороты.Период КАК ПериодЗапрос,
    ХозрасчетныйОбороты.КорСубконто1 КАК Контрагент,
    0 КАК СуммаПлан,
    ХозрасчетныйОбороты.СуммаОборот КАК СуммаФакт
ИЗ
    РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода, &КонецПериода, День, , , , , ) КАК ХозрасчетныйОбороты
ГДЕ
    ХозрасчетныйОбороты.Субконто1 = &Субконто1
    И ХозрасчетныйОбороты.Счет = &Счет

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

ВЫБРАТЬ
    ПланДоходовОбороты.Период,
    ПланДоходовОбороты.Контрагент,
    ПланДоходовОбороты.СуммаОборот,
    0
ИЗ
    РегистрНакопления.ПланДоходов.Обороты(&НачалоПериода, &КонецПериода, Месяц, ) КАК ПланДоходовОбороты)
СГРУППИРОВАТЬ ПО
    ВложенныйЗапрос.ПериодЗапрос,
    ВложенныйЗапрос.Контрагент,

УПОРЯДОЧИТЬ ПО
    Контрагент
ИТОГИ
    СУММА(СуммаПлан),
    СУММА(СуммаФакт)
ПО
    Контрагент
31 Ёпрст
 
08.08.13
10:35
(29) если надо наеборот - поменяй запросы местами.
32 piffoff
 
08.08.13
11:28
в общем херня какая - то

В таком виде все работает правильно. Берет план, факт, считает процент


ВЫБРАТЬ
    ВложенныйЗапрос.Контрагент КАК Контрагент,
    СУММА(ВложенныйЗапрос.СуммаПлан) КАК СуммаПлан,
    СУММА(ВложенныйЗапрос.СуммаФакт) КАК СуммаФакт,
    ВЫБОР
        КОГДА СУММА(ВложенныйЗапрос.СуммаПлан) = 0
            ТОГДА 0
        ИНАЧЕ СУММА(ВложенныйЗапрос.СуммаФакт) / СУММА(ВложенныйЗапрос.СуммаПлан) * 100
    КОНЕЦ КАК Процент
ИЗ
    (ВЫБРАТЬ
        ПланДоходовОбороты.Период КАК ПериодЗапрос,
        ПланДоходовОбороты.Контрагент КАК Контрагент,
        ПланДоходовОбороты.СуммаОборот КАК СуммаПлан,
        0 КАК СуммаФакт
    ИЗ
        РегистрНакопления.ПланДоходов.Обороты(&НачалоПериода, &КонецПериода, Месяц, ) КАК ПланДоходовОбороты
    
    ОБЪЕДИНИТЬ ВСЕ
    
    ВЫБРАТЬ
        ХозрасчетныйОбороты.Период,
        ХозрасчетныйОбороты.КорСубконто1,
        0,
        ХозрасчетныйОбороты.СуммаОборот
    ИЗ
        РегистрБухгалтерии.Хозрасчетный.Обороты(&НачалоПериода, &КонецПериода, День, , , , , ) КАК ХозрасчетныйОбороты
    ГДЕ
        ХозрасчетныйОбороты.Счет = &Счет
        И ХозрасчетныйОбороты.Субконто1 = &Субконто1) КАК ВложенныйЗапрос

СГРУППИРОВАТЬ ПО
    ВложенныйЗапрос.Контрагент

УПОРЯДОЧИТЬ ПО
    Контрагент



Стоит добавить период


ВЫБРАТЬ
    ВложенныйЗапрос.Контрагент КАК Контрагент,
    СУММА(ВложенныйЗапрос.СуммаПлан) КАК СуммаПлан,
    СУММА(ВложенныйЗапрос.СуммаФакт) КАК СуммаФакт,
    ВЫБОР
        КОГДА СУММА(ВложенныйЗапрос.СуммаПлан) = 0
            ТОГДА 0
        ИНАЧЕ СУММА(ВложенныйЗапрос.СуммаФакт) / СУММА(ВложенныйЗапрос.СуммаПлан) * 100
    КОНЕЦ КАК Процент,
    ВложенныйЗапрос.ПериодЗапрос



Все идет не так)))
План он уже не двоит, но и процент
Получается сумма факт оборота за день считается от суммы плана месячного
http://s2.ipicture.ru/Gallery/Viewfull/29262236.html
А нудны факт суммы ежедневный но процент что бы считался от общей фактсуммы
33 cw014
 
08.08.13
11:30
Ну тут сам голову ломай, как считать в запросах проценты от итогов...
34 piffoff
 
08.08.13
11:30
Можно ли в СКД на на вкладке вычисляемы поля как то посчитать итоговый процент за период??
35 cw014
 
08.08.13
11:31
Можешь поместить во временную табличку, состряпать свои итоги, соединить со своей временной и считать что тебе нужно
36 piffoff
 
08.08.13
11:39
(35) не совсем понял
37 cw014
 
08.08.13
11:41
(26) Ну как мог разжевал. В запросах можно временные таблицы создавать через "ПОМЕСТИТЬ".
38 piffoff
 
08.08.13
11:50
как создать временную таблиу понятно
непонятно как к ней потом прилепить фактические дневные суммы

ВЫБРАТЬ
    ВложенныйЗапрос.Контрагент КАК Контрагент,
    СУММА(ВложенныйЗапрос.СуммаПлан) КАК СуммаПлан,
    СУММА(ВложенныйЗапрос.СуммаФакт) КАК СуммаФакт,
    ВЫБОР
        КОГДА СУММА(ВложенныйЗапрос.СуммаПлан) = 0
            ТОГДА 0
        ИНАЧЕ СУММА(ВложенныйЗапрос.СуммаФакт) / СУММА(ВложенныйЗапрос.СуммаПлан) * 100
    КОНЕЦ КАК Процент,

Если так то брать без периода она все верно считает, как ей объяснить что надо добавить еще периодические суммы?
39 piffoff
 
08.08.13
12:00
Программист всегда исправляет последнюю ошибку.