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

Пронумеровать записи в хапросе.

Пронумеровать записи в хапросе.
Я
   ПрестарелыйЗаяц
 
22.07.20 - 09:11
Добрый день.
Результат запроса два столбика: количество и артикул, количество может повторятся, артикул - нет.

Задача пронумеровать записи - платформа меньше 13 :(.

Можно как то такое сделать?
   ПрестарелыйЗаяц
 
1 - 22.07.20 - 09:13
Забыл написать - артикул типа строка.
   Галахад
 
2 - 22.07.20 - 09:14
Гм. А для чего это нужно?
   ПрестарелыйЗаяц
 
3 - 22.07.20 - 09:22
(2) Выбрать первые N записей в каждой группе.
   Garykom
 
4 - 22.07.20 - 09:22
(0) Хумерация хаписей хв хапросе хэто ху...удивительная хтука
   ПрестарелыйЗаяц
 
5 - 22.07.20 - 09:23
(4) Да она вполне себе нормальная если есть уникальность.
   azt-yur
 
6 - 22.07.20 - 09:28
Делается такая х..нь соединением таблицы с самой собой. Но использовать такие запросы не гуд, если таблица большая, то считать будет долго.
Пример для справочника валют:
ВЫБРАТЬ
    Валюты.Ссылка
ПОМЕСТИТЬ Вал
ИЗ
    Справочник.Валюты КАК Валюты
;

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

ВЫБРАТЬ
    Вал.Ссылка,
    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Вал1.Ссылка) КАК К
ИЗ
    Вал КАК Вал
        ЛЕВОЕ СОЕДИНЕНИЕ Вал КАК Вал1
        ПО Вал.Ссылка < Вал1.Ссылка

СГРУППИРОВАТЬ ПО
    Вал.Ссылка

УПОРЯДОЧИТЬ ПО
    К
   Василий Алибабаевич
 
7 - 22.07.20 - 09:35
(3) "Выбрать первые N записей в каждой группе." Вполне средствами языка запросов. Без всяких нумераций.
   ПрестарелыйЗаяц
 
8 - 22.07.20 - 09:37
(6) Немного не то вроде.
(7) Другого способа не видел - поищу.
   ПрестарелыйЗаяц
 
9 - 22.07.20 - 09:38
(7) Язык запросов же 1С "не умеет" в кореллирующие подзапросы, хотя он вроде как то эмулился, но в итоге получается страшнее чем селфджойн.
   МимохожийОднако
 
10 - 22.07.20 - 09:39
(3) Выбрать первые 100 в тексте запроса нельзя?
   Василий Алибабаевич
 
11 - 22.07.20 - 09:39
(8) ГЫ. "ВЫБРАТЬ ПЕРВЫЕ ... ИЗ ..."

В справке : "ВЫБРАТЬ [РАЗРЕШЕННЫЕ] [РАЗЛИЧНЫЕ] [ПЕРВЫЕ <Количество>] "
   ПрестарелыйЗаяц
 
12 - 22.07.20 - 09:41
(11) Первые не значит "первые любые".
   ПрестарелыйЗаяц
 
13 - 22.07.20 - 09:42
(10) Если в нужном порядке, то нельзя.
   Василий Алибабаевич
 
14 - 22.07.20 - 09:43
(12) "первые любые" ??? Вот здесь не понятно. Чем "первые 100" отличаются от "первых любых 100"?
   Garykom
 
15 - 22.07.20 - 09:43
(0) Не надо нумеровать записи в запросе!
Результат запроса уже пронумерован всегда!
   Василий Алибабаевич
 
16 - 22.07.20 - 09:45
(13) Почему нельзя то? Вложенный запрос сортируй как хочешь. Из него выбери первых <сколько нужно>. Они будут в нужном порядке. Всяко будет быстрее, чем (6).
   ПрестарелыйЗаяц
 
17 - 22.07.20 - 09:45
(14) Есть критерий сортировки стоимость. Выбрать самые продаваемые товары в каждой товарной группе, это нормально делается с ссылочными полями либо с унмкальными записями.
   ПрестарелыйЗаяц
 
18 - 22.07.20 - 09:46
(15) Другое дело, что эта нумерация недоступна в движках ничего 13.
   ПрестарелыйЗаяц
 
19 - 22.07.20 - 09:48
(16) Что куда вложено? Есть пример?
   acht
 
20 - 22.07.20 - 09:55
(19) выбрать первые 100 * из (выбрать количество, артикул, стоимость из ...) как пiдзапрос упорядочить по пiдзапрос.стоимость
   Василий Алибабаевич
 
21 - 22.07.20 - 09:59
(19) Пример по рейтингу дебеторов по группам финансирования

ВЫБРАТЬ
  Контрагенты.Финансирование КАК Финансирование,
  ВложенныйЗапрос.Контрагент КАК Контрагент,
  ВложенныйЗапрос.СуммаОстаток КАК СуммаОстаток
ИЗ
  Справочник.Контрагенты КАК Контрагенты
  //Вот он вложенный запрос. В нем выбираются первые 20 мутдаков, которые не платят

  ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ПЕРВЫЕ 20
    ВзаиморасчетыОстатки.Контрагент КАК Контрагент,
    ВзаиморасчетыОстатки.СуммаОстаток КАК СуммаОстаток,
    ВзаиморасчетыОстатки.Контрагент.Финансирование КАК КонтрагентФинансирование
    ИЗ
    РегистрНакопления.Взаиморасчеты.Остатки КАК ВзаиморасчетыОстатки
    //Вот она сотрировка по сумме задолженности

    УПОРЯДОЧИТЬ ПО
    СуммаОстаток) КАК ВложенныйЗапрос
    //Вот оно условие связи

    ПО Контрагенты.Финансирование = ВложенныйЗапрос.КонтрагентФинансирование
   ПрестарелыйЗаяц
 
22 - 22.07.20 - 10:20
(21) В подзапросе ты выбираешь просто первые 20, а нужно первые 20 в конкретной группе, это и будет кореллирующий подзапрос, который в 1С не работает.
Ладно фиг с ним, можно сделать то и в коде.
   Василий Алибабаевич
 
23 - 22.07.20 - 10:25
(22) Птля... Это просто пример вложенного запроса. Можно сделать подзапрос с параметрами отбора. Можно сделать в СКД и тогда "оно само".  ...
   ПрестарелыйЗаяц
 
24 - 22.07.20 - 10:55
(23) "Можно сделать подзапрос с параметрами отбора." - параметрами отбора должен быть элемент из верхнего запроса, а это и не выходит сделать.
На СКД можно сделать, если количество выбираемых записей фиксированно (но это не точно), хотя можно попробовать - спасибо за дельный совет - поробую.
   МимохожийОднако
 
25 - 22.07.20 - 10:58
(22) Получи нужные записи нужной группы, отсортируй по нужному полю. И из этого запроса выбери первые в нужном количестве.


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