Имя: Пароль:
1C
 
Нужны ли в 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
Или
Тз=ТаблицаЗначений(ВызватьНетипизированнуюФункцию());