Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Тупой (?) запрос про итоги в запросе.

Тупой (?) запрос про итоги в запросе.
Я
   ДенисЧ
 
18.10.19 - 10:08
Есть примитивный (?) запрос (примерный)

выбрать Контрагент, договорКонтрагента, количество(различные контрагент) к
ИЗ Документ.ЗаказПокупателя 
где Дата между &начДата и конецПериода(&конДата, день)
сгруппировать по Контрагент, договорКонтрагента
итоги сумма(к), КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Контрагент)
по общие, Контрагент


Нужно считать количество различных контрагентов (у одного может быть несколько договоров).
Приведённый запрос даёт количество по всем группировкам и только в детальных - контрагента. Меня это не устраивает (((
Поле к - считает каждый договор за один и получается задваивание.
Нужно получить что-то вроде
из :
вася, дог1
вася, дог1
вася, дог2
петя, дог3

такое:
вася 2
  дог1 1
  дог2 1
петя 1
  дог3 1

Голову сломал уже... Или просто не выспался и всё решается элементарно?

ЗЫ, СКД не предлагать, оно тут никаким боком не прилепится.
 
 
   patapum
 
1 - 18.10.19 - 10:16
Это ты не выспался или я?
"Нужно считать количество различных контрагентов", "вася 2" - два различных васи?
Или нужно посчитать количество различных договоров в заказах за период по каждому контрагенту?
   Franchiser
 
2 - 18.10.19 - 10:17
Зачем считаешь количество контрагентов по контрагенту? Тебе же договоры нужны.
   PR
 
3 - 18.10.19 - 10:19
Добавь в выборку
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Договор) КАК Количество
   ДенисЧ
 
4 - 18.10.19 - 10:21
(1) Да, это я не выспался. 2 - даёт количество различные в поле выбрать
(2) мне нужны различные контрагенты.
   PaulBC
 
5 - 18.10.19 - 10:22
Получать различных в ВТ, соединять?
   PR
 
6 - 18.10.19 - 10:22
Блеать, ты уже определись, что тебе надо, а то по (0) получается, что количество различных договоров
   ДенисЧ
 
7 - 18.10.19 - 10:24
(6) о том и речь, что получается количество договоров. А нужны контрагенты.
(5) не прокатит
   PR
 
8 - 18.10.19 - 10:25
(7) И почему тогда
из :

вася, дог1
вася, дог1
вася, дог2
петя, дог3


такое:

вася 2
  дог1 1
  дог2 1
петя 1
  дог3 1


а не

из :

вася, дог1
вася, дог1
вася, дог2
петя, дог3


такое:

вася 1
  дог1 1
  дог2 1
петя 1
  дог3 1
   zuza
 
9 - 18.10.19 - 10:36
Если нужны контрагенты, зачем тогда договора вообще?
   ДенисЧ
 
10 - 18.10.19 - 10:39
(9) Потому что нужны и договора и даже заказы, просто заказы я не вынес
(8)
Первый вариант при использовании количество различные в Выбрать
второе мне нужно получить.
   МимохожийОднако
 
11 - 18.10.19 - 10:39
(7) Выкинь из запроса все поля кроме Контрагент
   Ёпрст
 
12 - 18.10.19 - 10:44
(0) тебе надо количество различные договора, если как в (0) надо, а не клиентосы
   PR
 
13 - 18.10.19 - 10:44
(10) Капец. Иди поспи.
   ДенисЧ
 
14 - 18.10.19 - 10:44
(12) мне надо
вася 1
  дог1 1
  дог2 1
петя 1
  дог3 1

Я очепятался.
   ДенисЧ
 
15 - 18.10.19 - 10:45
(11) Ага. А может, мне ещё паспорт выкинуть?
   Franchiser
 
16 - 18.10.19 - 10:45
Почему у Васи 1 договор?
   ДенисЧ
 
17 - 18.10.19 - 10:46
(16) Потому что два заказа по 1 договору. И 1 по другому.
   Franchiser
 
18 - 18.10.19 - 10:46
И везде где договор будут единички, это можно и так потом проставить
   Ёпрст
 
19 - 18.10.19 - 10:47
(15) круто, ага.. а зачем их считать, если по ним итоги есть ? чтоб в Общих итогах количество клиентосов поиметь ?
   ДенисЧ
 
20 - 18.10.19 - 10:49
(19) Да. Есть сводная табличка (там кроме контрагентов и договоров ещё несколько группировок по реквизитам договоров, контрагентов, заказов). И надо знать по каждой группировке, сколько в ней контрагентов.
   ДенисЧ
 
21 - 18.10.19 - 10:50
(18) Шта? Как я вместо 1 подставлю "Договор на обслуживание за период с ... по ..." или "договор на покупку оборудования" ?
   Ёпрст
 
22 - 18.10.19 - 10:58
Это, показывай ужо полный текст запроса, чего уж там :)
   ДенисЧ
 
23 - 18.10.19 - 10:59
(22) Зачем тебе триста строк запроса с 8ю временными таблицами?
   МимохожийОднако
 
24 - 18.10.19 - 11:01
Через пакетный запрос.
1. ВТ_КонтрагентыДоговоры. Поля: Контрагент,Договор, 1
2. ВТ_Контрагенты (различные). Поля: Контрагент, Сумма(1)
3. Соединить две временные таблицы через поле Контрагент
Вывести Поля Контрагент, Договор, с итогами по числовым
   patapum
 
25 - 18.10.19 - 11:04
(14) Пока по постановке задачи вырисовывается так. Объясняй, где не 1 должно быть и почему
ВЫБРАТЬ Контрагент, ДоговорКонтрагента, 1 КАК Колво ИЗ ...
ИТОГИ Максимум(Колво)
ПО Общие, Контрагент
   ДенисЧ
 
26 - 18.10.19 - 11:04
(24) Пробовал.
вторая соединяется с первой по каждому договору. Получается задвоение.
   Жан Пердежон
 
27 - 18.10.19 - 11:06
так а что надо то?
максимум() по группировке, а сумма() по общим?
   Ёпрст
 
28 - 18.10.19 - 11:06
(26) куда то надо воткнуть максимум и соединять по истина
   ДенисЧ
 
29 - 18.10.19 - 11:06
(25) Вот такая получается
http://pics.wfido.ru/img/rep_dfmf5.png
А на месте круга должен быть контрагент, а не циферка
   МимохожийОднако
 
30 - 18.10.19 - 11:07
(26) Надо соединять по Контрагенту
 
 Рекламное место пустует
   МимохожийОднако
 
31 - 18.10.19 - 11:07
(26) Вторая ВТ без договоров
   ДенисЧ
 
32 - 18.10.19 - 11:08
(31)
первая табличка
вася дог1
вася дог2

вторая
вася.
Соединяем
по контрагент.
И получаем две строки.
   МимохожийОднако
 
33 - 18.10.19 - 11:11
(32) Вторая табличка с полем единиц. Его надо сгруппировать по контрагенту. В ней подсчитаются итоги по контрагентам
   МимохожийОднако
 
34 - 18.10.19 - 11:13
Можно соединить вторую ВТ с первой с группировкой по контрагентам
   ДенисЧ
 
35 - 18.10.19 - 11:13
(33) правим
первая табличка 
вася дог1
вася дог2

вторая
вася 1.

Объединяем по Контрагент
получаем
вася, дог1, 1
вася, дог2, 1
И? А там не только количество, там ещё суммы документов идут
   МимохожийОднако
 
36 - 18.10.19 - 11:14
(35) Добавь в первую таблицу единичку и во вторую единичку. По ним и посчитаешь. Вместо единичек можно еще и сумму добавить.
   МимохожийОднако
 
37 - 18.10.19 - 11:15
Попробуй порисовать в Excel  или в блокноте таблички.
   Ёпрст
 
38 - 18.10.19 - 11:25
(29) т.е у тя вопрос тока в том, что в (0) кажет всё верно, но в итогах сам контрагент нужен ?
   Ёпрст
 
39 - 18.10.19 - 11:25
чтоб не получать его потом с детальных записях, так ?
   patapum
 
40 - 18.10.19 - 11:26
(29) Короче, тебе нужно, чтобы в колонке с итоговым полем по общим выводилось количество Контрагентов, а по контрагенту - сам контрагент? Я так запросом не умею. Разве что так, а дальше смотреть, что в какую колонку выводить

ВЫБРАТЬ РАЗЛИЧНЫЕ
Контрагент, Контрагент КАК Контрагент1, ДоговорКонтрагента
ИЗ Документ.ЗаказПокупателя
ГДЕ Дата > ДатаВремя(2019,7,1)
ИТОГИ Количество(Различные Контрагент), Максимум(Контрагент1) ПО Общие, Контрагент
   Ёпрст
 
41 - 18.10.19 - 11:27
   Ёпрст
 
42 - 18.10.19 - 11:31
Если да, то в (40) решение
   ДенисЧ
 
43 - 18.10.19 - 11:32
(40) (41) Как раз такое и не подходит.
(38) (39) да
   xXeNoNx
 
44 - 18.10.19 - 11:52
Выбираем различные договоры и владельца договора в ВТ, из ВТ контрагента и 1 и группируем по контрагенту
   Ёпрст
 
45 - 18.10.19 - 11:57
(43) Почему ?

ВЫБРАТЬ
    Табличка.Контрагент КАК Контрагент,
    Табличка.Контрагент КАК Количество,
    Табличка.Договор КАК Договор
ИЗ
    Табличка КАК Табличка
ИТОГИ
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Количество),
        Максимум(Контрагент)
ПО
    ОБЩИЕ,
    Контрагент


http://pics.rsh.ru/img/1_qhqy9wd3.jpg
   xXeNoNx
 
46 - 18.10.19 - 12:40
Выбрать Различные Договор.Владелец Как Контрагент, договор.ссылка ПОМЕСТИТЬ втДоговоры из Справочник.Договоры Как Договоры; 

Выбрать
ВтДоговоры.Контрагент,
Сумма(1)
Из
втДоговоры как втДоговоры
Сгруппировать по
ВтДоговоры.Контрагент
Имеющие
Сумма(1) > 1
   sirsp
 
47 - 18.10.19 - 13:05
(29) Так что ли?:

ВЫБРАТЬ "Вася" Контр, "Дог1" Дог
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Вася", "Дог1"
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Вася", "Дог2"
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Петя", "Дог3"
ИТОГИ
    ВЫБОР КОГДА КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Контр) = 1 ТОГДА
        МИНИМУМ(Контр)
    ИНАЧЕ
        КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Контр)
    КОНЕЦ Контр
ПО ОБЩИЕ
    ,Контр

З.Ы. Сработает только если контров > 1
   Fragster
 
48 - 18.10.19 - 13:12
ВЫБРАТЬ
    "Вася" КАК Контр,
    "ДогВ1" КАК Дог
ПОМЕСТИТЬ Таб

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

ВЫБРАТЬ
    "Вася",
    "ДогВ1"

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

ВЫБРАТЬ
    "Вася",
    "ДогВ2"

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

ВЫБРАТЬ
    "Петя",
    "ДогП3"
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ РАЗЛИЧНЫЕ
    Таб.Контр КАК Контр,
    Таб.Дог,
    Таб.Дог КАК Печать,
    1 КАК КолДог
ИЗ
    Таб КАК Таб
ИТОГИ
    Таб.Контр КАК Печать,
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Дог) КАК КолДог
ПО
    Контр
   Fragster
 
49 - 18.10.19 - 13:13
Но нах это делать в запросе а не в СКД я не понимаю.
   Fragster
 
50 - 18.10.19 - 13:13
или не другой постобработкой
   Fragster
 
51 - 18.10.19 - 13:14
или даже так:

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ РАЗЛИЧНЫЕ
    Таб.Дог КАК Печать,
    1 КАК КолДог
ИЗ
    Таб КАК Таб
ИТОГИ
    ЕстьNULL(Таб.Контр, "ИТОГО")  КАК Печать,
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Дог) КАК КолДог
ПО
    Контр, Общие
   Fragster
 
52 - 18.10.19 - 13:15
   Ёпрст
 
53 - 18.10.19 - 13:18
(48) ему типа без повторяющихся вася-дог1 надо было в итоге ?
   Fragster
 
54 - 18.10.19 - 13:19
(53) я хз. но если различные в (48) убрать, то итоги все равно правильные будут.
   Ёпрст
 
55 - 18.10.19 - 13:20
(51) красота
   Fragster
 
56 - 18.10.19 - 13:20
главная тупизна (0) это (49)(50)


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.