Имя: Пароль:
1C
 
Недокументированные операторы арифметических действий в 1С 8
0 PetrVV
 
11.04.11
10:06
Расскажите, пожалуйста, какие операторы вам известны ?
1 Fragster
 
гуру
11.04.11
10:07
Арифметические операции
В языке  определены следующие виды арифметических операций:

сложение
(Оп1 + Оп2)

вычитание
(Оп1 - Оп2)

умножение
(Оп1 * Оп2)

деление
(Оп1 / Оп2)

остаток от деления
(Оп1 % Оп2)

унарный минус
(-Оп1)



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

Сложение определено для следующих типов операндов:
Число+ЧислоДата+Число  (к дате прибавляется число секунд)

Вычитание определено для следующих типов операндов:
Число-ЧислоДата-Число (от даты отнимается число секунд)
Дата-Дата (результатом является разница между двумя датами, измеренная в секундах)

Умножение:
Число*Число

Деление:
Число/Число

Остаток от деления:
Число%Число
2 Ненавижу 1С
 
гуру
11.04.11
10:07
наверное документировано, но прикольно

"00024"-(-1)
3 Fragster
 
гуру
11.04.11
10:10
(2)=>(1) унарный минус
(-Оп1)
4 Нуф-Нуф
 
11.04.11
10:11
(2) может 1с хранит все числа как строку, а в момент обращения к ним как к числам перегоняет в числа?
5 Шпиндельная бабка
 
11.04.11
10:12
Икс = "00024"-(-1) = 25 //вот это прикол ...
6 Stepa86
 
11.04.11
10:16
(2) унарный минус приоритет имеет выше, поэтому вычисления начинается с него, а потом привидение типа, наверно
7 Defender aka LINN
 
11.04.11
10:17
(2), (5) И где смеяться?
(0) "Недокументированные арифметические операторы" - это сильно. ВнушаетЪ.
8 andrewks
 
11.04.11
10:19
(5) а где прикол-то?
9 Murzz
 
11.04.11
10:21
(8) "Тот или иной семантический вариант операции определяется по ПЕРВОМУ операнду. В случае несовпадения типа ВТОРОГО операнда с требуемым, значение преобразуется к требуемому типу в соответствии с правилами преобразования типов. А в (2) преобразовалось значение первого операнда, а не второго.
10 Ненавижу 1С
 
гуру
11.04.11
10:21
цел(-1.5)
математически равно -2
в 1С равно -1
11 Ненавижу 1С
 
гуру
11.04.11
10:22
(9) для строк бинарная операция минус не определена
12 andrewks
 
11.04.11
10:22
(10) баян
13 Defender aka LINN
 
11.04.11
10:22
(9) Первый - это тот, у кого приоритет выше. (6) уже написал.
14 Fragster
 
гуру
11.04.11
10:22
(8) "00024"+(-1) = "00024-1"
15 Ненавижу 1С
 
гуру
11.04.11
10:23
(12) еще какой!
16 andrewks
 
11.04.11
10:25
(14) прикол
17 Stepa86
 
11.04.11
10:26
(14) хе, значит (6) ошибочно, а дело в умном интерпретаторе, который не падает при попытке вычесть из строки всякую гадость
18 zak555
 
11.04.11
10:28
(15) так это контактинации
19 Ненавижу 1С
 
гуру
11.04.11
10:28
(18) в (15)?
20 zak555
 
11.04.11
10:29
(18) к (14) =)
21 orefkov
 
11.04.11
10:29
Унарный плюс в 1С еще есть.
1 ++ 1
22 Живой Ископаемый
 
11.04.11
10:30
(0)в запросах?
23 butterbean
 
11.04.11
10:31
"00024"-1=23
"00024"*1=24
"00024"/1=24
, имхо просто при попытке вычислить что-то кроме суммы все преобразуется в число
24 Шпиндельная бабка
 
11.04.11
10:31
ВЫбрать &Док КАК Документ

Знаю что баян :D
25 Stepa86
 
11.04.11
10:33
(23) по (1), всегда происходит преобразование в тот тип, который определен для этой операции
26 Stepa86
 
11.04.11
10:34
+(25) всмысле для вычитания может быть и к дате преобразовано
27 Ненавижу 1С
 
гуру
11.04.11
10:35
(22) вот

ВЫБРАТЬ
   ПродажиОбороты.Номенклатура,
   СУММА(ПродажиОбороты.КоличествоОборот / 2.135) КАК П1,
   СУММА(ПродажиОбороты.КоличествоОборот) / 2.135 КАК П2
ИЗ
   РегистрНакопления.Продажи.Обороты КАК ПродажиОбороты

СГРУППИРОВАТЬ ПО
   ПродажиОбороты.Номенклатура

ИМЕЮЩИЕ
   СУММА(ПродажиОбороты.КоличествоОборот / 2.135) <> СУММА(ПродажиОбороты.КоличествоОборот) / 2.135
28 Fragster
 
гуру
11.04.11
10:36
(27) так ведь правильно все
29 Ненавижу 1С
 
гуру
11.04.11
10:39
(28) какие ваши доказательства?
30 PetrVV
 
19.04.11
17:40
(23) Круто.
Независимо от того, куда вы едете — это в гору и против ветра!