|   |   | 
| 
 | Помогите с запросом | ☑ | ||
|---|---|---|---|---|
| 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С.     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |