Имя: Пароль:
1C
 
Как выбрать наибольшее значение из ТЗ
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) и что?