![]() |
![]() |
![]() |
|
Прошу помощи у понимающих в запросах, запутался | ☑ | ||
---|---|---|---|---|
0
Конфигуратор Сеня
19.12.11
✎
15:14
|
ВЫБРАТЬ
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ПродажиУслугОбороты.Регистратор) КАК ВсегоДокументов, КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ПродажиУслугОбороты.Клиент) КАК УникальныхКлиентов, СУММА(ВЫБОР КОГДА ПродажиУслугОстаткиИОбороты.СуммаНачальныйОстаток > 0 ТОГДА 0 ИНАЧЕ 1 КОНЕЦ) КАК ПервичныхКлиентов ИЗ РегистрНакопления.ПродажиУслуг.Обороты(&НачалоПериода, &КонецПериода, Авто, ) КАК ПродажиУслугОбороты ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПродажиУслуг.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Авто, ДвиженияИГраницыПериода, ) КАК ПродажиУслугОстаткиИОбороты ПО ПродажиУслугОбороты.Клиент = ПродажиУслугОстаткиИОбороты.Клиент ГДЕ ПродажиУслугОбороты.Клиент ССЫЛКА Справочник.Клиенты Запрос должен считать количество документов продаж услуг, количество уникальных клиентов и количество первичных. С документами и уникальными все просто. С первичными сложнее. Первичным считаем того, у кого СуммаНачальныйОстаток = 0. Не могу сообразить как в подлинкованной левым соединением таблице выбрать только уникальных клиентов, т.е. неповторяющихся. |
|||
1
Evpatiy
19.12.11
✎
15:16
|
Группируй. Или "ВЫБРАТЬ РАЗЛИЧНЫЕ"
|
|||
2
Конфигуратор Сеня
19.12.11
✎
15:18
|
(1) я понимаю что надо различных выбирать, но не доходит до меня куда вписать РАЗЛИЧНЫЕ во второй таблице
|
|||
3
butterbean
19.12.11
✎
15:18
|
нафига тут вообще соединение
|
|||
4
Конфигуратор Сеня
19.12.11
✎
15:19
|
(3) ты прав, проще два запроса сделать
|
|||
5
Evpatiy
19.12.11
✎
15:21
|
(2) Вложенный запрос делай.
|
|||
6
Конфигуратор Сеня
19.12.11
✎
15:22
|
(5) ok, спасибо
|
|||
7
Ненавижу 1С
гуру
19.12.11
✎
15:25
|
ха:
КОЛИЧЕСТВО( РАЗЛИЧНЫЕ (ВЫБОР КОГДА ПродажиУслугОстаткиИОбороты.СуммаНачальныйОстаток > 0 ТОГДА NULL ИНАЧЕ ПродажиУслугОстаткиИОбороты.Клиент КОНЕЦ)) КАК ПервичныхКлиентов |
|||
8
Конфигуратор Сеня
19.12.11
✎
15:42
|
(7) Красиво! И все из одной таблицы выбирается. Спасибо!
|
|||
9
azernot
19.12.11
✎
15:44
|
Нафиг не нужны во втором запросе ОстаткиИОбороты, достаточно просто Остатки.
Соответсвенно в проверке поле на равенство нулю проверять так: Сумма (ВЫБОР КОГДА Естьnull(ПродажиУслугОстатки.СуммаОстаток,0) > 0 ТОГДА 0 ИНАЧЕ 1 КОНЕЦ) Т.е. если нет начального остатка, но есть в запросе по оборотам - первичный клиент. |
|||
10
azernot
19.12.11
✎
15:46
|
+(9) Да, остатки естественно на начало периода...
|
|||
11
Ненавижу 1С
гуру
19.12.11
✎
15:48
|
тогда уж
ВЫБРАТЬ КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ПродажиУслугОстаткиИОбороты.Регистратор) КАК ВсегоДокументов, КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ПродажиУслугОстаткиИОбороты.Клиент) КАК УникальныхКлиентов, СУММА(ВЫБОР КОГДА ПродажиУслугОстаткиИОбороты.СуммаНачальныйОстаток <= 0 ТОГДА 1 ИНАЧЕ 0 КОНЕЦ) КАК ПервичныхКлиентов ИЗ РегистрНакопления.ПродажиУслуг.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Авто, ДвиженияИГраницыПериода, ) КАК ПродажиУслугОстаткиИОбороты ГДЕ ПродажиУслугОстаткиИОбороты.Клиент ССЫЛКА Справочник.Клиенты |
|||
12
azernot
19.12.11
✎
15:48
|
(7) А разве значений не на 1 больше? Само значение NULL не посчитается?
|
|||
13
azernot
19.12.11
✎
15:50
|
+(9), а не не пойдёт.. Нужно считать количество различных клиентов как тебе предлагают в (7) но с учётом (12). Сумма - даст дубли по количесвту документов первичного клиента.
|
|||
14
Конфигуратор Сеня
19.12.11
✎
15:51
|
(11)
ДвиженияИГраницыПериода заменил на Движения, а то цифра огромная вылазит |
|||
15
azernot
19.12.11
✎
15:51
|
+(13)
Количество( Различные ВЫБОР КОГДА Естьnull(ПродажиУслугОстатки.СуммаОстаток,0) = 0 ТОГДА ПродажиУслугОстатки.Клиент ИНАЧЕ NULL КОНЕЦ) |
|||
16
Конфигуратор Сеня
19.12.11
✎
15:56
|
(15) получается как в (11)
цифры сходятся. только таблицу с оборотами поставил |
|||
17
Конфигуратор Сеня
19.12.11
✎
16:07
|
ВЫБРАТЬ
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ПродажиУслугОстаткиИОбороты.Регистратор) КАК ВсегоДокументов, КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ПродажиУслугОстаткиИОбороты.Клиент) КАК УникальныхКлиентов, СУММА(ВЫБОР КОГДА ПродажиУслугОстаткиИОбороты.СуммаНачальныйОстаток <= 0 ТОГДА 1 ИНАЧЕ 0 КОНЕЦ) КАК ПервичныхКлиентов ИЗ РегистрНакопления.ПродажиУслуг.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Авто, Движения, ) КАК ПродажиУслугОстаткиИОбороты ГДЕ ПродажиУслугОстаткиИОбороты.Клиент ССЫЛКА Справочник.Клиенты вот такой запрос получился благоданя Ненавижу1с, но попадают в него только документы с суммами, а есть и без сумм. |
|||
18
Ненавижу 1С
гуру
19.12.11
✎
16:20
|
(17) что за документы без сумм?
|
|||
19
Конфигуратор Сеня
19.12.11
✎
16:23
|
(18) документы многострочные, но в некоторых поле сумма пуста. Бесплатная консультация, например.
Выяснил что такие документы не попадают в запрос после добавления СУММА(ВЫБОР КОГДА ПродажиУслугОстаткиИОбороты.СуммаНачальныйОстаток <= 0 ТОГДА 1 ИНАЧЕ 0 КОНЕЦ) КАК ПервичныхКлиентов с первыми двумя строками из запроса в (15) все хорошо |
|||
20
Ненавижу 1С
гуру
19.12.11
✎
16:26
|
нефига, такие документы вообще не попадают, они же не имеют движений
|
|||
21
Конфигуратор Сеня
19.12.11
✎
16:28
|
(20) в регистре же есть строка, в ней услуга есть, но нет суммы.
|
|||
22
Конфигуратор Сеня
19.12.11
✎
16:32
|
ВЫБРАТЬ
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ПродажиУслугОстаткиИОбороты.Регистратор) КАК ВсегоДокументов, КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ПродажиУслугОстаткиИОбороты.Клиент) КАК УникальныхКлиентов ИЗ РегистрНакопления.ПродажиУслуг.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Авто, Движения, ) КАК ПродажиУслугОстаткиИОбороты ГДЕ ПродажиУслугОстаткиИОбороты.Клиент ССЫЛКА Справочник.Клиенты вот так показывает правильно и кол-во документов (в т.ч. без сумм) и уникальных клиентов. А когда считаем первичных - доки без сумм игнорируются |
|||
23
Ненавижу 1С
гуру
19.12.11
✎
16:38
|
а если добавить?
СУММА(ПродажиУслугОстаткиИОбороты.СуммаПриход), СУММА(ПродажиУслугОстаткиИОбороты.СуммаРасход) |
|||
24
Конфигуратор Сеня
19.12.11
✎
16:46
|
не помогло.
|
|||
25
Конфигуратор Сеня
19.12.11
✎
16:56
|
делаю двумя запросами, спасибо
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |