Имя: Пароль:
1C
1С v8
1с запрос
,
0 servicenn
 
09.04.14
11:22
День добрый.В программе сложилась не совсем стандартная система работы но удобная пользователю , есть проблемка с отчётом.Есть справочник карточки(по факту это контрагент) в справочнике карточки есть реквизит "номер" (номер телефона) Причём на одного клиента может быть несколько карточек например карточка с номером 2444444 ,вторая 2444444-1, 2444444-2

есть запрос который может собрать сумму со всех карточек этого клинета

"ВЫБРАТЬ
        |    СУММА(ЕСТЬNULL(НакопленияНаКартахДисконтОбороты.СуммаОборот, 0)) КАК СуммаОборот
        |ИЗ
        |    РегистрНакопления.НакопленияНаКартахДисконт.Обороты(&НачДата, &КонДата, , ) КАК НакопленияНаКартахДисконтОбороты
        |ГДЕ
        |    ПОДСТРОКА(НакопленияНаКартахДисконтОбороты.Карта.Номер, 1, 7) = ПОДСТРОКА(&Номеркарты, 1, 7)"    

а нужен отчёт который покажет все карточки и по каждой выведет общую сумму
тоесть
карта___номер____сум карты____общ сумма
_______2444444______2___________5
_______2444444-1____3___________5  
_______2353535______5___________10
и т.д
1 thezos
 
09.04.14
11:24
а в чем трудность?
2 servicenn
 
09.04.14
11:24
Пробовал делать влож запрос, выделить отдельно семизначный номер(текстовое значение) но не удалось сгруппировать по одинаковым номерам наверно не в том направлении иду
3 servicenn
 
09.04.14
11:26
(1) пока нет идеи хотя бы начальной для достиж результата, начал с простого
ВЫБРАТЬ
    СУММА(ЕСТЬNULL(НакопленияНаКартахДисконтОбороты.СуммаОборот, 0)) КАК СуммаОборот,
    НакопленияНаКартахДисконтОбороты.Карта.Номер,
    ПОДСТРОКА(НакопленияНаКартахДисконтОбороты.Карта.Номер, 1, 7) КАК ОбщийНомерТекст
ИЗ
    РегистрНакопления.НакопленияНаКартахДисконт.Обороты(&НачДата, &КонДата, , ) КАК НакопленияНаКартахДисконтОбороты
СГРУППИРОВАТЬ ПО
    ПОДСТРОКА(НакопленияНаКартахДисконтОбороты.Карта.Номер, 1, 7),
    НакопленияНаКартахДисконтОбороты.Карта.Номер
4 servicenn
 
09.04.14
11:27
может быть использовать выбрать,  когда  номер= ОбщийНомерТекст
5 GROOVY
 
09.04.14
11:28
Зачем в запросе ЕСТЬNULL?
6 servicenn
 
09.04.14
11:28
(5) можно наверно и убрать, вопрос тот же остаётся
7 servicenn
 
09.04.14
11:29
(5) можно и убрать Естьnull вопрос тот же остаётся
8 servicenn
 
09.04.14
11:31
по такому запросу в консоли получил
карта___номер____сум карты____НомерОбщий
_______2444444______2___________2444444
_______2444444-1____3___________2444444
_______2353535______5___________2353535
и т.д
9 vicof
 
09.04.14
11:35
(8)
1. Озвучь вслух четко задачу.
2. Прочитай книжку по запросам.
3. Пойми, что номеробщий не сгруппируется, если номера карт различны. Это вроде бы простая логика.
10 servicenn
 
09.04.14
11:35
нужна колонка общСумма
11 vicof
 
09.04.14
11:35
(10) Сделай
12 servicenn
 
09.04.14
11:36
(8)(10) универсальный ответ на любой вопрос
13 GROOVY
 
09.04.14
11:36
(8) Ну и правильно, а надо что?
https://www.google.ru/search?q=нарастающий+итог+в+запросе+1с
?
14 servicenn
 
09.04.14
11:37
(13) Гляну щас
15 vicof
 
09.04.14
11:37
(10) Используй итоги
16 servicenn
 
09.04.14
11:39
(15) Итоги по какой группировке? по карточке не получишь нужный рез
17 vicof
 
09.04.14
11:40
(16) Сделай скриншоты, возможно рисовать у тебя получится лучше, чем объяснять текстом.
18 servicenn
 
09.04.14
11:41
(13) полезная инфа буду копать
19 servicenn
 
09.04.14
11:41
(16) запрос уже написал простой что в нём не понятно? проще не напишешь
20 servicenn
 
09.04.14
11:44
(16) прочитай внимательно ещё раз задачу, всё написано просто
21 servicenn
 
09.04.14
12:28
вобщем если кому интересно , результат достигнут запросом(по принципу наростающего итога но без периодов)

ВЫБРАТЬ
    ЕСТЬNULL(НакопленияНаКартахДисконтОбороты.СуммаОборот, 0) КАК СуммаОборот,
    НакопленияНаКартахДисконтОбороты.Карта,
    НакопленияНаКартахДисконтОбороты.Карта.Номер КАК КартаНомер,
    ПОДСТРОКА(НакопленияНаКартахДисконтОбороты.Карта.Номер, 1, 7) КАК ОбщийНомер_______
ПОМЕСТИТЬ таб
ИЗ
    РегистрНакопления.НакопленияНаКартахДисконт.Обороты(&НачДата, &КонДата, , ) КАК НакопленияНаКартахДисконтОбороты
ГДЕ
    (ПОДСТРОКА(НакопленияНаКартахДисконтОбороты.Карта.Номер, 1, 7) = ПОДСТРОКА(&Номеркарты, 1, 7)
            ИЛИ ПОДСТРОКА(НакопленияНаКартахДисконтОбороты.Карта.Номер, 1, 7) = ПОДСТРОКА(&Номеркарты2, 1, 7))
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    таб1.Карта,
    таб1.КартаНомер,
    таб1.ОбщийНомер_______,
    таб1.СуммаОборот,
    СУММА(таб2.СуммаОборот) КАК СуммаОборот2
ИЗ
    таб КАК таб1
        ЛЕВОЕ СОЕДИНЕНИЕ таб КАК таб2
        ПО таб1.ОбщийНомер_______ = таб2.ОбщийНомер_______

СГРУППИРОВАТЬ ПО
    таб1.Карта,
    таб1.СуммаОборот,
    таб1.КартаНомер,
    таб1.ОбщийНомер_______
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn