Имя: Пароль:
1C
1С v8
Чтобы понять 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) дело даже не в коде, а в отношении к работе, которое одинаково - что на уровне владельца завода, что на урвоне внедренца-москвича: побыстрей, неглубоко, побольше денег и линять.