|
Запрос по табличной части. Функция Максимум(Цена). Сбивает порядок строк 🠗 (Волшебник 02.09.2022 08:37) | ☑ | ||
---|---|---|---|---|
0
Eugeneer
02.09.22
✎
07:16
|
Короче в запрос передается ТЧ. Эта ТЧ во временной таблице запроса (там нельзя применять функции).
Потом идет запрос в помещенной таблице и там применяется Максимум. В таблице есть дубли. Чтобы убрать дубли использую Максимум - чтобы в результате не было их. Все нормально работает. Но в результате все строки как попало ВООБЩЕ. А нужно чтобы сохранялось сортировка по номеру строки. Но если я номер строки использую в запросе - то максимум не сработает. Единственный вариант это еще использовать Максимум(НомерСтроки)... работает. но тогда запрос в 4 раза почему то сразу медленней. |
|||
1
Eugeneer
02.09.22
✎
07:17
|
А с сортировкой бред какой то совсем.
Причем я не понимаю, потому что я передаю ТЧ - она нормальная. По порядку. |
|||
2
Eugeneer
02.09.22
✎
07:18
|
Короче как из ТЧ убрать дубли, но сохранить про этом порядок строк который там.
|
|||
3
Ryzeman
02.09.22
✎
07:29
|
ВЫБРАТЬ
МИНИМУМ(ТабЧасть.НомерСтроки) КАК НомерСтроки, ТабЧасть.Номенклатура КАК Номенклатура ИЗ ТабЧасть КАК ТабЧасть СГРУППИРОВАТЬ ПО ТабЧасть.Номенклатура УПОРЯДОЧИТЬ ПО МИНИМУМ(ТабЧасть.НомерСтроки) ВОЗР P.S. не проснулся? Или знание SQL - ненужное?) |
|||
4
НафНаф
02.09.22
✎
07:30
|
>>там нельзя применять функции
конкретнее можно? |
|||
5
AneJIbcuH
02.09.22
✎
07:31
|
(3) Так пишет же, что применил Максимум(НомерСтроки). Но производительность падает
|
|||
6
Eugeneer
02.09.22
✎
07:31
|
(3) я про то и пишу) но тогда запрос медленнее) ладно фиг с ним.э лишних пара секунд на 10к позиций.
|
|||
7
Ryzeman
02.09.22
✎
07:32
|
(6) Ты не про то пишешь. На кой чёрт ты максимум от номенклатуры берёшь, когда по ней надо группировать?
|
|||
8
Ryzeman
02.09.22
✎
07:33
|
(5) с 0.000000001 мс до 0.000000004?
Если у него там по 100к строк, пусть индексирует и правильно по индексу выбирает... |
|||
9
Eugeneer
02.09.22
✎
07:34
|
тут еще больше вопрос
| МАКСИМУМ(ВременнаяДанныеПоиска.Поле_ЦенаЗакупки) КАК ЦенаЗакупки, | МАКСИМУМ(ВременнаяДанныеПоиска.НомерСтроки) КАК НомерСтроки, тут еще больше вопрос к результату. Не получится ли что вернется цена максимум минимальной строки. (если вдруг цена больше оказалось у номера строки меньше). |
|||
10
Eugeneer
02.09.22
✎
07:35
|
(7) максимум по цене.
|
|||
11
НафНаф
02.09.22
✎
07:35
|
(9) а ты еще и SQL не знаешь, браво
|
|||
12
RomanYS
02.09.22
✎
07:36
|
(9) глупейший вопрос
|
|||
13
Eugeneer
02.09.22
✎
07:37
|
))) я понял что вернется и максимум цены и максимум номера из дублей.
А хотелось бы чтобы вернулся номер строки именно той где был максимум. Короче 1С видимо не может так. |
|||
14
Eugeneer
02.09.22
✎
07:37
|
либо придется делать несколько соединений.... но ради номера строки как то не комильфо.
|
|||
15
AneJIbcuH
02.09.22
✎
07:40
|
(14) Одно соединение
|
|||
16
Eugeneer
02.09.22
✎
07:42
|
ну что одно. номер строки не соответствует максимальной цене.
|
|||
17
Ryzeman
02.09.22
✎
07:44
|
(13) >>Короче 1С видимо не может так
При чём тут 1с, если речь про запрос - читай чистая задачка на SQL... Сгруппируй по номеру строки и сделай внутреннее с номенклатурой. Это тривиальная задача |
|||
18
СеменовСемен
02.09.22
✎
07:45
|
Если тз по номенклатуре отсортирована, то в 1 проход без запросов это можно вычислить.
Будет существенно быстрее |
|||
19
Eugeneer
02.09.22
✎
07:45
|
его только можно будет достать если еще раз соедить с ТЧ по группировке и Цена = Максимум(Цена)
|
|||
20
Ryzeman
02.09.22
✎
07:46
|
(17) Ерунду написал. Наоборот - сгруппируй по номенклатуре и привяжи номер. Останется только решить что делать когда у тебя в 100 строках одинаковая номенклатура и цена, какую брать
|
|||
21
Eugeneer
02.09.22
✎
07:49
|
1С не может выбирать поля которые не сгруппированы.
на номер строки только функцию приходится накладывать. а это значит что по она покажет не реальную строку с МАКС ценой, а максимальную строку из нескольких дублей. |
|||
22
НафНаф
02.09.22
✎
07:50
|
(21) это SQL, а не 1С
|
|||
23
Eugeneer
02.09.22
✎
07:51
|
ну ок . ладно. понятно. будет работать как может
|
|||
24
RomanYS
02.09.22
✎
08:17
|
(23) всё решаемо. Подобные задачи регулярно здесь мелькают как тестовые. Вот например
Получение последних контрагентов на каждый день продаж Кстати там кажется интересовались зачем такие задачи могут понадобиться) |
|||
25
Eugeneer
02.09.22
✎
08:20
|
(24) я знаю что решаемо. если еще добавить еще раз соединение с таблицей. А я этого не хочу.
|
|||
26
RomanYS
02.09.22
✎
08:22
|
(24) + Помогите с простым запросом
|
|||
27
Eugeneer
02.09.22
✎
08:22
|
там задача проще. поэтому можно соединений добавлять сколько влезет.
у меня огромная таблица. если я ее буду много раз использовать. то это все замедление |
|||
28
RomanYS
02.09.22
✎
08:23
|
(25) странная постановка, тебе это или нужно или нет
|
|||
29
Eugeneer
02.09.22
✎
08:34
|
(28) забудь)))
у меня не решаемая задача))) Я только что понял что она не решится вообще никак. )) Потому что у меня там 3 цены. разных колонок. И везде максимум используется. Это значит что среди одинаковых строк может быть максимум этих трех цен совершенно хаотично. Поэтому и номер строки вообще безсмыслен. Другое дело это сортировка. |
|||
30
Eugeneer
02.09.22
✎
08:36
|
разве что можно сделать красиво так это отсортировать по номенклатуре.
а потом использовать МИНИМУМ(НомерСтроки) и МАКСИМУМ (номер строки). и в отчет вывести что то типа номера строки с какой по какую (мин-макс) |
|||
31
Гений 1С
гуру
02.09.22
✎
08:37
|
(2) в ТЧ есть номер строки, диядя.
|
|||
32
Eugeneer
02.09.22
✎
08:38
|
Я не уверен что там больше двух дублей вообще будет. ъотя может быть. Вижу идеальням вариантом это и мин и макс задействовать.
|
|||
33
СеменовСемен
02.09.22
✎
08:42
|
у тебя есть таблица. прошелся по ней, пометил те строки которые с максимумом, выгрузил их в отдельную таблицу и ее уже в запрос для дальнейшей обработки
|
|||
34
Eugeneer
02.09.22
✎
08:45
|
Как всегда я гениально нахожу КРАСИВОЕ РЕШЕНИЕ.
Мало того что убиваются дубли и я не просто вывожу таблицу бюез дублей. Теперь у меня в отчете видно - если не было дублей - то просто номер строки. А если были дубли - то я сделал вывод Мин-Макс диапазона в котором эхти дубли))) КРАСОТА. теперь юзер будет сразу видеть нормальные строки, и если не нормальные - то знать где они)) |
|||
35
НафНаф
02.09.22
✎
08:53
|
(34) как это решает твое "номер строки не соответствует максимальной цене"?
|
|||
36
forforumandspam
02.09.22
✎
08:57
|
Хоть бы раз текст запроса показал
|
|||
37
Eugeneer
02.09.22
✎
09:00
|
(35) как раз решает. мало того еще говорит юзеру диапазон строк с дублями
|
|||
38
Eugeneer
02.09.22
✎
09:02
|
мне больше нужна была даже сортировка (чтобы осталась таже). Потому что без номеров строк вообще бред выводился - вся номенклатура хаотично. при этом мне не нужна была сортировка по номенклатуре.
|
|||
39
НафНаф
02.09.22
✎
09:10
|
(37) ну да, для одного товара, Мин = 1, Макс = 10000, количество строк этого товара 4, а максимальная цена в 7423 строке )))
|
|||
40
Eugeneer
02.09.22
✎
09:12
|
(39) да пофиг. главное сам факт отобразить (подсветить).
Ну и сортировка. |
|||
41
Eugeneer
02.09.22
✎
09:13
|
если чо там можно и Количество различные в запросе задействовать
|
|||
42
НафНаф
02.09.22
✎
09:17
|
(40) на лету меняешь условие, ага
|
|||
43
mikecool
02.09.22
✎
10:07
|
лавры Гения не дают спокойно спать Евгению
стих получился |
|||
44
Eugeneer
02.09.22
✎
10:15
|
(42) как раз на то и программист чтобы на лету находить лучшие решения
|
|||
45
НафНаф
02.09.22
✎
11:06
|
(44) опять подмена терминов "условия" и "решения"
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |