|
Растолкуйте синтаксис | ☑ | ||
---|---|---|---|---|
0
Wobland
12.12.11
✎
11:50
|
Условие="22";
Условие = + Условие + ", Номер"; Синтаксических ошибок не обнаружено! - это уже удивило. что здесь имеется в виду? строка типовая - из УниверсальныеПодборИОбработкаОбъектов.epf |
|||
1
Wobland
12.12.11
✎
12:04
|
видать в этом случае неявно преобразуется в Условие=0+Условие;
|
|||
2
palpetrovich
12.12.11
✎
12:05
|
1с плас плас :)
|
|||
3
Shurjk
12.12.11
✎
12:06
|
(1) Когда выбираешь документ в 8.1 выдает в этом месте ошибку.
|
|||
4
Shurjk
12.12.11
✎
12:06
|
+(3) Тоже долго думал об этом приешле к мысли что это все таки баг а не фича.
|
|||
5
skunk
12.12.11
✎
12:08
|
скорее всего банально забыли ""
|
|||
6
skunk
12.12.11
✎
12:10
|
у мну кстати " Преобразование значения к типу Число не может быть выполнено"
|
|||
7
БибиГон
12.12.11
✎
12:11
|
(6) видимо смотря какая платформа?
|
|||
8
Wobland
12.12.11
✎
12:12
|
(7) пробовал на 8.1, в обработке для 8.2 то же видел.
(5) видать, забыли, да, только код же рабочий ;) (6) Условие=22 - так нормально |
|||
9
Дядя Васька
12.12.11
✎
12:14
|
Не понял, где ошибка-то? В первой строке строковое значение. Дальше конкатенация. На любом релизе и любой платформе должно работать по идее...
|
|||
10
skunk
12.12.11
✎
12:14
|
(8)не может преобразовать в число ", Номер" ... проверял на 8.2.13.219
|
|||
11
ДенисЧ
12.12.11
✎
12:14
|
(9)
Условие = + тут ошибка... |
|||
12
Wobland
12.12.11
✎
12:15
|
(10) Условие=22; Условие=+Условие; имел в виду
|
|||
13
Wobland
12.12.11
✎
12:15
|
(11) хрен вам, нет ошибки. синтаксической во всяком случае
|
|||
14
skunk
12.12.11
✎
12:15
|
(9)вот часть это кода "+ Условие" сделает из строки число ... а далее споткнется на преобразовании ", Номер"
|
|||
15
БибиГон
12.12.11
✎
12:16
|
(8) в (0) код рабочий? Условие = + Условие + ", Номер"; ?
|
|||
16
Дядя Васька
12.12.11
✎
12:16
|
(11),(12) Вон оно чо... Я это как-то за очепятку принял, думал вопрос в том что добавляет строку к числу, и все работает.
|
|||
17
skunk
12.12.11
✎
12:17
|
(13)есть ошибка в момент выполнения
Условие = "2200"; сообщить(Условие); Условие = + Условие; сообщить(Условие); Условие = + Условие + ", Номер"; сообщить(Условие); {Форма.Форма.Форма(7)}: Преобразование значения к типу Число не может быть выполнено Условие = + Условие + ", Номер"; |
|||
18
Wobland
12.12.11
✎
12:18
|
(15) см (12)
|
|||
19
Wobland
12.12.11
✎
12:19
|
(17) на втором Сообщить() уже к числу преобразовано, судя по "2 200"
|
|||
20
БибиГон
12.12.11
✎
12:19
|
(18) в (0) у тебя строка , в (12) уже число. Условие=22 оО
|
|||
21
Wobland
12.12.11
✎
12:20
|
(20) не стою на месте, пробую разные варианты. (0) взят из "типовой"
|
|||
22
Дядя Васька
12.12.11
✎
12:21
|
(19) Ну и нормально, чего не так-то? Для преобразования к строке часто юзаю ""+Переменная, когда не знаю что в ней будет. Здесь то же самое, только к числу.
|
|||
23
Живой Ископаемый
12.12.11
✎
12:22
|
||||
24
БибиГон
12.12.11
✎
12:22
|
(22) Если Переменная это число то ""+Переменная преобразует к строке?
|
|||
25
Живой Ископаемый
12.12.11
✎
12:23
|
||||
26
Wobland
12.12.11
✎
12:23
|
(24) да
|
|||
27
Дядя Васька
12.12.11
✎
12:23
|
(24) О тож :) Так просто писать короче, чем Строка(Переменная)
|
|||
28
ptiz
12.12.11
✎
12:23
|
Не тормозите.
Почему код: А = -Б; вас не удивляет? а А = +Б; удивляет? |
|||
29
Живой Ископаемый
12.12.11
✎
12:24
|
||||
30
Wobland
12.12.11
✎
12:24
|
(28) как всё просто оказалось ;)
|
|||
31
ДенисЧ
12.12.11
✎
12:24
|
Да, действительно. С точки зрения синтакисиса там всё нормально.
А вот с точки зрения логики... |
|||
32
Дядя Васька
12.12.11
✎
12:25
|
(31) Обычная опечатка. Видно же что строку делают.
|
|||
33
Живой Ископаемый
12.12.11
✎
12:26
|
||||
34
Wobland
12.12.11
✎
12:27
|
Условие = "Дата";
Если ИскомыйОбъект.Объект.ДлинаНомера > 0 Тогда Условие = + Условие + ", Номер"; КонецЕсли; плюс, очевидно, лишний |
|||
35
Живой Ископаемый
12.12.11
✎
12:28
|
||||
36
Живой Ископаемый
12.12.11
✎
12:28
|
а что с условием дальше делают?
|
|||
37
Wobland
12.12.11
✎
12:29
|
(36) запрос собирают
Если Условие <> "" Тогда ТекстЗапроса = ТекстЗапроса + "{ГДЕ " + Условие + "}" + Символы.ПС; КонецЕсли; |
|||
38
Ненавижу 1С
гуру
12.12.11
✎
12:29
|
кстати, давно хочу:
А += Б; |
|||
39
Wobland
12.12.11
✎
12:30
|
(38) лучше так: ТекСтрока.Количество+=1;
|
|||
40
Живой Ископаемый
12.12.11
✎
12:30
|
2(37) тогда точно лишний...
но можно пофантазировать где бы пригодилось http://screencast.com/t/37OZTkMC |
|||
41
Wobland
12.12.11
✎
12:31
|
(40) "" вместо Строка(), <NULL> вместо число
|
|||
42
Wobland
12.12.11
✎
12:32
|
+(41) вместо Число()
|
|||
43
Живой Ископаемый
12.12.11
✎
12:33
|
ну вот нам и первая выгода...
|
|||
44
Ненавижу 1С
гуру
12.12.11
✎
12:35
|
(39) я разве не про тоже?
|
|||
45
Wobland
12.12.11
✎
12:35
|
(44) шутка юмора такая. а=а+1 меня не особо напрягает, а вот когда переменные длинные...
|
|||
46
Живой Ископаемый
12.12.11
✎
12:36
|
Самое наверное смешное:
http://screencast.com/t/v7TN8MOMHUE |
|||
47
Wobland
12.12.11
✎
12:37
|
(46) у тебя ж во второй строке число вышло
|
|||
48
Живой Ископаемый
12.12.11
✎
12:42
|
Вот еще штука, которой сразу не ожидаешь, но после того увидел понятно что по-другому быть не может:
http://screencast.com/t/gv5qMvED |
|||
49
Wobland
12.12.11
✎
12:43
|
(48) забавно ;)
|
|||
50
orefkov
12.12.11
✎
12:44
|
||||
51
Wobland
12.12.11
✎
12:45
|
(50) по ссылке не ходил, но как читать потом? (оно ж текст поменяет, да?)
|
|||
52
Ненавижу 1С
гуру
12.12.11
✎
12:47
|
(50) не-не-не, никакие автозамены тут не катят
если писать так: Чтото.ПолучитьНечто().Упячка=Чтото.ПолучитьНечто().Упячка+1; то ПолучитьНечто() вызовится 2 раза а так: Чтото.ПолучитьНечто().Упячка+=1; только один раз можно конечно Нечто = Чтото.ПолучитьНечто(); Нечто.Упячка=Нечто.Упячка+1; |
|||
53
Evil-Wisp
12.12.11
✎
12:57
|
А почему работает такой код?
Результат = + 22 ++ 1 ++ 2 + 1 + 2; Получается 28. |
|||
54
Живой Ископаемый
12.12.11
✎
12:57
|
а почему должен не работать?
|
|||
55
Wobland
12.12.11
✎
12:58
|
++ эквивалентно +0?
|
|||
56
Evil-Wisp
12.12.11
✎
12:58
|
А, ну да
Результат = + 22 + (+1) + (+2) + 1 + 2; |
|||
57
Живой Ископаемый
12.12.11
✎
12:59
|
да нет + ЛюбаяПеременная - эквивалентно Число (ЛюбаяПеременная)
а ++ЛюбаяПеременная - эквивалентно + Число (ЛюбаяПеременная) |
|||
58
Reset
12.12.11
✎
12:59
|
ф=ф--1
эквивалентно ф=ф+1 ;D |
|||
59
Wobland
12.12.11
✎
13:00
|
нуда, ++ эквивалентно +НекаяПеременная
|
|||
60
Живой Ископаемый
12.12.11
✎
13:00
|
вот-вот, равно как и
+ 22 ++"1" ++ "2" + 1 + 2 |
|||
61
Reset
12.12.11
✎
13:00
|
или ф=ф--Истина;
|
|||
62
Ненавижу 1С
гуру
12.12.11
✎
13:01
|
а теперь ВНИМАНИЕ вопрос, чему должна быть равна переменная, чтобы условие выполнялось:
Если А=А-1 Тогда |
|||
63
Reset
12.12.11
✎
13:03
|
Пустой дате?
|
|||
64
ЧеловекДуши
12.12.11
✎
13:04
|
(62)Это то откуда у вас?
|
|||
65
Ненавижу 1С
гуру
12.12.11
✎
13:05
|
(63) с тобой неинтересно
|
|||
66
Evil-Wisp
12.12.11
✎
13:26
|
Почему Дата('99991231235959') <> Дата('99991231235959') + 1?
|
|||
67
Wobland
12.12.11
✎
13:36
|
поддержу ветку
код: Сообщить('99991231235959'); Сообщить('99991231235959' + 1); Сообщить('99991231235959'='99991231235959' + 1); результат: 31.12.9999 23:59:59 31.12.9999 23:59:59 ложь 10000й год не умеем корректно отображать? |
|||
68
Wobland
12.12.11
✎
13:37
|
нет. Год('99991231235959' + 200) = 9999
|
|||
69
Evil-Wisp
12.12.11
✎
13:42
|
Еще интересно ДобавитьМесяц('99991231235959', 1) = "01.01.0001 0:00:00"
Видимо '99991231235959' логически максимальное значение типа Дата, а физически нет. |
|||
70
palpetrovich
12.12.11
✎
14:56
|
(48) забавно, но почему 3-я не прокатила я не понял :(
|
|||
71
Живой Ископаемый
12.12.11
✎
15:06
|
2(70) разве бывает число с двумя дробными частями? 2000.42.0033?
|
|||
72
palpetrovich
12.12.11
✎
15:30
|
(71) стопудово туплю, но почему здесь работает:
+"2000" + ".42" + ".0033" а здесь нет +("2000" + ".42" + ".0033") |
|||
73
palpetrovich
12.12.11
✎
15:31
|
+72, а наверное потому что сначала получается строка "2000.42.0033"?
|
|||
74
Живой Ископаемый
12.12.11
✎
15:32
|
2(72) божечки.. ну это же очевидно...
во втором случае - сначала все происходит внутри скобок.. и внутри скобок у нас строка. и только потом происходит попытка преобразовать в число. а в превом случае мы сразу оперируем числами... ну это же не знаю - аналогия 4-го лкасса, когда проходят скобки по арифметике |
|||
75
Живой Ископаемый
12.12.11
✎
15:33
|
то есть
+"2000" - нам сразу дает число - 2 000 и потом все остальные плюсы пытаются преобразовать свои аргументы также к числу... |
|||
76
Evil-Wisp
13.12.11
✎
07:29
|
(69) Даже еще интересней
Сообщить('99991231235959' = '99991231235959' + 1 -1); Ложь |
|||
77
Evil-Wisp
13.12.11
✎
07:42
|
Разгаданно :)
Сообщить((Дата('00010101') + 315537897599) - Дата('00010101')); Сообщить((Дата('00010101') + 315537897600) - Дата('00010101')); Результат: 315 537 897 599 315 537 897 598,9999 У даты появляется дробная часть, от которой потом сложно избавиться избавится :) Сообщить('99991231235959' = '99991231235959' + 1 - 0.9999); Истина |
|||
78
Wobland
13.12.11
✎
07:46
|
чуть-чуть опередил ;)
Сообщить(('99991231235959'+1) - '99991231235959'); 0,9999 |
|||
79
orefkov
13.12.11
✎
09:54
|
Вот помню в 80х в Технике-Молодежи статейки были об исследовании багов переполнения на БЗ-34 - вот это да, клево было, 3ГГОГи всякие ловить.
|
|||
80
ДенисЧ
13.12.11
✎
09:55
|
(79) Это да... Но на моём мк-52 половина не воспроизводилась :-(
|
|||
81
DJ Anthon
16.12.11
✎
08:58
|
(62) и че, если так в коде написать - это будет быдлокодство или нет? по идее, код короче, но становится намного непонятнее.. если, конечно, не знать про это )
|
|||
82
DJ Anthon
16.12.11
✎
09:00
|
кстати, в типовой обработке справочников и документов не предусмотрели выход по кантралбрейку, уроды. сижу теперь, пялюсь на этот процесс, а рушить низя (
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |