Имя: Пароль:
1C
1С v8
Тупой (?) запрос про итоги в запросе.
0 ДенисЧ
 
18.10.19
10:08
Есть примитивный (?) запрос (примерный)


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


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

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

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

ЗЫ, СКД не предлагать, оно тут никаким боком не прилепится.
1 patapum
 
18.10.19
10:16
Это ты не выспался или я?
"Нужно считать количество различных контрагентов", "вася 2" - два различных васи?
Или нужно посчитать количество различных договоров в заказах за период по каждому контрагенту?
2 Franchiser
 
гуру
18.10.19
10:17
Зачем считаешь количество контрагентов по контрагенту? Тебе же договоры нужны.
3 PR
 
18.10.19
10:19
Добавь в выборку
КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Договор) КАК Количество
4 ДенисЧ
 
18.10.19
10:21
(1) Да, это я не выспался. 2 - даёт количество различные в поле выбрать
(2) мне нужны различные контрагенты.
5 PaulBC
 
18.10.19
10:22
Получать различных в ВТ, соединять?
6 PR
 
18.10.19
10:22
Блеать, ты уже определись, что тебе надо, а то по (0) получается, что количество различных договоров
7 ДенисЧ
 
18.10.19
10:24
(6) о том и речь, что получается количество договоров. А нужны контрагенты.
(5) не прокатит
8 PR
 
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
9 zuza
 
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) надо, а не клиентосы
13 PR
 
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) Ага. А может, мне ещё паспорт выкинуть?
16 Franchiser
 
гуру
18.10.19
10:45
Почему у Васи 1 договор?
17 ДенисЧ
 
18.10.19
10:46
(16) Потому что два заказа по 1 договору. И 1 по другому.
18 Franchiser
 
гуру
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. Соединить две временные таблицы через поле Контрагент
Вывести Поля Контрагент, Договор, с итогами по числовым
25 patapum
 
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
чтоб не получать его потом с детальных записях, так ?
40 patapum
 
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) да
44 xXeNoNx
 
18.10.19
11:52
Выбираем различные договоры и владельца договора в ВТ, из ВТ контрагента и 1 и группируем по контрагенту
45 Ёпрст
 
18.10.19
11:57
(43) Почему ?


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


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

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

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

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

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

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

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

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

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

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

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

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