Имя: Пароль:
1C
1С v8
Почему можно иногда не ставить конец строки кода?
Ø (Волшебник 05.09.2013 11:14)
,
0 Odavid
 
04.09.13
13:49
Вопрос на засыпку: почему если строка одна в инструкции - в конце строки можно не ставить ";"?
Хочется послушать остальных.
1 Ненавижу 1С
 
гуру
04.09.13
13:51
когда это последний оператор в последовательности
тоска-с-запятой это не конец оператора, это разделитель между ними
3 Maxus43
 
04.09.13
13:53
(1) +
4 aka AMIGO
 
04.09.13
13:54
я не прав
5 Odavid
 
04.09.13
13:56
(1) если я не поставлю ";" в конце страницы кода - то будет ошибка.
Хотя оператор будет последний.
6 geka-geka
 
04.09.13
13:56
Точку с запятой всегда нужно ставить на автомате, иначе потом мозг сломаешь ошибки искать
7 Ненавижу 1С
 
гуру
04.09.13
13:57
(5) причем тут страница кода?
8 aka AMIGO
 
04.09.13
13:57
(5) только что проверено: последний оператор перед лог.скобкой может быть без ";"

            КонецЕсли;
        КонецЦикла;
        ы=1
    КонецЦикла;

в окне сообщений - Синт ошибок не обнаружено
9 Wobland
 
04.09.13
13:58
(5) код в студию
10 aka AMIGO
 
04.09.13
13:59
ТЗСч.КолСчетов = 1;
            КонецЕсли;
        КонецЦикла;
        ы=1;
        ы=2
    КонецЦикла;
- та-же ситуация, синтаксис не нарушен
правда, не знаю, как себя поведет код при исполнении, но уже лень :)
11 Ненавижу 1С
 
гуру
04.09.13
13:59
(10) это и есть "линейная последовательность операторов"
12 aka AMIGO
 
04.09.13
14:00
(11) да, тоска-с-запятой не требуется :)
13 Chum
 
04.09.13
14:03
";" - отделяет операторы если чё
14 Odavid
 
04.09.13
14:06
(7) ну да, ты прав.
15 Odavid
 
04.09.13
14:08
Тогда если с дургой стороны подойти - если интерпретатор воспринимает весь код линейно, как единую строку, в нынешнем состоянии бессмысленно требовать нумерацию строк - так же, как и программное изменение кода.
Т.о., получается, что без полной переписки всей платформы - в 1С такое невозможно.
16 Odavid
 
04.09.13
14:09
* "невозможно никогда"
17 Maxus43
 
04.09.13
14:11
зачем тебе нумерация строк? всмысле что под этим понимаешь? нумерация есть.
А программное изменение кода - и слава тебе йайца что нет и не будет
18 Odavid
 
04.09.13
14:12
нумерация строк кода? где и когда?
19 Odavid
 
04.09.13
14:14
(17)>>А программное изменение кода
да, именно программное. Тогда про "а что там в типовом коде" можно вообще не задумываться.
20 aka AMIGO
 
04.09.13
14:16
нумерация в модулях

да и то она условна. Это нумерация строк, но не операторов.

Если и=1 Тогда и=2 Иначе и=3 КонецЕсли;
это одна строка :)
интерпретатор сработает, как надо :)
21 aka AMIGO
 
04.09.13
14:16
+20 а не 5 :)
22 Кай066
 
04.09.13
14:17
Потому что в большинстве языков программирования точка с запятой используется для разделения инструкций, а не для обозначения конца строки

вот например

a {color:#56c4cf; outline:none; text-decoration:underline}
23 Maxus43
 
04.09.13
14:17
(18) например когда ошибку вываливает - указывает номер строки в модуле, в котором она возникла. Какая ещё нумерация нужна? я не пойму никак
24 Ненавижу 1С
 
гуру
04.09.13
14:20
(22) некорректно подсовывать пример из декларативного языка, когда говорим о процедурных
25 Lama12
 
04.09.13
14:22
(0)В ЖКК написано почему.
26 Lama12
 
04.09.13
14:26
(0) Кстати, утверждение не верно.

Выдержка из справки.

Операторы имеют вид стандартного обращения к процедуре, за исключением оператора присваивания (А = В;) и синтаксических конструкций встроенного языка (например, таких как Для, Пока, Если). Между собой операторы обязательно следует разделять символом ";" (точкой с запятой). Конец строки не является признаком конца оператора, т.е. операторы могут свободно переходить через строки и продолжаться на другой строке. Можно располагать произвольное число операторов в одной строке, разделяя их символом ";".
27 Odavid
 
04.09.13
14:26
(23)>> указывает номер строки в модуле
это номер строки из конфы, т.е. из "текста".
Компилируется и исполняется как единое целое, поэтому и невозможно программное вмешательство в код - 1С "не видит" кусков кода, пока не закончится вся "строка кода" (например, конец модуля).
Кстати, это же сказывается на множестве ошибок типа мутабельных или "в транзакции ранее происходили ошибки". Т.е. компилятор даже не знает, где произошла ошибка - пока не выполнит всю "строку" программы.
28 oslokot
 
04.09.13
14:28
(0) давно бы пора среде разработки самой научиться ставить ";"
устал уже
29 Maxus43
 
04.09.13
14:28
(27) она не сплошной строкой идёт, об этом и на партнёрке писали даже, между строками в конфе, разделённых ; выполняются сервисные платформенные механизмы, например при отладке. Если бы платформа не знала где она - как отладка то работает?
30 Lama12
 
04.09.13
14:28
(28) Не всегда однозначно можно определить где ее ставить.
31 Odavid
 
04.09.13
14:29
(26)>>Конец строки не является признаком конца оператора
не путайте текстовый вид программы и как его видит платформа.
Для платформы - важны ";", т.к. она "видит" все единой строкой.
Поэтому и не важны "строки" в тексте модуля - их при компиляции просто нет.
32 Odavid
 
04.09.13
14:29
(3) да ну?!
а вот синтаксис-контроль определяет сразу.
33 Lama12
 
04.09.13
14:29
(31) Это точно к (26)?
34 ДенисЧ
 
04.09.13
14:30
(31) продолжаешь позориться...
нуну
35 Lama12
 
04.09.13
14:30
(32) А ты прочитай что синтаксис контроль пишет :)
36 Ненавижу 1С
 
гуру
04.09.13
14:32
(31) это твои фантазии
37 oslokot
 
04.09.13
14:32
(30) согласен. Просто пусть это будет полем для творчества разработчиков платформы )
38 Odavid
 
04.09.13
14:33
(29) >>как отладка то работает?
параллельно.
Иначе бы можно было, как в нормальной системе, исправить код, и никаких "выйдите, пожалуйста, из прогроаммы!".
(29) на партрнерке ничего не скажут существенного по внутренним механизмам - либо не знают, либо омерта молчания.
(26) аналогично - в справке 1С даже не пишут справочных данных зачастую.
(33) да
39 Ненавижу 1С
 
гуру
04.09.13
14:34
>>Иначе бы можно было, как в нормальной системе, исправить код, и никаких "выйдите, пожалуйста, из прогроаммы!"

не видел еще компиляторов, которые могли бы вносить изменения в уже запущенный debug-процесс
40 Odavid
 
04.09.13
14:35
(35) что либо два оператора слились, либо "не поставлен ;"
Что, больше никто не читает, разве?
41 Lama12
 
04.09.13
14:37
(38) В (26) Выдержка из справки. Раздел "Формат операторов". И ка ни странно, система работает именно так.
(31) В 1С строки при компиляции есть. Уже много раз обсуждалось.
(40)Ожидается символ ';'. Ожидается - это значит, что не совсем уверен что он тут должен быть.  Иначе бы написали - требуется.
42 Odavid
 
04.09.13
14:38
(39) это от работы ОС зависит, а не от компиляторов.
Ты ж не на базе "верхом" сидишь, когда в 1С, не механизмы базы пользуешь напрямую - а блокиреутся база.
43 Odavid
 
04.09.13
14:39
(41)>>Ожидается - это значит, что не совсем уверен что он тут должен быть
при вооде кода нет даже этого.
Вопрос был именно об этом в 28.
44 Ненавижу 1С
 
гуру
04.09.13
14:39
(42) по-моему у тебя все смешалось в голове
45 Odavid
 
04.09.13
14:39
*вводе
46 Odavid
 
04.09.13
14:39
(42)ну-ну
а как видишь ты?
47 Ненавижу 1С
 
гуру
04.09.13
14:41
(46) ты стал говорить сам с собой?
48 Живой Ископаемый
 
04.09.13
14:41
(0) потому что это не признак конца строки, и не признак конца оператора, а разделитель операторов. Все, конец дискуссии
49 Odavid
 
04.09.13
14:44
(47) 46 -> 44
50 Ненавижу 1С
 
гуру
04.09.13
14:44
(49) причем тут база?
51 Odavid
 
04.09.13
14:44
(48) >>не признак конца строки
о том и речь веду.
Остальные не согласны.
52 GROOVY
 
04.09.13
14:45
(42) Ты нас троллишь? Что за бред - зависимость среды разработки от ОС?!
53 Живой Ископаемый
 
04.09.13
14:46
(51) ничье частное мнение никак не может повлиять на реальность
54 Odavid
 
04.09.13
14:46
(50) вообще-то блокируется файл ОС.
А у нас - еще и 1С.
Соедини свое "не видел еще компиляторов, которые могли бы вносить изменения в уже запущенный debug-процесс" и выгоны пользоватеелй в 1С.
55 Odavid
 
04.09.13
14:48
(52) я не про зависимость.
Однако, если брать среду разработки и ОС - то она как раз и зависит от ОС.
56 Кирпич
 
04.09.13
14:49
у автора стаж 6 лет. значит он скорее всего уже неисправим. поржали и разошлись. имейте совесть.
57 Odavid
 
04.09.13
14:50
(52) я про то, что 1С вполне могла обновлять конфу без выгона пользователей.
Но тогда нужно все переписать и полностью изменить структуру типовых - на модульную.
58 sda553
 
04.09.13
14:50
Это тянется с Паскаля. Вообще конечно не правильно и не красиво.
59 Odavid
 
04.09.13
14:50
* переписать платформу
60 Ненавижу 1С
 
гуру
04.09.13
14:52
(57) интересно, а если у меня форма открыта, то какой должен исполнятся код после "обновления"?
61 Odavid
 
04.09.13
14:52
(58) Паскаль - это не комплекс "трехзвенная архитектура", а только ЯП.
62 Ненавижу 1С
 
гуру
04.09.13
14:53
(61) а это тут причем?
63 Odavid
 
04.09.13
14:53
(60) закрыв её, ты получаешь новый экземпляр при повторном открытии, а не старую "кальку" со своими данными. Подумай.
64 Odavid
 
04.09.13
14:53
(62) это к Паскалю.
65 Starhan
 
04.09.13
14:54
(57)>> я про то, что 1С вполне могла обновлять конфу без выгона пользователей.

а разве не так в случае просто с кодом?
66 Ненавижу 1С
 
гуру
04.09.13
14:55
(63) а если не закрыв?
а если в коде продумано использование именно одного экземпляра формы? То есть после закрытия форма не уничтожается в памяти?
67 GROOVY
 
04.09.13
14:55
(63) Про демоническое обновление слышал чтонить?
68 Starhan
 
04.09.13
14:55
(57)(65) а понял мысль, что бы пользователей не перезапускать
69 Ненавижу 1С
 
гуру
04.09.13
15:13
(67)(68) причем тут пользователи, динамическое обновление?
он говорит, что можно не перезапускать сеанс, находящийся под отладкой
70 fisher
 
04.09.13
15:20
(0) Этот и многие другие вопросы снимает прохождение учебного курса "Разработка компиляторов".
71 Кирпич
 
04.09.13
15:25
(70) нафиг учебные курсы. лучше на мисте погалдеть с индейками.
72 Odavid
 
04.09.13
16:09
(6(0 не путай. Тут и так много путанников.
Не под отладкой, а под 1С.
Это разные вещи.
Если 1С все впихнула "в отладку" - то до кучи вообще не хватает запустил конфигуратор базы - никто работать не может.
(68) все правильно понял. Только это не в интересах 1С.
73 Odavid
 
04.09.13
16:10
(67) это которое больше портит базу, чем обновляет?
74 Odavid
 
04.09.13
16:13
(67) если вы не пониматете, что у 1С есть все возможности сделать это - она сама все перевела на 1с-сервер и без вариантов замкнула на нем все процессы, так какого не сделать перезапуск пользователей на платформе, которую НИКТО не обновляет в момент обновления конфы?
Если Вы этого не понимаете - значит, не понимаете.
75 Enders
 
04.09.13
16:49
То есть, удалил я в конфе некоторые реквизиты, добавил новые(обязательные к заполнению), поставил какие-то проверки, обновил конфу.
А пользователь как сидел в старой форме дока, так и сидит, и пофик ему на мои изменения(пока он не выйдет из неё, заодно и из формы списка). Зашибись, чё.
Или я где-то не так понял?
76 Ёпрст
 
04.09.13
17:31
Опять какой-то поток сознания.
77 ДенисЧ
 
04.09.13
17:38
(76) Поток чего? Где ты там сознание нашёл?
78 Odavid
 
04.09.13
17:59
(67) именно что ДО реализовано на уровне "подмены кэша", а не как встроенная работающая часть всей системы.
79 Odavid
 
04.09.13
18:00
(75) >>А пользователь как сидел в старой форме дока, так и сидит
да ни че, вот и спорь с Чистовым.
Как раз и описал ДО.
80 Odavid
 
04.09.13
18:03
(76) два года - и вы уже плотно в общем потоке.
Как вренмя бежит.
(77) а вы и не выходили никогда.