|   |   | 
| 
 | Нужны ли в 1с хинты типов? | ☑ | ||
|---|---|---|---|---|
| 0
    
        ERWINS 05.10.16✎ 17:23 | 
        собственно нужно ли в 1с добавить возможность необязательного определения типа переменной
 функция СоеднитьСтроки(перваяСтрока:Строка, ВтораяСтрока:Строка):Строка возврат перваяСтрока+ВтораяСтрока; КонецФункции соответственно код СоеднитьСтроки(1,"") не скомпилируется! | |||
| 1
    
        Лефмихалыч 05.10.16✎ 17:25 | 
        что будет с кодом, если нужен составной тип из пяти справочников и трех документов?     | |||
| 2
    
        ERWINS 05.10.16✎ 17:29 | 
        просто не указываешь
 но если очень надо четко ограничить то перечисляешь все. | |||
| 3
    
        mehfk 05.10.16✎ 17:31 | 
        Если бы они были нужны, то их бы уже сделали.     | |||
| 4
    
        ERWINS 05.10.16✎ 17:35 | 
        (3) в питоне 3.0 сделали относительно недавно
 тут меня пугает мысль что 1с в 9.0(8.4?) сделает жесткую типизацию для обеспечения компиляции и соответственно выигрыша в скорости раз в 10 (на серверном коде) | |||
| 5
    
        craxx 05.10.16✎ 17:37 | 
        (4) вот как сделает - так и будем репу чесать.... а пока - не паримся     | |||
| 6
    
        orefkov 05.10.16✎ 17:39 | 
        (0)
 Было бы хорошо, я только за. К примеру TypeScript же не зря появился, крупные проекты на голом javascript уже стало невозможно писать. Заодно исчезли бы эти костыли для интеллисенса, в виде #Если клиент и не клиент таб = Новый Таблица; #КонецЕсли | |||
| 7
    
        Serginio1 05.10.16✎ 18:01 | 
        6+ Тот же Angular2 на TypeScript 
 https://vsavkin.com/writing-angular-2-in-typescript-1fa77c78d8e8#.5x65uatmh (4) В Питоне как и в TypeScript для Intellisense и контроля синтаксических ошибок | |||
| 8
    
        Serginio1 05.10.16✎ 18:07 | 
        (3) Они нужны. Очень ускоряют написание кода за счет Intellisense  и уберегает от ошибок
 В семерке Перем тз; //:ТаблицаЗначений часто используется | |||
| 9
    
        H A D G E H O G s 05.10.16✎ 18:07 | 
        (4) не будет выигрыша     | |||
| 10
    
        Serginio1 05.10.16✎ 18:24 | 
        (0) Я первым пунктом указал
 Кто что хочет от 1С | |||
| 11
    
        mehfk 05.10.16✎ 19:02 | 
        (8) В снегопате уже есть именно эта фича.
 Intellisense для параметров процедур/функций | |||
| 12
    
        mehfk 05.10.16✎ 19:04 | 
        Можно здесь хотелку для снегопата попросить: сделать пункт контекстного меню - "Типизировать переменную для Intellisense" с выбором возможных типов, который добавляет эту конструкцию?     | |||
| 13
    
        Злопчинский 05.10.16✎ 19:13 | 
        (0) современные пртги 2 и "2" не отличать Поэтому должно скомпилиться | |||
| 14
    
        Garykom гуру 05.10.16✎ 19:14 | 
        Типизацию добавить с "use strict" ? Зачем?     | |||
| 15
    
        Garykom гуру 05.10.16✎ 19:15 | 
        (14)+ Да еще и в паскаль/дельфи стайл почему то... Логичнее в VB стайл тогда     | |||
| 16
    
        Garykom гуру 05.10.16✎ 19:16 | 
 | |||
| 17
    
        Лефмихалыч 05.10.16✎ 19:31 | 
        Функция Печать(Ссылка как Документ.РеализацияТоваровУслуг) как ТабличныйДокумент Экспорт
 да ну накуй... | |||
| 18
    
        jsmith 05.10.16✎ 19:31 | 
        Паскаль детектед     | |||
| 19
    
        jsmith 05.10.16✎ 19:32 | 
        В (0) в смысле
 У вас-то бейсик | |||
| 20
    
        Лефмихалыч 05.10.16✎ 19:34 | 
        хотя, пуркуа бы и не па, собственно?.. В принципе нормально.
 Но тогда чур пусть все типы будут в единой иерархии и имеют одного общего предка. И чтобы структура с соответствием были где-то рядом с корнем. Чтобы осталась возможность подсовывать в фукцнии, обрабатывающие агрегатные объекты, структуру с соответствующими полями. | |||
| 21
    
        jsmith 05.10.16✎ 19:34 | 
        Тип.ТабличныйДокумент Печать(Тип.ДокументСсылкаРеализацияТоваровУслуг Ссылка)     | |||
| 22
    
        Лефмихалыч 05.10.16✎ 19:35 | 
        и от процедур наиух отказаться     | |||
| 23
    
        jsmith 05.10.16✎ 19:36 | 
        Во-во, процедуры зло     | |||
| 24
    
        jsmith 05.10.16✎ 19:36 | 
        Делегаты еще нужны     | |||
| 25
    
        orefkov 05.10.16✎ 19:36 | 
        (12)
 Попробую | |||
| 26
    
        Лефмихалыч 05.10.16✎ 19:37 | 
        и - это! Делегаты, да. Или хотя бы, чтобы можно было передать указатель на функцию     | |||
| 27
    
        Лефмихалыч 05.10.16✎ 19:38 | 
        +(26) как в js     | |||
| 28
    
        orefkov 05.10.16✎ 19:38 | 
        Вот кстати, работа Visual Studio Code c TypeScript'ом, к которому подключены описания типов от 1С, примерно на 1:05 явная типизация переменной.
 https://www.youtube.com/watch?v=vJnZPLe67Aw | |||
| 29
    
        Лефмихалыч 05.10.16✎ 19:38 | 
        да вообще - нах всё, пусть вместо языка 1С будет js     | |||
| 30
    
        Лефмихалыч 05.10.16✎ 19:38 | 
        +(29) и я всё прощу     | |||
| 31
    
        Serginio1 05.10.16✎ 19:41 | 
        (29) Лучше TypeScript     | |||
| 32
    
        Лефмихалыч 05.10.16✎ 19:42 | 
        (31) да пох, пусть TypeScript     | |||
| 33
    
        Garykom гуру 05.10.16✎ 19:49 | 
        Действительно пофих TypeScript|JavaScript ибо одно в другое штатно компилится     | |||
| 34
    
        Garykom гуру 05.10.16✎ 19:50 | 
        Но идея сделать фреймворк 1С в стиле фреймворка .Netи разрешить писать на любой языке из списка (причем конвертер из коробки между языками)...     | |||
| 35
    
        Garykom гуру 05.10.16✎ 19:51 | 
        (34)+ Общими будут только описание структуры метаданных/базы данных и формочек на xml/json     | |||
| 36
    
        quest 05.10.16✎ 19:51 | 
        (34) Для этого надо сделать виртуальную машину, без ошибок и со спецификацией. А для такого зоопарка языков внутри 1С - это уже сложно сделать.     | |||
| 37
    
        Лефмихалыч 05.10.16✎ 19:53 | 
        (34) не-не-не, дэвдблэйн! Пусть - как щас, но с js|ts и всё. Остальное все не надо, остальное все хорошее.     | |||
| 38
    
        Garykom гуру 05.10.16✎ 19:54 | 
        (36) Ну MS то сделал для зоопарка языков (C#, VB.Net, J# etc) под CLR     | |||
| 39
    
        Garykom гуру 05.10.16✎ 19:55 | 
        (37) Так оно и будет как счас в виде конфигуратора, просто если хочешь то можешь конфигуририть прямо в текстовых файликах     | |||
| 40
    
        quest 05.10.16✎ 19:55 | 
        (37) открой для себя унпак - конфигури в текстовых файликах     | |||
| 41
    
        quest 05.10.16✎ 19:56 | 
        (38) так сперва сделали виртуальную машину. А потом на них языки натянули. С 1С - ситуация обратная.     | |||
| 42
    
        Garykom гуру 05.10.16✎ 20:00 | 
        (41) да там переписывать просто доуя ))     | |||
| 43
    
        Garykom гуру 05.10.16✎ 20:02 | 
        (40) да в курсе, но проблема что сначала приходится назад собирать в конфу и только потом на запуск/отладку
 вот было бы как в nodejs где оно сразу | |||
| 44
    
        Serginio1 05.10.16✎ 20:04 | 
        (35) Неее. TypeScript в JavaScript, а вот обратно нет.
 Вернее можно, но все типы будут any. Ну и интерфейсы и прочая лабуда в JavaScript отсутствует. Хотя нужно смотреть новые версии | |||
| 45
    
        Лефмихалыч 05.10.16✎ 20:24 | 
        (40) куета это на палке. Ту же ерп туда-сюда собирать-разбирать устанешь. Игрушки это, в общем, всё, унпаки эти, для маленьких конфигураций.     | |||
| 46
    
        ERWINS 05.10.16✎ 21:01 | 
        Делегаты это вообще кошмар нета.....
 того, кто их придумал надо .... (плохое сделать) лучше функции высших порядков | |||
| 47
    
        Torquader 05.10.16✎ 21:11 | 
        Добавление определения типа позволяет избежать ошибок на стадии написания кода, когда вместо одного значения в функцию передаётся другое.
 Конечно, если писать префикс типа в имени переменной, то никакого определения типа не нужно. Просто, описание составного типа через {Тип1,Тип2} будет выглядеть не очень удобно из-за того, что типы в 1С очень длинные. Лучше бы сделали определение дочерних типов, чтобы можно было задать числовой тип, скажем, Цена и везде его использовать, а когда нужно будет поменять разрядность, просто поменять в определении типа. | |||
| 48
    
        jsmith 05.10.16✎ 21:14 | 
        Не знаю. Мне импонирует отсутствие статического контроля. Насчет делегатов и функций высших порядков - бодяга одного разлива. Джиэс крут.     | |||
| 49
    
        jsmith 05.10.16✎ 21:15 | 
        Кому нравится ригидность и контроль - тайпскрипт, для адептов самодисциплины - джиэс.     | |||
| 50
    
        Лефмихалыч 05.10.16✎ 21:20 | 
        (49) плюсану. Ситуаций, когда вместо нужного типа передается ненужный, лично у меня по пальцам пересчитать.
 А вот об отсутствии возможности внутрь цикла по обработке чего-нибудь передать вместе с объектом для обработки еще и указатель на функцию, которой надо этот объект обработать, - день через день скучаю. И плачу кровью, когда приходится писать ЕслиТоИначеЕслиТоБлятьИначеГоспадиЁбтвоюМать | |||
| 51
    
        Torquader 05.10.16✎ 21:32 | 
        (50) Полностью поддерживаю, если в языке нет указателя на функцию, это очень и очень плохой язык.
 Слава богу в восьмёрке Выполнить появилось. | |||
| 52
    
        ERWINS 05.10.16✎ 21:35 | 
        (51) Выполнить медленно!     | |||
| 53
    
        Torquader 05.10.16✎ 21:44 | 
        (52) Ну, естественно, сначала компилляется, а потом исполняется, но, вся конвертация на нём написана.
 P.S. а ещё очень хочется функция с переменным числом параметров, чтоб не пихать их в массив перед функцией. | |||
| 54
    
        ERWINS 05.10.16✎ 21:50 | 
        (53) тогда именованные картежи (если имена не указаны, то обращение как к массиву)
 a={1,2,3,4} мояфункция(а) эквивалентно мояфункция(1,2,3,4) а вообще для этого есть фиксированные структуры. | |||
| 55
    
        Garykom гуру 05.10.16✎ 21:52 | 
        (53) Ааа тоже понял прелести js ))     | |||
| 56
    
        Torquader 05.10.16✎ 21:55 | 
        (55) Я на нём писал, ещё когда восьмёрки не было, и "переменное число параметров" это единственное, что в нём хорошего - по всему остальному - это очень грустно.     | |||
| 57
    
        Garykom гуру 05.10.16✎ 21:57 | 
        (56) Ну JS тоже развивается и сейчас это совсем не те скрипты что были когда то.     | |||
| 58
    
        ERWINS 05.10.16✎ 21:58 | 
        (56) я на 1с писал когда еще 8 не было, 1с унылое гуано (для некоторых разъяснение - это ирония)     | |||
| 59
    
        ERWINS 05.10.16✎ 21:59 | 
        посмотрите с++ 17 по удобству он сильно догнал встроенный язык 1с.     | |||
| 60
    
        Serginio1 05.10.16✎ 22:23 | 
        (47) Можно добавлять синонимы.
 (53) Это и в C? params есть. В 1С можно использовать параметры по умолчанию (57) Но типизацию пока не вводят. TypeScript компилируется в JS нужной версии. Но на самом деле WebAssembly https://habrahabr.ru/company/infopulse/blog/304362/ Может вытеснить JS | |||
| 61
    
        impulse9 06.10.16✎ 05:44 | 
        (47) "Лучше бы сделали определение дочерних типов, чтобы можно было задать числовой тип, скажем, Цена и везде его использовать, а когда нужно будет поменять разрядность, просто поменять в определении типа."
 Так есть же. Определяемые типы. | |||
| 62
    
        VladZ 06.10.16✎ 06:31 | 
        (0) Не вижу смысла     | |||
| 63
    
        orefkov 06.10.16✎ 09:16 | 
        (50)
 Это пока работаешь один над не очень большим проектом. А когда проект большой, да несколько разрабов разного уровня - проще как-раз типизировать. | |||
| 64
    
        romix 06.10.16✎ 09:19 | 
        (0) Если Ложь Тогда док=Документы.ПриходнаяНакладная.ПустаяСсылка; КонецЕсли
 Все хинты после этого начинают работать... | |||
| 65
    
        Лефмихалыч 06.10.16✎ 09:19 | 
        (63) если у тебя на 1С большой проект на несколько разрабов, то проще у тебя уже не будетт. Всё твое проще уже было...     | |||
| 66
    
        orefkov 06.10.16✎ 09:27 | 
        (65)
 Ну, в-принципе соглашусь, в том ключе, что добавлять в 1с ТОЛЬКО одну типизацию, не добавляя остальных плюшек (хотя бы интерфейсов, наследования и виртуальных методов) - мало что даст. Как говорится, "к полумерам не привык". | |||
| 67
    
        Jokero 06.10.16✎ 09:36 | 
        занафейкуя?
 Функция СоеднитьСтроки(перваяСтрока, ВтораяСтрока) возврат ""+перваяСтрока+ВтораяСтрока; КонецФункции Ни? | |||
| 68
    
        TormozIT гуру 06.10.16✎ 09:38 | 
        Начать можно с самого полезного - опциональная типизация при передаче параметров.
 Например РассчитатьСумму(ВалютаНовая, Сумма:Число, ВалютаСтарая) Т.е. для железно известных типов мы их указываем и интерпретатор и синтакс-контроль выдают ошибки проверки типа в этом. | |||
| 69
    
        romix 06.10.16✎ 09:47 | 
        (68) Можно наоборот указывать плавающие типы переменных (по-моему два или более типа, которые в принципе может принимать переменная - это большая редкость).
 Например, когда сначала присваивается строка, потом число, а потом ссылка. Такого же почти не бывает? | |||
| 70
    
        Serginio1 06.10.16✎ 09:48 | 
        (67) Угу. При этом если перваяСтрока будет не строка, то получим строковое представление, что иногда не соответствует ожиданию.
 Интерес же больше представляет классы КлонироватьТз(ТзОриг:ТаблицаЗначений): ТаблицаЗначений Ты сразу получаешь Intellisense и синтаксическую проверку методов итд. Это значительно ускоряет написание кода и отладки за счет синтаксической проверки. | |||
| 71
    
        romix 06.10.16✎ 09:50 | 
        (70)
 Если Ложь Тогда тзОриг = Новый ТаблицаЗначений; КонецЕсли; После этого набор тзОриг и точки выводит все контекстные подсказки именно по таблицам значений. | |||
| 72
    
        romix 06.10.16✎ 09:53 | 
        На месте 1С я бы ввел ключевое слово Типизация:
 Типизация тзОриг ТаблицаЗначений; С этой же целью... А то "Если Ложь" выгладит как-то неаккуратно. | |||
| 73
    
        YFedor 06.10.16✎ 09:58 | 
        Лучше бы преобразование типов как в семерке сделали (хотя бы опционально)     | |||
| 74
    
        Serginio1 06.10.16✎ 09:59 | 
        (71) Это понятно, но все это через одно место.
 Типизация в методе лучше КлонироватьТз(ТзОриг:ТаблицаЗначений): ТаблицаЗначений Так же можно и типизацию вводить тз:ТаблицаЗначений=ВызватьНетипизированнуюФункцию(); Все придумано давно | |||
| 75
    
        Serginio1 06.10.16✎ 10:00 | 
        Или
 Тз=ТаблицаЗначений(ВызватьНетипизированнуюФункцию()); | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |