|
Чтобы понять 1С - надо стать безумным шляпником! 🠗 (Господин ПЖ 27.12.2011 11:08) | ☑ | ||
---|---|---|---|---|
0
МишельЛагранж
27.12.11
✎
10:55
|
Натолкнувшись в очередной раз на монструозные "закидоны" 1С и разбираясь в путанице яви и снов г-на Нуралиева, меня озарило!
Чтобы все это понять - надо стать безумным! Сумашедшим! Скакать и дрыгать ногами, придурковато улыбаясь на все конструкции и "логику" 1С! А заглягуть за эту грань получилось после нахождения и попытки понять вот это: Строка.СуммаИзменена = Строка.Сумма <> Строка.Количество * Строка.Цена; Мало того, что здесь нарушена математическая логика знаков и смысла, так еще и перед этим "Строка.Сумма" вычисляется как "Строка.Количество * Строка.Цена", чтобы потом с серьезным видом сравниться для выставления флага СуммаИзменена... Ура! Здравствуй, Безумный Шляпник! Какую чашку на десерт сегодня дают к чаю?? Дайте вторую Ложечку, первая была очень вкусна, но быстро закончилась! |
|||
1
mirosh
27.12.11
✎
10:56
|
(0) ты, видно, вообще с программированием плохо знаком, если обычная запись
Строка.СуммаИзменена = Строка.Сумма <> Строка.Количество * Строка.Цена вызывает у тебя такие эмоции. |
|||
2
butterbean
27.12.11
✎
10:57
|
(0) сделай лучше
|
|||
3
Lenka_Boo
27.12.11
✎
10:57
|
Ни чего ты не понимаешь. Такие подарки поднимают нашу самооценку!
|
|||
4
mirosh
27.12.11
✎
10:57
|
(0) посмотри, что на С++ можно делать с указателями, вот там да, вынос мозга.
|
|||
5
mirosh
27.12.11
✎
10:57
|
(3) да какие подарки? что не так со строкой-то?
|
|||
6
Fish
27.12.11
✎
10:58
|
(0) А что тебе не нравится-то? И чем же интересно "нарушена математическая логика знаков и смысла"?
|
|||
7
Широкий
27.12.11
✎
10:58
|
Соль не понял..
Обычная строка кода.. достаточно лаконичная |
|||
8
mirosh
27.12.11
✎
10:58
|
(6) он не программист просто.
|
|||
9
Fish
27.12.11
✎
10:59
|
+(6) Может это не у 1с, а у тебя в голове "нарушена математическая логика знаков и смысла"? :)))
|
|||
10
Lenka_Boo
27.12.11
✎
10:59
|
(5) Со строкой все нормально. Но она сильно мозолит глаз математику - теоретику.
|
|||
11
Necessitudo
27.12.11
✎
10:59
|
Ему видимо нужно
Строка.СуммаИзменена = (Строка.Сумма) <> (Строка.Количество * Строка.Цена) |
|||
12
andrewks
27.12.11
✎
10:59
|
(0) не пойму, по какому поводу тебя настиг приступ безумия
|
|||
13
Mikeware
27.12.11
✎
10:59
|
(4) #define TRUE FALSE //счастливой отладки, суки...©
|
|||
14
Necessitudo
27.12.11
✎
10:59
|
А выучить приоритетность операций лень
|
|||
15
andrewks
27.12.11
✎
11:00
|
(10) да ну? интересно, чем
|
|||
16
aleks-id
27.12.11
✎
11:01
|
(0) а ты хотел безумную конструкцию типа
Если Строка.Сумма <> Строка.Количество * Строка.Цена Тогда Строка.СуммаИзменена = Истина Иначе Строка.СуммаИзменена = Ложь КонецЕсли; |
|||
17
mirosh
27.12.11
✎
11:01
|
(15) вот и я думаю, чем
|
|||
18
aleks-id
27.12.11
✎
11:02
|
пля. поналезут теоретики в программизм, потом пишут всякую хню на форуме
|
|||
19
Reset
27.12.11
✎
11:02
|
Мишеля опять выпустили из его лечебницы...
|
|||
20
Web00001
27.12.11
✎
11:02
|
Я наверно безумный шляпник эта строка, мне очень понятна и кажется вполне логичной и более того, для меня эта форма очень удобна для записи условий. Не пойму что смущает?
|
|||
21
Necessitudo
27.12.11
✎
11:03
|
(16) Еще можно Строка.СуммаИзменена = ?(Строка.Сумма<> Строка.Количество * Строка.Цена, Истина, Ложь);
|
|||
22
Lama12
27.12.11
✎
11:03
|
(0) Ээээ... а почитать первую главу по ЯП?
Там написано про очередность выполнения бинарных и унарных операторов. |
|||
23
Neco
27.12.11
✎
11:04
|
(0) Нормальная конструкция, во многих языках программирования является нормой
|
|||
24
Lama12
27.12.11
✎
11:04
|
22+
В разных ЯП правила вычисления могут не совпадать с правилами принятыми в классической математике. Это нормально и вызвано особенностями компиляторов и дискретной математики. |
|||
25
Web00001
27.12.11
✎
11:05
|
(22) тсссс у ТС приступ может начаться, не показывай таких сложных логических конструкций
|
|||
26
Ненавижу 1С
гуру
27.12.11
✎
11:06
|
Строка.СуммаИзменена = Строка.Сумма <> (Строка.Количество * Строка.Цена); //красивее
|
|||
27
Web00001
27.12.11
✎
11:06
|
(25) к (21)
|
|||
28
Vladal
27.12.11
✎
11:06
|
ТС вбросил и вы его сейчас кормите.
|
|||
29
МишельЛагранж
27.12.11
✎
11:07
|
(6) ну и чем = приоритетнее <>??
(4) лучше бы сделали указатели... но 1с-никам понятнее безумные конструкции, чем логика... )) |
|||
30
Lenka_Boo
27.12.11
✎
11:07
|
(15) Он ее видит как: Строка.СуммаИзменена = (Строка.Сумма <> Строка.Количество * Строка.Цена)
похоже... |
|||
31
Господин ПЖ
27.12.11
✎
11:08
|
ам/кг
|
|||
32
Vladal
27.12.11
✎
11:08
|
Мало данных.
Где это сравнение? В каком обработчике? Есть ли обработчик при изменении данных строки? Иначе если сделали изменение суммы при изменении цены и количества - это имеет смысл только при программном изменении документа. |
|||
33
Ненавижу 1С
гуру
27.12.11
✎
11:08
|
(29) в данном контексте = это оператор присваивания
<> - это операнд сравнения, в операторе присваивания сначала вычисляется выражение справа, со всем операндами |
|||
34
shuhard
27.12.11
✎
11:08
|
(31) +1
ТС тупой троль |
|||
35
Vladal
27.12.11
✎
11:10
|
Строка.СуммаИзменена = Строка.Сумма <> Строка.Количество * Строка.Цена;
сначала вычисляется Строка.Количество * Строка.Цена Потом полученный результат сравнивается с Строка.Сумма И если сумма отличается от произведения количества на цену, флаг СуммаИзменена принимает значение Истина. Что не так? |
|||
36
ado
27.12.11
✎
11:10
|
МишельЛагранж опять с умным видом продемонстрировал свою полную профнепригодность.
|
|||
37
МишельЛагранж
27.12.11
✎
11:10
|
(11) неправильно.
правильно так: Строка.СуммаИзменена = ((Строка.Сумма) <> (Строка.Количество * Строка.Цена)) - математическая логика не для безумных чаепитий с 1с придумана, а для ясного и однозначного описания абстрактных понятий. |
|||
38
Vladal
27.12.11
✎
11:11
|
МишельЛагранж, ответь на вопросы в (32)
|
|||
39
МишельЛагранж
27.12.11
✎
11:11
|
(35) кроме (37) там еще есть и вторая часть - по поводу что с чем и зачем сравнивается ))
|
|||
40
Ненавижу 1С
гуру
27.12.11
✎
11:11
|
(37) мало скобочек поставил, надо так:
Строка.СуммаИзменена = ((Строка.Сумма) <> ((Строка.Количество) * (Строка.Цена))) |
|||
41
Stim213
27.12.11
✎
11:11
|
код не читаемый просто.
|
|||
42
Vladal
27.12.11
✎
11:12
|
(41) Я когда-то залепил такую конструкцию:
Какой-тоФлаг = Контрагент = Контрагент.ГоловнойКонтрагент |
|||
43
Fish
27.12.11
✎
11:13
|
(37) Ты тупой что ли? Нахрена выделять приоритетность операций скобками, когда она и так уже определена?
|
|||
44
МишельЛагранж
27.12.11
✎
11:13
|
(38)
&НаКлиенте Процедура ТоварыЦенаПриИзменении(Элемент) Стр = ПолучитьТекущуюСтрокуТовары(); Стр.Сумма = Стр.Количество * Стр.Цена; ЗаполнитьДополнительныеДанныеСтроки(Стр); КонецПроцедуры &НаКлиентеНаСервереБезКонтекста Процедура ЗаполнитьДополнительныеДанныеСтроки(Строка) Строка.СуммаИзменена = Строка.Сумма <> Строка.Количество * Строка.Цена; КонецПроцедуры |
|||
45
andrewks
27.12.11
✎
11:13
|
(39) автор, вот тебе задачка на C
int i = 5; i = ++i + ++i; Вопрос: Чему равно i? |
|||
46
Ненавижу 1С
гуру
27.12.11
✎
11:14
|
ну а так в C++ нормально:
Line.SumModifed = Line.Sum!=Line.Amount*Line.Price; |
|||
47
МишельЛагранж
27.12.11
✎
11:15
|
(42) это тоже алогично.
есть тождество, есть равенство. Есть уравнение. Но нет "я хочу использовать знак "равно", чтобы указать, что здесь на дороге яма!" Использование математических символов в нелегитимных целях должно караться по закону. |
|||
48
Fish
27.12.11
✎
11:16
|
(45) лучше так:
int i = 5; i = ++i + i++; :))) Вопрос: Чему равно i? Только всё равно не осилит :)) |
|||
49
Ненавижу 1С
гуру
27.12.11
✎
11:17
|
(47) просто в 1С самый левый символ = интерпретируется как присваивание, никаких неоднозначностей нет
|
|||
50
Fish
27.12.11
✎
11:18
|
(47) Так и сиди в своей математике и теоретизируй там. Что ты в программирование полез, если элементарных азов программирования не понимаешь? Программирование <> Математика :)))
|
|||
51
Ненавижу 1С
гуру
27.12.11
✎
11:18
|
(50) не надо только на математику гнать, да?!
|
|||
52
andrewks
27.12.11
✎
11:19
|
(48) вот ещё круче:
int i = 5; int j = 6; i=i+++j; вопрос: чему будет равно i? |
|||
53
Fish
27.12.11
✎
11:19
|
(51) А никто на математику и не гонит :)) Просто гнать надо из программирования таких "математиков", как ТС :)))
|
|||
54
pumbaEO
27.12.11
✎
11:20
|
Нормальная строк, только я бы эту строку дополнил еще округлением.
|
|||
55
Reset
27.12.11
✎
11:24
|
(52) Такое компилятор не пропустит) Так тут таки неоднозначночть, куда отнести ++
:) |
|||
56
andrewks
27.12.11
✎
11:25
|
(55) садись, двоечник.
|
|||
57
Ненавижу 1С
гуру
27.12.11
✎
11:25
|
(55) гыгы
|
|||
58
МишельЛагранж
27.12.11
✎
11:27
|
(48) это очередная безграмотность 1с-ников.
писать неоднозначные вещи - фишка программистов 1с. сам знаешь, в каком приоритете ++i и i++ будут выполняться? |
|||
59
Reset
27.12.11
✎
11:28
|
(56) ну ладно, что сразу двоечник. Ты не разу ничего не говорил, не подумав?)
|
|||
60
Ненавижу 1С
гуру
27.12.11
✎
11:29
|
Вот если бы можно было операнды перегружать, тогда да)))
|
|||
61
andrewks
27.12.11
✎
11:30
|
(58) С придумали безграмотные одинэсники?.. О_О
|
|||
62
Fish
27.12.11
✎
11:35
|
(58) Я-то знаю, и ты удивишься, но 1С тут совершенно ни причем - это совсем другой язык :)))
А вот тебе еще примерчик: i = 2; i += 5; i *= 2; Чему равно i? :)))) (подсказка: Это тоже не 1С :)))) |
|||
63
Reset
27.12.11
✎
11:44
|
(57) Кстати, меня заинтерсовал этот "пробел" в знаниях. Есть ссылка на описание, почему интерпретируется как ++ +, а не + ++? Я сейчас сходу не нашел.
|
|||
64
МишельЛагранж
27.12.11
✎
11:56
|
(63) ну примерно вот
http://lurkmore.to/++i_+_++i |
|||
65
МишельЛагранж
27.12.11
✎
11:59
|
если берут гвозди, и начинают ими тыкать друг друга - это не проблема гвоздей.
еще хуже, когда их согнали в желтый загон для утыканья гвоздями соседа. |
|||
66
МишельЛагранж
27.12.11
✎
12:01
|
(48) вам никто не мешает пользовать.
но одно дело - над вами посмеются в С и отправят читать стандарт. И другое - когда дурость возведена в стандарт. |
|||
67
МишельЛагранж
27.12.11
✎
12:07
|
(52) программистов, пишущих ТАКОЕ (без пробелов) и гордящихся этим - навечно в желтый эцих с гвоздями....
|
|||
68
Fish
27.12.11
✎
12:08
|
(66) "над вами посмеются в С и отправят читать стандарт" - спасибо, поржал :)))
|
|||
69
МишельЛагранж
27.12.11
✎
12:14
|
(68) не зная языка - можно и поржать.
(i++)++ + j; - синтаксис правильный, но выполняться не будет )) |
|||
70
MM
27.12.11
✎
12:23
|
(68) Разве (i++) l-value? Сомневаюсь, что его можно инкрементировать.
|
|||
71
Ненавижу 1С
гуру
27.12.11
✎
12:59
|
||||
72
andrewks
27.12.11
✎
13:00
|
(67) а при чём здесь пробел?
ЗЫ в ящик сам лезь, двоечник |
|||
73
Reset
27.12.11
✎
13:01
|
(71) "The parser separates tokens from the input stream by creating the longest token possible using the input characters in a left-to-right scan"
Спасибо, то что надо. |
|||
74
Fish
27.12.11
✎
13:02
|
(69) Если учесть опыт программирования в С > 20 лет, поржал еще раз :))
|
|||
75
МишельЛагранж
27.12.11
✎
13:04
|
(71) вот даже Майкрософт, ни разу не создатель Си, пишет ПРАВИЛЬНО:
"кто так пишет - должон всегда держать в голове, что в MS ситуацию разрулили однозначно в пользу единственного варианта". |
|||
76
Ненавижу 1С
гуру
27.12.11
✎
13:06
|
(75) тем не менее, пример в (0) трактуется однозначно
|
|||
77
МишельЛагранж
27.12.11
✎
13:06
|
(74) не вы первый, не вы последний жертва 1С ))
на ней уже тысяча прогов дисквалифицировались. |
|||
78
МишельЛагранж
27.12.11
✎
13:07
|
(76) он вообще не должен существовать, и тем более - возводиться в ранг "так надо" - т.к. изначально неверна математическая трактовка.
|
|||
79
andrewks
27.12.11
✎
13:08
|
ппц... спорить бесполезняк. пойду в другие ветки
|
|||
80
Fish
27.12.11
✎
13:10
|
(78) Причем здесь математическая трактовка? Важно, как это будет трактовать компилятор (в данном примере 1с). Если нет неоднозначности, значит все в порядке и так надо. :)))
|
|||
81
Ненавижу 1С
гуру
27.12.11
✎
13:11
|
(78) это покруче чем Неопределено и NULL
почему не должен то? )) я даже в (46) перевел на С++ |
|||
82
МишельЛагранж
27.12.11
✎
13:25
|
(80) это здесь нет, а туча мест в 1с - где есть ))
здесь просто не выдержало и вывернуло... (81) так это тот же вопрос, что и "а зачем комменты? мне-то все потнятно!" должна быть прозрачность и ясность, а не запутывание и хитрожо... :) |
|||
83
Reset
27.12.11
✎
13:27
|
(82) Никто не спорит, что должна быть прозрачность. В (0) она ЕСТЬ.
|
|||
84
Fish
27.12.11
✎
13:39
|
(82) Если код в (0) Вас запутывает, то может не стоит заниматься тем, чего не понимаешь, т.е. программированием? :)))
|
|||
85
МишельЛагранж
27.12.11
✎
15:43
|
(84) вот если б москвичи не приезжали бы к нам, не заси*рали все, не грабили и сматывались, в том числе и по 1с-у - то бы может чем длругим бы и занимался...
у меня профессий много, но масквичей больше..... )) |
|||
86
Ненавижу 1С
гуру
27.12.11
✎
16:29
|
(85) э... а "масквичи" тут каким боком?
|
|||
87
МишельЛагранж
27.12.11
✎
16:33
|
(126) переж*пили там все в УТ11.... документы - где отменили, где переписали... а как же, надо же по-новому, типа прогресс и вперед... вон на мисте постоянно про "это инновационно и прогресс" поминают.. не думая, а то и не зная ничего на самом деле...
|
|||
88
МишельЛагранж
27.12.11
✎
16:35
|
(86) масквичи со своей линейкой и взглядами с рублевских дач все скупают, наводят свои порядки, выжимают и сматываются за границу. Типа, чтоб брошенный топор не догнал....
|
|||
89
Ненавижу 1С
гуру
27.12.11
✎
16:46
|
(88) ну это все понятно, но насчет кода тут как бы...
|
|||
90
МишельЛагранж
27.12.11
✎
16:55
|
(89) дело даже не в коде, а в отношении к работе, которое одинаково - что на уровне владельца завода, что на урвоне внедренца-москвича: побыстрей, неглубоко, побольше денег и линять.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |