|   |   | 
| 
 | v7: Глюк синтакс-контроля? | ☑ | ||
|---|---|---|---|---|
| 0
    
        andrewks 19.04.12✎ 23:44 | 
        //*******************************************
  Процедура Сформировать() СЗ=СоздатьОбъект("СписокЗначений"); СЗ.ДобавитьЗначение("1"); Знач1=СЗ.ПолучитьЗначение(Знач1); КонецПроцедуры кушает, молчит, выполняет | |||
| 1
    
        Попытка1С 19.04.12✎ 23:45 | 
        А на что должен ругаться..     | |||
| 2
    
        andrewks 19.04.12✎ 23:45 | 
        (1) Переменная Знач1 не определена     | |||
| 3
    
        Попытка1С 19.04.12✎ 23:47 | 
        Ну так Знач1=     | |||
| 4
    
        andrewks 19.04.12✎ 23:48 | 
        (3) и чо? нет её ещё при подстановке параметров в функцию     | |||
| 5
    
        Попытка1С 19.04.12✎ 23:49 | 
        (4) А как по твоему синтаксис контроль работает?     | |||
| 6
    
        andrewks 19.04.12✎ 23:50 | 
        (5) строится дерево разбора, потом дерево обходится     | |||
| 7
    
        Злопчинский 19.04.12✎ 23:50 | 
        ну так это запросто!
  конструкция а=а/0; - не вызывает исключения | |||
| 8
    
        ildary 19.04.12✎ 23:53 | 
        (2) Знач1 уже не просто определена, но и значение в нее положено -СЗ.ПолучитьЗначение(Знач1). Вот синтакс контроль и молчит.     | |||
| 9
    
        andrewks 19.04.12✎ 23:54 | 
        (8) чушь     | |||
| 10
    
        andrewks 19.04.12✎ 23:54 | 
        о, да тут дела даже хуже, чем я полагал
  А=А+1; Сообщить("<"+А+">"); молчит, выполняет, выдаёт пустоту | |||
| 11
    
        andrewks 19.04.12✎ 23:57 | 
        ТипЗначения(А) = 0
  вот, вот оно - Неопределено в 7-ке! осталось только NULL найти | |||
| 12
    
        andrewks 20.04.12✎ 00:01 | 
        вот самый простой способ получения Неопределено:
  Nothing=Nothing; Сообщить(ТипЗначенияСтр(Nothing)); Сообщить(ТипЗначения(Nothing)); Сообщить("<"+Nothing+">"); | |||
| 13
    
        Попытка1С 20.04.12✎ 00:02 | 
        Вот тебе делать нечего..     | |||
| 14
    
        andrewks 20.04.12✎ 00:03 | 
        (13) я ни при чём. случайно наткнулся     | |||
| 15
    
        zxcvb 20.04.12✎ 00:03 | 
        (13) Тихо ты... пусть еще пишет.     | |||
| 16
    
        Злопчинский 20.04.12✎ 00:06 | 
        (12) ты меня удивляешь...
  Назинг = ПолучитьПустоеЗначение(); | |||
| 17
    
        andrewalexk 20.04.12✎ 00:07 | 
        :) ...."она всех вечно удивляла такая уж она была"     | |||
| 18
    
        andrewks 20.04.12✎ 00:10 | 
        (16) ну вот... так неинтересно. куда как интересней получить что-то через недокументированную фичу     | |||
| 19
    
        dklushin 20.04.12✎ 00:10 | 
        топикстартеру респект, я уже начал думать, что не осталось таких людей, которые ещё делают новые открытия в 7.7)     | |||
| 20
    
        CepeLLlka 20.04.12✎ 00:21 | 
        (19) Новые? лол даже такой неопытный сала как я это знал.     | |||
| 21
    
        orefkov 20.04.12✎ 00:23 | 
        (19)
  Открытию сто лет в обед. http://infostart.ru/public/16943/ На 8ке кстати тоже работает: неттакой = неттакой; Это не глюк, а "by design". Парсер уже после "Имя =" заводит переменную "Имя", изначально пустую. | |||
| 22
    
        andrewalexk 20.04.12✎ 00:24 | 
        (0):) "спс кэп"     | |||
| 23
    
        CepeLLlka 20.04.12✎ 00:28 | 
        (21) Так я и говорю.. я в каком-то курсе читал про это или слушал..
  Ещё в одном курсе говорят что ";" ставится для разделения, то есть в процедуре после последнего выражения можно и не ставить ";" и всё будет ок.. | |||
| 24
    
        orefkov 20.04.12✎ 01:43 | 
        (23)
  Не только в процедуре после последнего выражения можно и не ставить ";". Запяточку можно не ставить перед любым закрывающим ключевым словом - Конец/Если/Цикла/Процедуры/Функции/Попытки Исключение, Иначе, ИначеЕсли, либо просто последний оператор в теле модуля. Вот как-то так. В 7ке и 8ке до определенной версии объявление переменной модуля/функции обязательно требовало наличия запяточки в конце объявления: Перем Тест; Даже если в модуле/процедуре кроме объявления переменных ничего не было, все равно надо было ее ставить. Однако документации это не соответствовало, и с некоторой версии 8ки (сейчас не помню точно с какой), в части переменных запяточка требуется только для разделения. | |||
| 25
    
        GROOVY 20.04.12✎ 01:57 | 
        (23) Вот я так обычно говорю новичкам которые стараются везде ";" поставить, особенно после КонецПроцедуры, что бы мозг включали :)     | |||
| 26
    
        Тихий омут 20.04.12✎ 05:42 | 
        может и давно известно, но мы только вчера впервые наткнулись - сообщить(+)     | |||
| 27
    
        andrewks 20.04.12✎ 08:15 | 
        (23) про разделитель операторов чётко написано в документации. про эту хрень там ни слова. поскольку после паскаля и си я был приучен довольно тщательно относиться к переменным, наткнулся на это только сейчас, совершенно случайно
  (21) спасибо за ссылку, значит, баян | |||
| 28
    
        spock 20.04.12✎ 08:26 | 
        (21)забавно же.     | |||
| 29
    
        orefkov 20.04.12✎ 08:47 | 
        (6)
  И скажу по секрету, в движке 1С дерево разбора не строится :) | |||
| 30
    
        andrewks 20.04.12✎ 08:55 | 
        (29) чё, тупо автоматом анализируется?     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |