![]() |
![]() |
![]() |
|
Как выбрать наибольшее значение из ТЗ | ☑ | ||
---|---|---|---|---|
0
SeregaMW
27.05.11
✎
11:51
|
Есть ТЗ
Контр| Кол ----------- Склад| 22 Склад| 23 Склад| 42 и т.д. |
|||
1
H A D G E H O G s
27.05.11
✎
11:52
|
Перебор
|
|||
2
Jstunner
27.05.11
✎
11:52
|
а в чем сложность?
|
|||
3
Ёпрст
гуру
27.05.11
✎
11:54
|
сортировка + взять первое.
или запрос и максимум |
|||
4
dka80
27.05.11
✎
11:54
|
ТЗ.Сортировать("Кол Убыв");
Макс = ТЗ[0] |
|||
5
SeregaMW
27.05.11
✎
11:56
|
Если контрагенты разные Склад1 Склад2 Склад3
|
|||
6
H A D G E H O G s
27.05.11
✎
11:56
|
Плохо то как все.
|
|||
7
Mitriy
27.05.11
✎
11:57
|
(4)* Макс = ТЗ[0].Количество;
|
|||
8
H A D G E H O G s
27.05.11
✎
11:58
|
(7) И ты брут.
|
|||
9
SeregaMW
27.05.11
✎
11:58
|
Как запросом обратится к ТЗ?
|
|||
10
Mitriy
27.05.11
✎
11:58
|
(5) а при чем тут контрагенты? тебе по контрагентам надо, что ли?
|
|||
11
Ёпрст
гуру
27.05.11
✎
11:59
|
(5) сортировка и перебор.
или запрос на различные и максимум |
|||
12
Mitriy
27.05.11
✎
11:59
|
(8) специально для тебя ))
МаксимальноеКоличество = 0; Для Каждого СтрокаТЗ Из ТЗ Цикл МаксимальноеКоличество = ?(МаксимальноеКоличество < СтрокаТЗ.Количество, СтрокаТЗ.Количество, МаксимальноеКоличество); КонецЦикла; Сообщить(МаксимальноеКоличество); |
|||
13
H A D G E H O G s
27.05.11
✎
11:59
|
Автор, не насилуй мозг никому. Перебери в цикле и все.
Все, что тебе тут рассказали - либо неоптимально, либо неправильно. |
|||
14
Ёпрст
гуру
27.05.11
✎
12:00
|
(9) это очень сильное шаманство, доступно для тех, кто уже научился читать, запускать самостоятельно пофигуратор и достиг 5-го уровня - самостоятельного прочтения СП и встроенной справки по F1
|
|||
15
Ksandr
27.05.11
✎
12:00
|
(9) типизировать колонки
Выбрать поле1, поле2 ПОМЕСТИТЬ ВТ из &ТЗ ; Выбрать Максимум(ВТ.Поле2) Из ВТ Сгруппировать ПО ВТ.Поле1 как то так |
|||
16
Ksandr
27.05.11
✎
12:01
|
точнее так
Выбрать Поле1, Максимум(Поле2) |
|||
17
Stim213
27.05.11
✎
12:01
|
(13) перебирать большую ТЗ по-твоему оптимальнее?
|
|||
18
SeregaMW
27.05.11
✎
12:01
|
Всем СПАСИБО, приятной Пятницы!
|
|||
19
H A D G E H O G s
27.05.11
✎
12:02
|
Во первых при сортировке изменяется исходная таблица.
Во вторых, с точки зрения классического программирования сортировка затратнее перебора. В третьих, помещение на сервер SQL таблицу для сортировки - это вообще жесть. |
|||
20
Reset
27.05.11
✎
12:06
|
(12) Будет давать неверный ответ, если все значения количества - отрицательные.
|
|||
21
Ёпрст
гуру
27.05.11
✎
12:07
|
(17) да, сортировка + перебор будет быстрее, чем помещение ТЗ во временную ТЗ + запрос.
|
|||
22
aleks-id
27.05.11
✎
12:07
|
оптимальнее так:
МаксКол = 0; Для Каждого СтрокаТЗ Из ТЗ Цикл МаксКол = Макс(МаксКол, СтрокаТЗ.Количество); КонецЦикла; Сообщить(МаксКол); |
|||
23
Reset
27.05.11
✎
12:09
|
(22) Будет давать неверный ответ, если все значения количества - отрицательные.
|
|||
24
Mitriy
27.05.11
✎
12:10
|
(20) пример, пожалуйста...
(22) согласен... |
|||
25
aleks-id
27.05.11
✎
12:10
|
(23) а по-твоему -65 больше чем 24 ?
|
|||
26
zbv
27.05.11
✎
12:12
|
(25) имеется ввиду если все отрицательные.
т.е. на выходе будет 0 |
|||
27
Reset
27.05.11
✎
12:13
|
(25) По моему, если все значения - отрицательные, то там не будет 24.
|
|||
28
Reset
27.05.11
✎
12:13
|
(24)
Если ТЗ.Количество()=0 тогда МаксКол=Неопределено; Иначе МаксКол=СтрокаТЗ[0]; Для Каждого СтрокаТЗ Из ТЗ Цикл МаксКол = Макс(МаксКол, СтрокаТЗ.Количество); КонецЦикла; КонецЕсли; |
|||
29
Reset
27.05.11
✎
12:15
|
(24)+
МаксКол=ТЗ[0] а не МаксКол=СтрокаТЗ[0]; |
|||
30
aleks-id
27.05.11
✎
12:16
|
>>МаксКол=СтрокаТЗ[0];
тут будет жирный еггог |
|||
31
Reset
27.05.11
✎
12:17
|
(30) Copy-paste mistake.
|
|||
32
aleks-id
27.05.11
✎
12:18
|
Если ТЗ.Количество()=0 тогда
МаксКол=0; Иначе МаксКол=ТЗ[0].Количество; Для Каждого СтрокаТЗ Из ТЗ Цикл МаксКол = Макс(МаксКол, СтрокаТЗ.Количество); КонецЦикла; КонецЕсли; |
|||
33
Reset
27.05.11
✎
12:19
|
(32) Да :)
|
|||
34
Souvenire
27.05.11
✎
12:19
|
(32) Напишите уже без ошибок. :)
|
|||
35
Reset
27.05.11
✎
12:22
|
(34) в (32) без ошибок)
Кроме, разве что, идеологического вопроса - что считать максимумом, если таблица пустая? :) |
|||
36
aleks-id
27.05.11
✎
12:23
|
(35) я думаю, что в нихрена максимум будет нихрена. тоесть 0 :)
|
|||
37
Reset
27.05.11
✎
12:25
|
(36) Ну здесь можно устроить знатный холивар )
Например, "ВЫБРАТЬ Максимум(Т.К) из Т как Т" вернёт NULL, а не 0 (при пустой Т) |
|||
38
Reset
27.05.11
✎
12:26
|
Хотя предлаю с этим замять =)
|
|||
39
aleks-id
27.05.11
✎
12:29
|
(37) давай разберемся.
если спросить у человека без рубля в карманах - сколько у тебя рублей в правом, левом и нагрудном кармане, что он ответит? правильно. "0". также может ответить "хз" т.к. рублей у него нет а есть доллары - это будет Неопределено. ну и может ответить "у меня карманов нет" - это будет Null. |
|||
40
H A D G E H O G s
27.05.11
✎
12:33
|
также может ответить "хз" т.к. он не в курсе, что такое рубли.
|
|||
41
H A D G E H O G s
27.05.11
✎
12:33
|
Но давайте замнем все же, пока Ненавижу 1С не приперся.
|
|||
42
Reset
27.05.11
✎
12:36
|
(39) Правильная интерпретация карманов - что у тебя в карманах? "Ничего" - а не "ноль".
(предположение о деньгах мы не можем строить - тип значания неизвестен) |
|||
43
aleks-id
27.05.11
✎
12:39
|
(42) >>что у тебя в карманах?
тогда это запрос к номенклатуре а не к количеству ;) |
|||
44
Reset
27.05.11
✎
12:47
|
(43) Кроме того, как минимум Есть карманы(хоть и с 0 денег). В пустой же таблице даже карманов нет. Спросим у голого человека: "В каком кармане у тебя больше всего денег?"
Все, ушел) Надо поработать. |
|||
45
MatrosoV AleXXXand_R
27.05.11
✎
12:48
|
(0) Либо
1) Делай через пакетный запрос 2) Упорядочить таблицу по полю - взять первую строку |
|||
46
Mitriy
27.05.11
✎
12:56
|
(28) понял... пасиб ))
|
|||
47
73
27.05.11
✎
13:00
|
(0) Можно сделать ПострителемЗапроса с ТЗ в ИсточникеДанных...
Тогда помещать на сервер не прийдётся. |
|||
48
aleks-id
27.05.11
✎
13:08
|
(45) почитай (19)
|
|||
49
73
27.05.11
✎
13:25
|
(47)+
ИстДанных = Новый ОписаниеИсточникаДанных(ТЗ); ИстДанных.Колонки.Кол.Итог = "Максимум(Кол)" ; ПостроительЗапроса = Новый ПостроительЗапроса; ПостроительЗапроса.ИсточникДанных = ИстДанных; Результат = ПостроительЗапроса.Результат; // тип РезультатЗапроса ТЗРез = Результат.Выгрузить(); МаксКол = ТЗРез[0].Кол; |
|||
50
MatrosoV AleXXXand_R
27.05.11
✎
13:30
|
(48) "с точки зрения классического программирования сортировка затратнее перебора."
Источник информации, результаты тестирования? |
|||
51
MatrosoV AleXXXand_R
27.05.11
✎
13:32
|
(50) + "Помещение на сервер SQL таблицу для сортировки - это вообще жесть."
В чем заключается "ЖЕСТЬ"? |
|||
52
Mitriy
27.05.11
✎
13:32
|
(49) а почему ты думаешь, что в этом случае сервер не дергается?
|
|||
53
73
27.05.11
✎
13:38
|
(52) Ну, может я и не прав...
Но Построителем в данном случае быстрее, чем запросом. Замерял как то. |
|||
54
aleks-id
27.05.11
✎
13:41
|
(50) а ты в 1с накидай сортировку и перебор тз тыщь в 50 элементов и сделай замер производительности.
|
|||
55
Mitriy
27.05.11
✎
13:43
|
(53) может быть... но любой запрос всегда выполняется на сервере, а значит, всегда тащит туда нужные таблицы, если они на клиенте...
|
|||
56
Aprobator
27.05.11
✎
13:44
|
на мисте млин, по любому телепатом станешь. Когда народ вопросы задавать научится? Наверное тогда же, когда и инструкции читать.(0) Что надо конкретно получить то? Если просто максимум, то однозначно перебор. Не хватало еще с таблицей чего то делать ради одного значения.
|
|||
57
vmv
27.05.11
✎
13:55
|
(56) сомневаюсь, что перебор - оптима. А если в таблице 100 и более колонок, при переборе будут читаться все эти потроха. Только запрос
|
|||
58
aleks-id
27.05.11
✎
13:57
|
(57) а типа в запрос эти потроха не будут передаваться?
и типа в сортировке они не будут участвовать да? |
|||
59
73
27.05.11
✎
13:58
|
(55) Ну, может тащить и помещать по-разному у Построителя и Запроса...
Но быстрее Построитель |
|||
60
Mitriy
27.05.11
✎
13:59
|
(59) пометил себе... пасиб ))
|
|||
61
73
27.05.11
✎
14:00
|
Кто-нибудь: замерьте уж...
|
|||
62
Mitriy
27.05.11
✎
14:00
|
(61) садюга...
|
|||
63
H A D G E H O G s
27.05.11
✎
14:02
|
(57) (58) Вас бы всех в школу в 11 класс отправить.
|
|||
64
H A D G E H O G s
27.05.11
✎
14:03
|
(57) При переборе эти потроха читаться не будут
(58) При сортировке эти потроха также читаться не будут. Учите связнные списки, блеать. wiki:%D1%E2%FF%E7%ED%FB%E9_%F1%EF%E8%F1%EE%EA |
|||
65
aleks-id
27.05.11
✎
14:11
|
(64) давно ТЗ в 1с стала связанным списком?
|
|||
66
Aprobator
27.05.11
✎
14:12
|
(64) мне вот интересно, когда ты бросишь попытки из 1Снегов программистов сделать (я 1Снег, чтоб лишних вопросов не было.)? Кстати, таблица значений - связный список? И где там ссылки на другие элементы?
|
|||
67
H A D G E H O G s
27.05.11
✎
14:13
|
(65) Предложи ей другую роль!
Или ты про обращение к строке по индексу? Простейший массив указателей решает эту проблему. |
|||
68
H A D G E H O G s
27.05.11
✎
14:13
|
(66) Кто сказал, что их вам дадут?
|
|||
69
Дикообразко
27.05.11
✎
14:14
|
(67) а сам то...
нет вообще смысла в ТЗ искать наибольшее значение... |
|||
70
H A D G E H O G s
27.05.11
✎
14:15
|
Если она не связанный список, а тупо массив структур - удаление ее строк где-то посередине должен вызывать нехилый reallocate и батхерт системы.
|
|||
71
Aprobator
27.05.11
✎
14:15
|
(68) В информатике, свя?зный спи?сок — структура данных, состоящая из узлов, каждый из которых содержит как собственные данные, так и ОДНУ или ДВЕ ссылки («связки») на СЛЕДУЮЩИЙ и/или ПРЕДЫДУЩИЙ узел списка.
|
|||
72
H A D G E H O G s
27.05.11
✎
14:15
|
(70) Такого вроде не наблюдается.
|
|||
73
H A D G E H O G s
27.05.11
✎
14:17
|
(71) Я говорю про внутренности, а не про предоставленные программисту инструменты.
|
|||
74
Дикообразко
27.05.11
✎
14:17
|
(73) тут с ИТ-ым образованием людей почти нет, ты кому что пытаешься объяснить?
|
|||
75
Mitriy
27.05.11
✎
14:18
|
(74) да-да... я тоже говорю, что хам...
|
|||
76
aleks-id
27.05.11
✎
14:19
|
(73) эт кто же нас в эти внутренности то пустил.
(74) я с ИТ-ым |
|||
77
Дикообразко
27.05.11
✎
14:20
|
(76) 1С-ка написана на Си
(75) хам? это что? |
|||
78
MatrosoV AleXXXand_R
27.05.11
✎
14:20
|
(74) Как нет? Тут половина таких :)
У меня вышка, причем на дневном - 7 лет учился (4 года колледжа + 3 универа) |
|||
79
Mitriy
27.05.11
✎
14:21
|
это H A D G E H O G... потому что выпендривается, вместо того, чтобы пальцем показать...
|
|||
80
Дикообразко
27.05.11
✎
14:21
|
(79) :)) все шутишь, старый затейник
(78) от силы 5-10% |
|||
81
ado
27.05.11
✎
14:24
|
(19) Вот кабы речь шла о компилируемом языке, я б с тобой согласился. Но в нашем случае бабушка надвое сказала.
С одной стороны, функция с большой вычислительной сложностью, но откомпилированная, с другой -- функция с малой вычислительной сложностью, но исполняемая довольно медленным интерпретатором. И что быстрее отработает зависит от многих "от". |
|||
82
aleks-id
27.05.11
✎
14:29
|
(77) и что?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |