Имя: Пароль:
1C
 
В чем смысл функции?
,
0 mikecool
 
09.12.14
16:27
Функция КлючИЗначение(Структура)
    
    Для каждого КлючИЗначение Из Структура Цикл
        Возврат КлючИЗначение;
    КонецЦикла;
    
КонецФункции
1 Гёдза
 
09.12.14
16:28
получить первый ключизначение структуры
2 Garykom
 
гуру
09.12.14
16:28
(0) вернуть последнее, т.е. первое?
3 Armando
 
09.12.14
16:29
Безопасное получение первого ключазначение
4 mikecool
 
09.12.14
16:29
(3) афигеть безопасность )
это быстрее, чем прочитать количество() и вернуть [0]?
5 Ёпрст
 
09.12.14
16:30
(3) я бы сказал, без проверочное :)
6 Armando
 
09.12.14
16:30
По сути для любой коллекции подойдет
7 Garykom
 
гуру
09.12.14
16:30
(3) не не безопасное это когда неопределено... или функция без "Возврат" как раз его и вернет?
8 YFedor
 
09.12.14
16:30
Заодно, если структура пуста вернет Неопределено
9 Smallrat
 
09.12.14
16:30
вот только, емнип, структура не всегда возвращает значения в том порядке, в котором они добавлялись. То есть значение будет от балды, ну или exception, если вдруг это пустая структура
10 silent person
 
09.12.14
16:30
а что вернет если нет элементов ?
11 Ёпрст
 
09.12.14
16:32
(10) неопределенно
12 Ёпрст
 
09.12.14
16:32
вот вернйт ошибку, если это не коллекция..
13 mikecool
 
09.12.14
16:33
вот оказывается сколько смыслов может быть ...
14 Armando
 
09.12.14
16:33
(4) Не думаю что быстрее. Если бы была проверка на количество, и возврат первого элемента коллекции, то было бы понятней. А так индуский код какой-то получился.
15 Локи-13
 
09.12.14
16:33
(0) запостить ее на мисте?
16 mikecool
 
09.12.14
16:35
(15) не, это вообще не смысл был
я не увидел смысла, вот и спросил
17 ДенисЧ
 
09.12.14
16:39
смысл простой - шоб було.
18 Бледно Золотистый
 
09.12.14
16:42
(16) А откуда это? Типовое или самописко?
19 mikecool
 
09.12.14
16:44
(18) Управление торговлей, редакция 11.1 (11.1.2.23)
самописного от внедренцев полно и похлеще
20 Лефмихалыч
 
09.12.14
16:46
(0) функция позволяет не проверять в туевой хуче мест
Если Структура.Количество() Тогда
21 Лефмихалыч
 
09.12.14
16:47
(9) это соответствие не в том порядке, а структура упорядоченная
22 Smallrat
 
09.12.14
16:48
(21) да, попутал
23 mikecool
 
09.12.14
16:49
(20) емнип, метод Количество() возвращает значение свойства структуры(по паскалю припоминаю)
неужели организовать цикл быстрее чем опросить свойство?
24 mikecool
 
09.12.14
16:49
+23 а также возврат Неопределено в случае пустой структуры тоже не айс
25 marvak
 
09.12.14
16:51
(0)
самый простой способ вернуть пару КлючИЗначение структуры.
номер значения не имеет, имхо
26 Лефмихалыч
 
09.12.14
16:58
(23) я не адвокат подхода (0), я просто предположил, чем мог руководствоваться автор. Не тоже не понимаю, чем
Если Структура.Количество() Тогда


отличается от

первыйЭлемент = КлючЗначение(Структура);
Если ЗначениеЗаполнено(ПервыйЭлемент) Тогда
27 sapphire
 
09.12.14
16:58
Тупая функция хавающая все виды коллекций, вызывающая исключение если передан неитерабельный тип.
28 sapphire
 
09.12.14
16:59
(24) А если передан массив и первый элемент оного равен неопределено?
29 mikecool
 
09.12.14
17:00
все теперь стало на места в голове )
не первый раз сталкиваюсь с таким кодом и наконец решил таки выяснить - в чем соль )
30 mikecool
 
09.12.14
17:00
(28) зато он есть )
31 sapphire
 
09.12.14
17:01
(30) не факт. А если массив не имеет элементов, то тоже ведь неопределено
32 sapphire
 
09.12.14
17:04
(30)
Функция ЭтоКоллекция(Параметр)
    try
    Для каждого КлючИЗначение Из Параметр Цикл
        Возврат Истина;
    КонецЦикла;
    except
        Возврат Ложь;  
    endtry;
КонецФункции
33 su_mai
 
09.12.14
17:25
(0) Вызвать разрыв мозга, да? Вызвать исключение если Структура - не коллекция :)
34 H A D G E H O G s
 
09.12.14
17:34
Смысл - показать, что автор сего творческая личность, именно тот мифический программист, которого так любят HR. Радуйся, ТС, ты обнаружил след!
35 H A D G E H O G s
 
09.12.14
17:35
(0) Там еще много таких подарков?
36 Фокусник
 
09.12.14
17:37
(32) и не влом на латиницу переключать? :)
37 H A D G E H O G s
 
09.12.14
17:39
(36) Так круче. Это - как шляпа у Боярского, признак выдержанности программист.
38 IШаман
 
09.12.14
17:52
(34) Один мой знакомый называл такое решение "Элегантным"
39 ДенисЧ
 
09.12.14
18:04
(38) Очень хорошо воспитанный знакомый....
40 Эмбеддер
 
09.12.14
20:12
(0) плохо то, что в конце Неопределено не возвращает
41 Asmody
 
09.12.14
20:18
Чую, автор сего опуса перечитал книг по фунциональному программированию.
42 exchang
 
09.12.14
20:36
Черти одни собрались тут, все караул грамотеи, ума на большее не хватит, и при том при всем, что каждому из всех вас до автора это кода даже не стоять рядом
43 tridog
 
09.12.14
20:37
(40) Если внутри функции не будет вызван Возврат - как-раз и будет возвращено Неопределено.

(42) Не боги горшки обжигают. Это в плане "крутости" авторов УТ11. А функция и правда долбанутая.
44 exchang
 
09.12.14
20:43
(43) Просто это мерзко все, можно подумать все такие безупречные, а что до авторов УТ11, так они по крайней мере работой занимаются, а не семки не скамейке щелкают с подружками по одному подъезду
45 tridog
 
09.12.14
21:04
(44) Это не отменяет того, что функция долбанутая :)
46 фобка
 
09.12.14
21:07
Думаю это для структур с одним ключом и не важно как он обзывается
47 ДенисЧ
 
09.12.14
21:12
(42) Да, рядом с автором этого кода я даже какать на одном кв. километре не сяду...
48 фобка
 
09.12.14
21:14
Предположу что используется как универсальный механизм для передачи параметров в открытые формы, например.. Давно типовые конфы не видел, с УТ11 последний раз работал 2 года назад... Нужно смотреть где используется..
49 iHell
 
09.12.14
21:17
(4) Структура - неупорядоченная коллекция, по индексу нельзя обращаться.
50 GreyK
 
09.12.14
21:36
(0) Не парься, людям платят за количество знаков за день и "модульность", кто-то из прогов прикололся над "хозяином-заказчиком".
51 exchang
 
09.12.14
21:55
(47)(50) Так изложите свое видение данного решения, откройте конфигуратор и хотя бы сделайте замер производительности, и тогда извольте, обсирайтесь сколько угодно
52 фобка
 
09.12.14
22:00
(51) ты автор функции в (0) чтоли? в (42) написана чушь. Не надо боготворить создателей типовых, это такие же программисты как и все остальные, просто они жестко подчинены регламентам и правилам
53 ShoGUN
 
09.12.14
22:01
(0) Да мало ли странностей у людей? Я вот в самописке охреневал от людей, которые не знали про Формат(Переменная,"ЧГ=0") и написали целую функцию, чтобы убирать неразрывные пробелы.
54 ShoGUN
 
09.12.14
22:01
А мой знакомый видел функцию для замены Свернуть() у ТЗ. О как!
55 GreyK
 
09.12.14
22:04
(51) Ты хоть примеры приведи где такое пользуют и какие надои с одной коровы.
56 Asmody
 
09.12.14
22:08
Разное бывает. Когда-то сам такое на javascript'е написал:

`f=function(a,b,c) {
return a.split(b).join(c);
}`
57 exchang
 
09.12.14
22:10
(52) мой ответ на ваш вопрос в (44)
(51) приведите примеры себе сами, а коров для надоя можете легко, хоть миллион надоить. В цикле
58 GreyK
 
09.12.14
22:12
(56) В чём цимус сей функции, может быть в сбросе переменных? Может научиться обнулять переменные и всё будет тип-топ и в одной процедуре?
59 фобка
 
09.12.14
22:41
(57) я ежедневно по 6-8 часов только код пишу, так что мимо
60 Марсель
 
10.12.14
01:01
С точки зрения производительности, код указанной в (0) функции более оптимален, чем конструкция

<code>

Если Структура.Количество() Тогда

Возврат Структура [0];

КонецЕсли;

</code>

Особенно, учитывая что имеем дело со скриптовым языком.
Сравните количество операторов (в том числе не явных) в двух вариантах.

Другой вопрос, стоила ли производительность (не забываем, что говорим об 1С) того, что для большинства код стал не понятен.
61 rsv
 
10.12.14
01:34
(0) Select Top 1
62 rsv
 
10.12.14
01:34
И места не много ....
63 mikeA
 
10.12.14
10:22
(51) на 1 000 000 итераций

3,666253 код из (0)
2,696716 проверка Если Структура.Количество() > 0

и это когда "если количество" вызывать как функцию. а если проверять в коде будет ещё в два раза быстрее
64 Asmody
 
10.12.14
10:43
А так не быстрее?

Возврат ?(Структура.Количество()=0,Неопределено,Структура[0]);
65 DrZombi
 
гуру
10.12.14
10:44
(0) Писатель из разряда "Гуано-Код" :)
66 DrZombi
 
гуру
10.12.14
10:46
(42) Спасибо, я лучше в своем уголке постою, чем с автором Быдло-кода :)
67 DrZombi
 
гуру
10.12.14
10:50
+(0) Смысл:

Вернуть первое попавшееся значение из Структуры или Свойства, или подобного элемента с характерными свойствами.
Так же Автор обошелся без проверки на "Если и Тогда"

...
Самое ужасно, что если Вдруг, кто-то начнет писать первым значением какой либо мусор, то все пойдет к черту :)
68 mikeA
 
10.12.14
11:20
(64) ну inline то везде быстрее будет даже в 1С )
в этом случае на 20% примерно
69 H A D G E H O G s
 
10.12.14
11:39
(68) Рекомендую почитать, что же такое inline и не писать пургу.

Встречал я дятлокод в одну строку, для "оптимизации", это было нечто.
70 Ненавижу 1С
 
гуру
10.12.14
11:40
(64) зависит как реализован метод Количество()
71 ShoGUN
 
10.12.14
12:01
(60)(64) Я не догнал, давно у нас в структурах индексы появились? Код в (0) можно использовать только для структуры с одним элементом, в противном случае у него поведение не документировано, структура-то - неупорядоченная коллекция.
AdBlock убивает бесплатный контент. 1Сергей