|
Помогите с запросом | ☑ | ||
---|---|---|---|---|
0
repin_mike
21.02.23
✎
12:21
|
Надо запросом выдернуть 10 последние поступлений от каждого контрагента. Запрос за меня писать не надо, натолкните на мысль просто как это можно сделать.
|
|||
1
Bigbro
21.02.23
✎
12:22
|
выбрать первые 10..
|
|||
2
repin_mike
21.02.23
✎
12:22
|
(1) Внимательно читал условия, молодец
|
|||
3
H A D G E H O G s
21.02.23
✎
12:23
|
Никак.
Запрос в цикле, либо полная выборка и обработка кодом. |
|||
4
Bigbro
21.02.23
✎
12:27
|
пожалуйста.
|
|||
5
hockeyist
21.02.23
✎
12:32
|
(0) Автонумерация откроет тебе дверь в окно ))) Т.е. в оконные функции
|
|||
6
magicSan
21.02.23
✎
12:37
|
(3) жестки ты тип
|
|||
7
unenu
21.02.23
✎
12:38
|
(0) как-то уже кидал. запустил в консоли последней УТ - работает. ПЕРВЫЕ 100 в последнем пакете, чтобы увидеть результат на большой базе.
ВЫБРАТЬ ДокументыПоПорядкуВсе.Партнер КАК Партнер, ДокументыПоПорядкуВсе.Документ КАК Документ, АВТОНОМЕРЗАПИСИ() КАК Порядок ПОМЕСТИТЬ ВтДокументыПоПорядкуВсе ИЗ (ВЫБРАТЬ ПЕРВЫЕ 1000000000 РеализацияТоваровУслуг.Партнер КАК Партнер, РеализацияТоваровУслуг.Ссылка КАК Документ ИЗ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг ГДЕ РеализацияТоваровУслуг.Проведен И РеализацияТоваровУслуг.Дата >= &ДатаНачала УПОРЯДОЧИТЬ ПО РеализацияТоваровУслуг.Партнер, РеализацияТоваровУслуг.Дата) КАК ДокументыПоПорядкуВсе ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВтДокументыПоПорядкуВсе.Партнер КАК Партнер, МАКСИМУМ(ВтДокументыПоПорядкуВсе.Порядок) КАК ПорядокМакс ПОМЕСТИТЬ ВтПорядокМаксПоПартнеру ИЗ ВтДокументыПоПорядкуВсе КАК ВтДокументыПоПорядкуВсе СГРУППИРОВАТЬ ПО ВтДокументыПоПорядкуВсе.Партнер ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВтДокументыПоПорядкуВсе.Партнер КАК Партнер, ВтДокументыПоПорядкуВсе.Документ КАК Документ ПОМЕСТИТЬ ВтДокументыПоПартнеруПоследние ИЗ ВтДокументыПоПорядкуВсе КАК ВтДокументыПоПорядкуВсе ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВтПорядокМаксПоПартнеру КАК ВтПорядокМаксПоПартнеру ПО ВтДокументыПоПорядкуВсе.Партнер = ВтПорядокМаксПоПартнеру.Партнер ГДЕ ВтДокументыПоПорядкуВсе.Порядок > ВтПорядокМаксПоПартнеру.ПорядокМакс - &КоличествоПоследних ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ПЕРВЫЕ 100 ВтДокументыПоПартнеруПоследние.Партнер КАК Партнер, ВтДокументыПоПартнеруПоследние.Документ КАК Документ, РеализацияТоваровУслуг.СуммаДокумента КАК СуммаДокумента ИЗ ВтДокументыПоПартнеруПоследние КАК ВтДокументыПоПартнеруПоследние ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг ПО ВтДокументыПоПартнеруПоследние.Документ = РеализацияТоваровУслуг.Ссылка ИТОГИ СУММА(СуммаДокумента) ПО Партнер |
|||
8
Гипервизор
21.02.23
✎
12:41
|
(7) Решение всего миллиард реализаций поддерживает? )
|
|||
9
unenu
21.02.23
✎
12:43
|
(8) Попробуйте, почему нет?
|
|||
10
H A D G E H O G s
21.02.23
✎
12:43
|
(7) TempDB - автору запроса:
http://risovach.ru/upload/2015/05/mem/aleksandr-druz_82032090_orig_.jpg |
|||
11
repin_mike
21.02.23
✎
12:50
|
(3) Почему невозможно-то? Вроде ниже даже решение выложили
(7) Спасибо, сейчас вчитаюсь |
|||
12
unenu
21.02.23
✎
12:54
|
(11) просто по тексту делаем замену РеализацияТоваровУслуг на ПриобретениеТоваровУслуг и все.
|
|||
13
H A D G E H O G s
21.02.23
✎
12:58
|
(11) Не забудь запомнить этот момент изменения в конфе, чтобы потом копать причину тормозов
|
|||
14
Garykom
гуру
21.02.23
✎
12:59
|
Идиотизм
Нумерация да еще и через СГРУППИРОВАТЬ в запросах это дичайшая нагрузка на СУБД |
|||
15
Гипервизор
21.02.23
✎
13:01
|
(12) Ну если вы даёте настолько подробные инструкции, то не мешает ещё и конфу уточнить. А то Партнеры не только лишь в каждой конфе есть.
|
|||
16
Garykom
гуру
21.02.23
✎
13:01
|
Делай запрос в цикле, это самое простое и банальное
На больших данных это будет самое оптимальное |
|||
17
PLUT
21.02.23
✎
13:07
|
(7) это "произвольный запрос" для динамического списка?
|
|||
18
Garykom
гуру
21.02.23
✎
13:08
|
Имхо я бы завел отдельный РС, в который писал ссылки не "последние 10" документов по каждому контрагенту
И тупо соединял с ним |
|||
19
Said_We
21.02.23
✎
13:08
|
(14) "Нумерация" одна из самых быстрых операций в стандартном SQL. 1С конечно могли изобрести велосипед с тормозами, но вероятность этого мала.
В стандартном SQL задача решается одним подзапросом без создания временных таблиц. |
|||
20
Garykom
гуру
21.02.23
✎
13:08
|
(18) *на
|
|||
21
Garykom
гуру
21.02.23
✎
13:10
|
(19) в том то и дело что вряд ли 1С использует ROW_NUMBER
|
|||
22
unenu
21.02.23
✎
13:11
|
(14) (13) Пока в типовом в обмене УТ > БП, при обмене каждого прихода читают в Вт весь регистр себестоимости и это всех устраивает, то, думаю, автонумерация одного вида документа это вообще ни о чем.
ну замеряйте нагрузки на терабайтных базах и покажите стат, что более узко типовые грабли или эти. мне самому лень) |
|||
23
Said_We
21.02.23
✎
13:12
|
(21) Это почему? Данная функция есть во всех SQL, которые поддерживает 1С. DB2 не проверял. Но кто им пользуется не знаю.
|
|||
24
unenu
21.02.23
✎
13:12
|
(17) нет, отчет ес-но
|
|||
25
Garykom
гуру
21.02.23
✎
13:24
|
(23) в sql субд есть много чего что 1С не использует
|
|||
26
РусКомп
21.02.23
✎
13:38
|
(0) Берешь таблицу реализаций соединяешь саму собой Контагент=Контрагент, Регистратр<=Регистратор
И добавить параметр НПП = 1. Сумма(НПП) и у тебя для Регистратор будет номер. Типовой варинат нумерации строк в запросе: https://1cguide.ru/programmirovanie-1s/nomera-strok-v-zaprose-1s.html А потом отбираешь НПП <= 10. |
|||
27
H A D G E H O G s
21.02.23
✎
13:39
|
После того, как я увидел, что 1С для ПолучитьРазмерДанных() делает перебор таблицы и DataLength() вместо DMV, я ничему не удивлюсь.
|
|||
28
Said_We
21.02.23
✎
13:42
|
(0) Данная задача в 1С решается и через нумерацию и без нумерации. Но оба варианта глаз не радуют.
|
|||
29
magicSan
21.02.23
✎
13:43
|
(26) старый кастыль, но вот вроде автонумерация его обходит
|
|||
30
Garykom
гуру
21.02.23
✎
13:44
|
Задачка на запросы в 1С
Как для Динамического списка (по документам) сделать итоги? |
|||
31
Garykom
гуру
21.02.23
✎
13:45
|
(30)+ выводить в подвале кол-во документов и их сумму
учитывая отборы )) |
|||
32
repin_mike
21.02.23
✎
13:59
|
(28) Через нумерацию понял, а без неё как?
|
|||
33
Said_We
21.02.23
✎
14:00
|
(32) Примерно так:
https://imageup.ru/img22/4222235/snimok-ekrana-ot-2023-02-21-13-52-24.png Под рукой сейчас только ЗиУП. Поэтому сделал для этой базы. Но важна суть. Внутренняя таблица не нужна для задачи в (0) - нужна из-за РН по НДФЛ, бывает много доходов за один и тот же период. Предварительно свернул чтобы было нагляднее. Вместо 10 взял 3. В вашем случае будет ссылка - она уникальна. |
|||
34
magicSan
21.02.23
✎
14:02
|
(33) выглядит как самое не оптимальное
|
|||
35
Garykom
гуру
21.02.23
✎
14:09
|
(34) классический запрос в цикле, только средствами скуля
|
|||
36
Lexandr
21.02.23
✎
14:10
|
Если бы это это была бы реальная задача, то лучше использовать скд. Я даже попробовал на базе с 3000 клиентами, за 10 сек сформировало.
|
|||
37
Said_We
21.02.23
✎
14:15
|
(34) В 1С всегда так. Держи оптимальное - только Вы же такое не любите. Кстати есть ещё боле быстрый вариант для MS SQL
WITH vt_data as ( select 100 as kontr, 10 as doc UNION ALL select 100, 20 UNION ALL select 100, 110 UNION ALL select 100, 120 UNION ALL select 100, 140 UNION ALL select 50, 20 UNION ALL select 50, 60 UNION ALL select 50, 100 UNION ALL select 200, 10 UNION ALL select 200, 20 UNION ALL select 200, 50 UNION ALL select 200, 80 ) SELECT * FROM (SELECT t.kontr, t.doc, row_number() over(PARTITION by t.kontr ORDER BY t.doc) as npp FROM vt_data as t) as t WHERE t.npp <= 3 order by t.kontr, t.npp |
|||
38
Said_We
21.02.23
✎
15:15
|
(7) Можно проще с нумерацией. Фактически сначала делается нумерация для каждого контрагента отдельно. Фактически это "row_number() over(PARTITION by t.kontr ..."
А далее только условие на <= 10. https://imageup.ru/img86/4222290/snimok-ekrana-ot-2023-02-21-15-11-03.png |
|||
39
Said_We
21.02.23
✎
16:09
|
(0) Вариантов накидали - осталось применить к своей задаче. :-)
|
|||
40
mistеr
21.02.23
✎
16:30
|
(16) На действительно больших данных вместо цикла пул фоновых заданий
|
|||
41
magicSan
21.02.23
✎
20:13
|
(37) опять вставляешь запросы которые никому не упали? Потому как НЕ КОМПИЛИРУЮТСЯ НА 1С
|
|||
42
Said_We
21.02.23
✎
22:00
|
(41) Акстись. Компиляция (37) в (38).
|
|||
43
Said_We
21.02.23
✎
22:03
|
(41) И о том, что компиляция (37) в (38) прямым текстом и написано.
И да раздражает это только Вас. Я даже не знаю и не догадываюсь почему. |
|||
44
magicSan
21.02.23
✎
22:04
|
(42) что в голове у человека который текст запроса вставляет картинкой?
|
|||
45
Said_We
21.02.23
✎
22:09
|
(44) Всё проще. 1С только в терминале. С терминала взять можно только картинку - безопасность однако, закрыто всё.
А локально есть, например SQLite. Так что всё логично. Ставить 1С локально нет желания - надоедает на работе. В свободное время 1С точно нет желания заниматься. |
|||
46
Said_We
21.02.23
✎
22:13
|
(44) И да в настройках аккаунта в форуме пропиши уже себе что бы отображались картинки:
$(function() { $( "a[target][href$='png'],[href$='jpg'],[href$='jpeg'],[href$='gif'] " ).each(function(ix,el) { var t=$(el); t.html('<img width="300" src="'+t.html()+'">') } ) } ) |
|||
47
magicSan
21.02.23
✎
22:23
|
(45) научись уже через ssh пробрасывать тонкого. (46) нахера мне отображение картинки? думаешь делать нечего как перепечатывать текст картинки?
|
|||
48
Said_We
21.02.23
✎
23:34
|
(47) Зачем перепечатывать? Достаточно посмотреть и понять смысл. Там коду на несколько строк. Тем более у автора совсем другая конфигурация и совсем другие объекты.
|
|||
49
Said_We
21.02.23
✎
23:45
|
(47) У меня подключение через Citrix и двухфакторная авторизация. Каждый раз прилетает файл *.isa (имя разное каждый раз, системности нет), в котором прописаны параметры подключения. Каждый раз разные. Запарюсь я пробрасывать.
|
|||
50
Said_We
21.02.23
✎
23:54
|
(47) Повторюсь.
"И да раздражает это только Вас. Я даже не знаю и не догадываюсь почему." |
|||
51
magicSan
22.02.23
✎
04:14
|
(50) другие просто пропускают.
большая база картошки раз такая безопасность? |
|||
52
Said_We
22.02.23
✎
09:32
|
(51) Много разных, в том числе не 1С.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |