|
Получение последних контрагентов на каждый день продаж | ☑ | ||
---|---|---|---|---|
0
hao5352
31.08.22
✎
13:15
|
Подскажите,как запросом получить последних контрагентов,которые покупали товар за все даты,используя только документ расход товаров? При группировке и упорядочивании идёт на весь запрос и остаётся только последняя дата.
ВЫБРАТЬ МАКСИМУМ(РеализацияТоваров.Дата) КАК Дата, РеализацияТоваров.Покупатель ИЗ Документ.РеализацияТоваров КАК РеализацияТоваров СГРУППИРОВАТЬ ПО РеализацияТоваров.Покупатель УПОРЯДОЧИТЬ ПО Дата УБЫВ |
|||
1
Beduin
31.08.22
✎
13:17
|
"За все даты" - это за весь период покупок?
|
|||
2
Kassern
31.08.22
✎
13:18
|
(1) а документ расход товаров вас не смутил?)
|
|||
3
Beduin
31.08.22
✎
13:18
|
(2) Это он видимо так реализацию называет
|
|||
4
Ryzeman
31.08.22
✎
13:19
|
(0) тестовое задание?) Делай внутреннее соединение :)
|
|||
5
hao5352
31.08.22
✎
13:20
|
Да,за весь период.
Это пример,просто не совсем понимаю,как сделать,чтобы в запросе отображалось контрагент из последней продажи за день. |
|||
6
mistеr
31.08.22
✎
13:20
|
(0) Кто последний покупал за каждый день, так что ли?
|
|||
7
hao5352
31.08.22
✎
13:21
|
(4) Увидел в группе у кого то, стало интересно,часа 2 сижу не могу понять
|
|||
8
hao5352
31.08.22
✎
13:21
|
(6) Именно
|
|||
9
Beduin
31.08.22
✎
13:21
|
(5) Один контрагент или все которые продали?
|
|||
10
hao5352
31.08.22
✎
13:22
|
(9) Ну предположим была продажа 29.08 и 31.08 хочу,чтобы отобразился контрагент,который совершил последнюю продажу 29 и 31.
|
|||
11
mistеr
31.08.22
✎
13:22
|
(8) Интересная задачка. Основная сложность выделить последний по ссылке, если дата-время одинаковые.
|
|||
12
АгентБезопасной Нацио
31.08.22
✎
13:23
|
"последний контрагент" - это звучит гордо?
|
|||
13
Kassern
31.08.22
✎
13:24
|
(10) А если 29 было 2 продажи в 23.59 От РогаИКопыта и ООО Ромашка?)
|
|||
14
alarm2020
31.08.22
✎
13:25
|
(0) Вот эту, сгруппированную таблицу соединяешь с исходной
|
|||
15
Kassern
31.08.22
✎
13:25
|
С технической точки зрения можно вычислить, какой создался раньше, какой позже, но с точки зрения логики, оба варианта могут быть верными
|
|||
16
Beduin
31.08.22
✎
13:26
|
ВЫБРАТЬ
МАКСИМУМ(РеализацияТоваровУслуг.Ссылка) КАК Ссылка, КОНЕЦПЕРИОДА(РеализацияТоваровУслуг.Дата, ДЕНЬ) КАК Дата ПОМЕСТИТЬ ВременнаяТаблица ИЗ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты ПО (РеализацияТоваровУслуг.Грузоотправитель = Контрагенты.Ссылка) И (РеализацияТоваровУслуг.Грузополучатель = Контрагенты.Ссылка) И (РеализацияТоваровУслуг.Контрагент = Контрагенты.Ссылка) СГРУППИРОВАТЬ ПО КОНЕЦПЕРИОДА(РеализацияТоваровУслуг.Дата, ДЕНЬ) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВременнаяТаблица.Дата КАК Дата, ВременнаяТаблица.Ссылка.Контрагент КАК СсылкаКонтрагент ИЗ ВременнаяТаблица КАК ВременнаяТаблица УПОРЯДОЧИТЬ ПО Дата |
|||
17
АгентБезопасной Нацио
31.08.22
✎
13:27
|
(13) "Однако очевидно, что два документа или два движения могут иметь одинаковое значение даты (иметь одинаковую дату включая время). Чтобы порядок таких документов был всегда одинаков (сохранялся во всех выборках) документы и движения дополнительно упорядочиваются по значению ссылки документа"(цы) ИТС
|
|||
18
Beduin
31.08.22
✎
13:28
|
(16) ой
ВЫБРАТЬ МАКСИМУМ(РеализацияТоваровУслуг.Ссылка) КАК Ссылка, КОНЕЦПЕРИОДА(РеализацияТоваровУслуг.Дата, ДЕНЬ) КАК Дата ПОМЕСТИТЬ ВременнаяТаблица ИЗ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты ПО (РеализацияТоваровУслуг.Контрагент = Контрагенты.Ссылка) СГРУППИРОВАТЬ ПО КОНЕЦПЕРИОДА(РеализацияТоваровУслуг.Дата, ДЕНЬ) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВременнаяТаблица.Дата КАК Дата, ВременнаяТаблица.Ссылка.Контрагент КАК СсылкаКонтрагент ИЗ ВременнаяТаблица КАК ВременнаяТаблица УПОРЯДОЧИТЬ ПО Дата |
|||
19
Ryzeman
31.08.22
✎
13:28
|
||||
20
Beduin
31.08.22
✎
13:29
|
(18) Да ешкин кот
ВЫБРАТЬ МАКСИМУМ(РеализацияТоваровУслуг.Ссылка) КАК Ссылка, КОНЕЦПЕРИОДА(РеализацияТоваровУслуг.Дата, ДЕНЬ) КАК Дата ПОМЕСТИТЬ ВременнаяТаблица ИЗ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг СГРУППИРОВАТЬ ПО КОНЕЦПЕРИОДА(РеализацияТоваровУслуг.Дата, ДЕНЬ) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВременнаяТаблица.Дата КАК Дата, ВременнаяТаблица.Ссылка.Контрагент КАК СсылкаКонтрагент ИЗ ВременнаяТаблица КАК ВременнаяТаблица УПОРЯДОЧИТЬ ПО Дата |
|||
21
Kassern
31.08.22
✎
13:29
|
(17) я и пишу, что можно вычислить, какой был последний, но в плане логики (управленческой к примеру) может быть без разницы, какой из них нужен, либо вообще оба нужны в плане последних. Это как СрезПоследних в РС. Там тоже могут быть несколько строк с различными наборами данных последними и это нормально.
|
|||
22
АгентБезопасной Нацио
31.08.22
✎
13:29
|
(19) а может, последний - это в смысле "последний му..к"?
|
|||
23
Ryzeman
31.08.22
✎
13:30
|
(21) Момент времени же!
|
|||
24
Ryzeman
31.08.22
✎
13:30
|
(22) Типа, конченный?
|
|||
25
АгентБезопасной Нацио
31.08.22
✎
13:31
|
(24) ну да, контрагент, хуже которого уже некуда...
|
|||
26
АгентБезопасной Нацио
31.08.22
✎
13:31
|
(23) моменты в снеговике, имхо , могут и совпадать.
|
|||
27
alarm2020
31.08.22
✎
13:32
|
(21) Это не нормально, потому что противоречит определению "последний". В реальном мире никакие два события не происходят в точности одновременно
|
|||
28
Ryzeman
31.08.22
✎
13:32
|
(21) Думаю, человек просто хотел простой запросик с одним соединением вида - Партнёр - дата последнего его заказа. Вы его сейчас будете учить границам и прочим премудростям)
|
|||
29
Kassern
31.08.22
✎
13:33
|
(20) А если реализации были созданы путем Объект.УстановитьСсылкуНового(Ссылка); ? Даст ли МАКСИМУМ(РеализацияТоваровУслуг.Ссылка) именно тот документ, который создан последним?
|
|||
30
МКК
31.08.22
✎
13:33
|
(27) Пересечение двух прямых - например одновременно
|
|||
31
АгентБезопасной Нацио
31.08.22
✎
13:33
|
(27) не регистрируешь события в реальном мире ты с реальной точностью... а реальная точность - грубее идеальной
|
|||
32
alarm2020
31.08.22
✎
13:34
|
(30) Это - одно событие
|
|||
33
hao5352
31.08.22
✎
13:36
|
(20) Спасибо.Что-то я думал простенько будет, а в итоге ничего подобного.Пойду поищу теории и практики по запросам.
|
|||
34
alarm2020
31.08.22
✎
13:37
|
(31) Согласен. Но современная техника позволяет получать точность практически неотличимую от реальной. В 32 байтах количество "точек" больше, чем количество атомов в нашем скоплении галактик
|
|||
35
Kassern
31.08.22
✎
13:37
|
(27) Ничего это не противоречит, если мы говорим не про сферического коня в вакууме, а про реальные бизнес-процессы. Напрмер, эти данные нужны, чтобы понять, какие клиенты отгружались последними на складе. И если в одну и ту же минуту/секунду было 2 отгрузки (2 машины параллельно грузили разным клиентам), то наверное важно вывести обоих. Я к тому виду, что клиент может назвать это "вывести последних", но нужно знать контекст,для чего это делается.
|
|||
36
Kassern
31.08.22
✎
13:38
|
*веду
|
|||
37
alarm2020
31.08.22
✎
13:39
|
(35) Должна быть возможность вывести информацию "с точностью до..." И одним из вариантов может быть "... до абсолютной"
|
|||
38
АгентБезопасной Нацио
31.08.22
✎
13:49
|
(34) <троллейбус.jpg>
Можно и количество учитыаь с неимоверной точностью, и НДС до 15 знака после запятой... но зачем? |
|||
39
Kassern
31.08.22
✎
13:51
|
(37) Как вы предлагаете определять последний документ? По максимуму ссылки?
|
|||
40
АгентБезопасной Нацио
31.08.22
✎
13:52
|
(35) ну, я слабо верю даже "в одну секунду".
На предыдущем месте логисты поставили выезд трех машин в 9:00. Ворота одни. Дир позвал логистов к этому времени, а потом попросил водителей выехать точно по расписанию, составленному логистами... |
|||
41
Ryzeman
31.08.22
✎
13:52
|
(38) >>НДС до 15 знака после запятой
Хорош))) А никогда не видел в самописках цены с 3-5 знаками после запятой?) И самое классное когда кто-нибудь зафигачивает туда расчёт цены как деление суммы на количество)) |
|||
42
АгентБезопасной Нацио
31.08.22
✎
13:52
|
(39) не определять, а "при равенстве времени последим считать...".
|
|||
43
hao5352
31.08.22
✎
13:52
|
(20) Хотя если создать еще один расход на более раннюю дату,будет отображаться он,что неверно.
|
|||
44
Kassern
31.08.22
✎
13:54
|
(42) а где гарантия, что не было вмешательства в формирование ссылок?
|
|||
45
RomanYS
31.08.22
✎
13:55
|
(20) МАКСИМУМ(РеализацияТоваровУслуг.Ссылка) это не гарантирует последнюю продажу
|
|||
46
hao5352
31.08.22
✎
13:56
|
(45) Так и вышло
|
|||
47
RomanYS
31.08.22
✎
13:56
|
(39) традиционно по МоментВремени = Дата+Сссылка
|
|||
48
АгентБезопасной Нацио
31.08.22
✎
13:57
|
(41) >>А никогда не видел в самописках цены с 3-5 знаками после запятой?
ну мы ж говорим про нормальных людей? :-) а действия идиотов предсказать нельзя - у них точность нужна до абсолютной, и т.д.... ну вот соверменное определение секунды: "Секунда — время, равное 9 192 631 770 периодам излучения, соответствующего переходу между двумя сверхтонкими уровнями основного состояния атома цезия-133.". т.е. даже там есть граница точности... |
|||
49
АгентБезопасной Нацио
31.08.22
✎
13:59
|
(44) нет никаких гарантий. просто если есть несколько событий, а нужно только одно - мы принмаем какое-то правило. в данном случае - максимум ссылки. можно принять первцю букву названия клиента. или его ИНН. или сумму документа.
|
|||
50
Kassern
31.08.22
✎
13:59
|
(49) о том и речь)
|
|||
51
Kassern
31.08.22
✎
14:01
|
Если мне не изменяет память, можно получить Гуид1 и Гуид2, создать Док1 и Док2, Док1 присвоить гуид2, а Док2 - гуид1 соответственно. Оба документа записать одной датой в порядке, вначале Док1, потом Док2. Какой из них будет последним по правилу Максимум(Ссылка)?
|
|||
52
АгентБезопасной Нацио
31.08.22
✎
14:05
|
(51) у которого гуид больше
|
|||
53
Kassern
31.08.22
✎
14:05
|
Вот тут подробно расписано:
https://its.1c.ru/db/metod8dev/content/2737/hdoc |
|||
54
RomanYS
31.08.22
✎
14:05
|
правила выбора последнего можно указать произвольные:
ВЫБРАТЬ ПЕРВЫЕ 999999999 НАЧАЛОПЕРИОДА(Док.Дата, ДЕНЬ) КАК ДатаДень, Док.Контрагент, Док.Ссылка КАК Ссылка, АВТОНОМЕРЗАПИСИ() КАК НомерПП ПОМЕСТИТЬ ВТ ИЗ Документ.РеализацияТоваровУслуг КАК Док УПОРЯДОЧИТЬ ПО Док.Дата, Ссылка ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ МАКСИМУМ(ВТ.НомерПП) КАК НомерПП, ВТ.ДатаДень ПОМЕСТИТЬ НомераПоследних ИЗ ВТ КАК ВТ СГРУППИРОВАТЬ ПО ВТ.ДатаДень ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ.Контрагент, НомераПоследних.ДатаДень ИЗ ВТ КАК ВТ ВНУТРЕННЕЕ СОЕДИНЕНИЕ НомераПоследних КАК НомераПоследних ПО ВТ.ДатаДень = НомераПоследних.ДатаДень |
|||
55
Kassern
31.08.22
✎
14:06
|
(52) и у которого будет больше? Это один и тот же вид документа
|
|||
56
АгентБезопасной Нацио
31.08.22
✎
14:07
|
(53) что и было процитировано в (17)
|
|||
57
RomanYS
31.08.22
✎
14:08
|
(55) гуиды то разные, один из них больше
|
|||
58
АгентБезопасной Нацио
31.08.22
✎
14:08
|
(55) у одного из двух и будет больше. ибо они не равны.
|
|||
59
Ryzeman
31.08.22
✎
14:11
|
(43) А на совпадение в 1 секунду вообще пофиг ИМХО :Ъ
ВЫБРАТЬ РАЗЛИЧНЫЕ НАЧАЛОПЕРИОДА(ДокРеализация1.Дата) КАК Дата, МАКСИМУМ(ДокРеализация2.Дата) КАК ДатаВремяПоследнейПродажи Поместить Периоды Из Документ.РеализацияТоваровУслуг КАК ДокРеализация1 ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК ДокРеализация2 ПО ДокРеализация1.Дата = ДокРеализация2.Дата И ДокРеализация2.Проведен СГРУППИРОВАТЬ ПО НАЧАЛОПЕРИОДА(ДокРеализация1.Дата) ; ВЫБРАТЬ Периоды.Дата КАК Дата, Максимум(ДокРеализация.Ссылка) КАК Реализация ИЗ Периоды КАК Периоды ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК ДокРеализация ПО ДокРеализация.Дата = Периоды.ДатаВремяПоследнейПродажи СГРУППИРОВАТЬ ПО Периоды.Дата УПОРЯДОЧИТЬ ПО Периоды.Дата УБЫВ |
|||
60
Kassern
31.08.22
✎
14:14
|
(57) (58) Конечно разные! Только какой из них больше? Что выдаст Максимум(Ссылка) по этим двум документам, последний записанный в базу с гуидом1, или документ с гуидом2?
|
|||
61
АгентБезопасной Нацио
31.08.22
✎
14:20
|
(60) ты издеваешься? Максимум(Ссылка) выдаст наибольший из этих двух.
|
|||
62
Ryzeman
31.08.22
✎
14:22
|
(59) кхм
ВЫБРАТЬ РАЗЛИЧНЫЕ НАЧАЛОПЕРИОДА(ДокРеализация1.Дата, День) КАК Дата, МАКСИМУМ(ДокРеализация2.Дата) КАК ДатаВремяПоследнейПродажи Поместить Периоды Из Документ.РеализацияТоваровУслуг КАК ДокРеализация1 ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК ДокРеализация2 ПО НАЧАЛОПЕРИОДА(ДокРеализация1.Дата, День) = НАЧАЛОПЕРИОДА(ДокРеализация2.Дата, День) И ДокРеализация2.Проведен СГРУППИРОВАТЬ ПО НАЧАЛОПЕРИОДА(ДокРеализация1.Дата, День) ; ВЫБРАТЬ Периоды.Дата КАК Дата, Максимум(ДокРеализация.Ссылка) КАК Реализация ИЗ Периоды КАК Периоды ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК ДокРеализация ПО ДокРеализация.Дата = Периоды.ДатаВремяПоследнейПродажи СГРУППИРОВАТЬ ПО Периоды.Дата УПОРЯДОЧИТЬ ПО Периоды.Дата УБЫВ |
|||
63
RomanYS
31.08.22
✎
14:22
|
(60) Какая разница? Есть правила сравнения Гуидов и по ним определится максимальный. Упорядоченность гуидов в порядке ввода не гарантируется
|
|||
64
Kassern
31.08.22
✎
14:26
|
(63) Я к этому и веду. Нет гарантий, что если гуид больше, значит документ записан позже. И получится, что "последний" документ, не совсем и последний. Просто это нужно иметь в виду.
|
|||
65
АгентБезопасной Нацио
31.08.22
✎
14:30
|
(64) "Однако очевидно, что два документа или два движения могут иметь одинаковое значение даты (иметь одинаковую дату включая время). Чтобы порядок таких документов был всегда одинаков (сохранялся во всех выборках) документы и движения дополнительно упорядочиваются по значению ссылки документа"(цы) ИТС
|
|||
66
RomanYS
31.08.22
✎
14:32
|
(64) "последний" задается какими-то правилами. Если правила не указаны, то я подразумеваю (47)
|
|||
67
Kassern
31.08.22
✎
14:35
|
(65) Но это не дает гарантии, что документ действительно последний (записанный в базу, о чем я и писал выше, о чем и указано на ИТС дальше в этой же статье)
|
|||
68
Kassern
31.08.22
✎
14:36
|
И если клиенту нужен именно последний записанный в базу, то данный метод может не подойти.
|
|||
69
Ryzeman
31.08.22
✎
14:37
|
(68) а что оба последних документа окажутся проведёнными неоперативно? Какую пользу принесёт в данном случае последний записанный в базу?
|
|||
70
Ryzeman
31.08.22
✎
14:38
|
а что если*
|
|||
71
АгентБезопасной Нацио
31.08.22
✎
14:38
|
(67) (68) документ последний по правилам упорядочивания 1с. среди всех документов, записанных с одинаковым временем, _последним_ будет СЧИТАТЬСЯ именно такой.
|
|||
72
RomanYS
31.08.22
✎
14:42
|
(68) Какой "данный метод"? Просто говорим, что должны быть заданы конкретные правила. Например, последний определяем по номеру или по служебному реквизиту
|
|||
73
Kassern
31.08.22
✎
14:45
|
(72) Я вообще мало пользы вижу в подобном запросе...Скорее всего, в рамках хотелки, вообще пофиг какой клиент будет, если попадется 2 отгрузки на одну дату
|
|||
74
АгентБезопасной Нацио
31.08.22
✎
14:50
|
(73) если после отгрузки иванову больше отгрузок не бывает, значит, он распугивает нам всех клиентов!
|
|||
75
RomanYS
31.08.22
✎
14:58
|
(73) нет никакой хотелки, это наверняка тестовая задача.
Пусть будет не последняя, а самая большая. В случае равенства берем первого контрагента по алфавиту)) |
|||
76
АгентБезопасной Нацио
31.08.22
✎
14:59
|
(75) а может все-таки "последний клиент" - это который меньше всех купил?
|
|||
77
hao5352
31.08.22
✎
15:01
|
(76) Вариант с "последний му..к" был интереснее
|
|||
78
АгентБезопасной Нацио
31.08.22
✎
15:01
|
(75) но в случае с дата+ссылка - для проверки откроют журнал документов, удостоверятся и успокоются...
|
|||
79
АгентБезопасной Нацио
31.08.22
✎
15:01
|
(77) ну, значит, упорядочивай по размеру просроченной дебиторки
|
|||
80
hao5352
31.08.22
✎
15:03
|
(73) Пользы нет,я хотел понять,как выделить на каждый день последнего контрагента,наврядли это пригодится,но увидел в группе,что человек скидывал подобное(там надо было в тз внести всё это) являлось тестовой задачей.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |