Вход | Регистрация



Нужны ли в 1с хинты типов?

Нужны ли в 1с хинты типов?
Я
   ERWINS
 
05.10.16 - 17:23
собственно нужно ли в 1с добавить возможность необязательного определения типа переменной
функция СоеднитьСтроки(перваяСтрока:Строка, ВтораяСтрока:Строка):Строка
возврат перваяСтрока+ВтораяСтрока;
КонецФункции

соответственно код СоеднитьСтроки(1,"") не скомпилируется!
 
 
   Лефмихалыч
 
1 - 05.10.16 - 17:25
что будет с кодом, если нужен составной тип из пяти справочников и трех документов?
   ERWINS
 
2 - 05.10.16 - 17:29
просто не указываешь

но если очень надо четко ограничить то перечисляешь все.
   mehfk
 
3 - 05.10.16 - 17:31
Если бы они были нужны, то их бы уже сделали.
   ERWINS
 
4 - 05.10.16 - 17:35
(3) в питоне 3.0 сделали относительно недавно

тут меня пугает мысль что 1с в 9.0(8.4?) сделает жесткую типизацию для обеспечения компиляции и соответственно выигрыша в скорости раз в 10 (на серверном коде)
   craxx
 
5 - 05.10.16 - 17:37
(4) вот как сделает - так и будем репу чесать.... а пока - не паримся
   orefkov
 
6 - 05.10.16 - 17:39
(0)
Было бы хорошо, я только за. К примеру TypeScript же не зря появился, крупные проекты на голом javascript уже стало невозможно писать.
Заодно исчезли бы эти костыли для интеллисенса, в виде
#Если клиент и не клиент

   таб = Новый Таблица;
#КонецЕсли
   Serginio1
 
7 - 05.10.16 - 18:01
6+ Тот же Angular2 на TypeScript 
https://vsavkin.com/writing-angular-2-in-typescript-1fa77c78d8e8#.5x65uatmh

(4) В Питоне как и в TypeScript для Intellisense и контроля синтаксических ошибок
   Serginio1
 
8 - 05.10.16 - 18:07
(3) Они нужны. Очень ускоряют написание кода за счет Intellisense  и уберегает от ошибок

 В семерке 
Перем тз;//:ТаблицаЗначений



часто используется
   H A D G E H O G s
 
9 - 05.10.16 - 18:07
(4) не будет выигрыша
   Serginio1
 
10 - 05.10.16 - 18:24
(0) Я первым пунктом указал
Кто что хочет от 1С
 
 Рекламное место пустует
   mehfk
 
11 - 05.10.16 - 19:02
(8) В снегопате уже есть именно эта фича.
Intellisense для параметров процедур/функций
   mehfk
 
12 - 05.10.16 - 19:04
Можно здесь хотелку для снегопата попросить: сделать пункт контекстного меню - "Типизировать переменную для Intellisense" с выбором возможных типов, который добавляет эту конструкцию?
   Злопчинский
 
13 - 05.10.16 - 19:13
(0) современные пртги 2 и "2" не отличать
Поэтому должно скомпилиться
   Garykom
 
14 - 05.10.16 - 19:14
Типизацию добавить с "use strict" ? Зачем?
   Garykom
 
15 - 05.10.16 - 19:15
(14)+ Да еще и в паскаль/дельфи стайл почему то... Логичнее в VB стайл тогда
   Garykom
 
16 - 05.10.16 - 19:16
функция СоеднитьСтроки(перваяСтрока как Строка, ВтораяСтрока как Строка) как Строка
   возврат перваяСтрока+ВтораяСтрока;
КонецФункции

   Лефмихалыч
 
17 - 05.10.16 - 19:31
Функция Печать(Ссылка как Документ.РеализацияТоваровУслуг) как ТабличныйДокумент Экспорт




да ну накуй...
   jsmith
 
18 - 05.10.16 - 19:31
Паскаль детектед
   jsmith
 
19 - 05.10.16 - 19:32
В (0) в смысле
У вас-то бейсик
   Лефмихалыч
 
20 - 05.10.16 - 19:34
хотя, пуркуа бы и не па, собственно?.. В принципе нормально.

Но тогда чур пусть все типы будут в единой иерархии и имеют одного общего предка. И чтобы структура с соответствием были где-то рядом с корнем. Чтобы осталась возможность подсовывать в фукцнии, обрабатывающие агрегатные объекты, структуру с соответствующими полями.
   jsmith
 
21 - 05.10.16 - 19:34
Тип.ТабличныйДокумент Печать(Тип.ДокументСсылкаРеализацияТоваровУслуг Ссылка)
   Лефмихалыч
 
22 - 05.10.16 - 19:35
и от процедур наиух отказаться
   jsmith
 
23 - 05.10.16 - 19:36
Во-во, процедуры зло
   jsmith
 
24 - 05.10.16 - 19:36
Делегаты еще нужны
   orefkov
 
25 - 05.10.16 - 19:36
(12)
Попробую
   Лефмихалыч
 
26 - 05.10.16 - 19:37
и - это! Делегаты, да. Или хотя бы, чтобы можно было передать указатель на функцию
   Лефмихалыч
 
27 - 05.10.16 - 19:38
+(26) как в js
   orefkov
 
28 - 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) и я всё прощу
   Serginio1
 
31 - 05.10.16 - 19:41
(29) Лучше TypeScript
   Лефмихалыч
 
32 - 05.10.16 - 19:42
(31) да пох, пусть TypeScript
   Garykom
 
33 - 05.10.16 - 19:49
Действительно пофих TypeScript|JavaScript ибо одно в другое штатно компилится
 
 
   Garykom
 
34 - 05.10.16 - 19:50
Но идея сделать фреймворк 1С в стиле фреймворка .Netи разрешить писать на любой языке из списка (причем конвертер из коробки между языками)...
   Garykom
 
35 - 05.10.16 - 19:51
(34)+ Общими будут только описание структуры метаданных/базы данных и формочек на xml/json
   quest
 
36 - 05.10.16 - 19:51
(34) Для этого надо сделать виртуальную машину, без ошибок и со спецификацией. А для такого зоопарка языков внутри 1С - это уже сложно сделать.
   Лефмихалыч
 
37 - 05.10.16 - 19:53
(34) не-не-не, дэвдблэйн! Пусть - как щас, но с js|ts и всё. Остальное все не надо, остальное все хорошее.
   Garykom
 
38 - 05.10.16 - 19:54
(36) Ну MS то сделал для зоопарка языков (C#, VB.Net, J# etc) под CLR
   Garykom
 
39 - 05.10.16 - 19:55
(37) Так оно и будет как счас в виде конфигуратора, просто если хочешь то можешь конфигуририть прямо в текстовых файликах
   quest
 
40 - 05.10.16 - 19:55
(37) открой для себя унпак - конфигури в текстовых файликах
   quest
 
41 - 05.10.16 - 19:56
(38) так сперва сделали виртуальную машину. А потом на них языки натянули. С 1С - ситуация обратная.
   Garykom
 
42 - 05.10.16 - 20:00
(41) да там переписывать просто доуя ))
   Garykom
 
43 - 05.10.16 - 20:02
(40) да в курсе, но проблема что сначала приходится назад собирать в конфу и только потом на запуск/отладку

вот было бы как в nodejs где оно сразу
   Serginio1
 
44 - 05.10.16 - 20:04
(35) Неее. TypeScript в JavaScript, а вот обратно нет.
Вернее можно, но все типы будут any. Ну и интерфейсы и прочая лабуда в JavaScript отсутствует. Хотя нужно смотреть новые версии
   Лефмихалыч
 
45 - 05.10.16 - 20:24
(40) куета это на палке. Ту же ерп туда-сюда собирать-разбирать устанешь. Игрушки это, в общем, всё, унпаки эти, для маленьких конфигураций.
   ERWINS
 
46 - 05.10.16 - 21:01
Делегаты это вообще кошмар нета.....
того, кто их придумал надо .... (плохое сделать)
лучше функции высших порядков
   Torquader
 
47 - 05.10.16 - 21:11
Добавление определения типа позволяет избежать ошибок на стадии написания кода, когда вместо одного значения в функцию передаётся другое.
Конечно, если писать префикс типа в имени переменной, то никакого определения типа не нужно.
Просто, описание составного типа через {Тип1,Тип2} будет выглядеть не очень удобно из-за того, что типы в 1С очень длинные.

Лучше бы сделали определение дочерних типов, чтобы можно было задать числовой тип, скажем, Цена и везде его использовать, а когда нужно будет поменять разрядность, просто поменять в определении типа.
   jsmith
 
48 - 05.10.16 - 21:14
Не знаю. Мне импонирует отсутствие статического контроля. Насчет делегатов и функций высших порядков - бодяга одного разлива. Джиэс крут.
   jsmith
 
49 - 05.10.16 - 21:15
Кому нравится ригидность и контроль - тайпскрипт, для адептов самодисциплины - джиэс.
 
 Рекламное место пустует
   Лефмихалыч
 
50 - 05.10.16 - 21:20
(49) плюсану. Ситуаций, когда вместо нужного типа передается ненужный, лично у меня по пальцам пересчитать.
А вот об отсутствии возможности внутрь цикла по обработке чего-нибудь передать вместе с объектом для обработки еще и  указатель на функцию, которой надо этот объект обработать,  - день через день скучаю. И плачу кровью, когда приходится писать ЕслиТоИначеЕслиТоБлятьИначеГоспадиЁбтвоюМать
   Torquader
 
51 - 05.10.16 - 21:32
(50) Полностью поддерживаю, если в языке нет указателя на функцию, это очень и очень плохой язык.
Слава богу в восьмёрке Выполнить появилось.
   ERWINS
 
52 - 05.10.16 - 21:35
(51) Выполнить медленно!
   Torquader
 
53 - 05.10.16 - 21:44
(52) Ну, естественно, сначала компилляется, а потом исполняется, но, вся конвертация на нём написана.

P.S. а ещё очень хочется функция с переменным числом параметров, чтоб не пихать их в массив перед функцией.
   ERWINS
 
54 - 05.10.16 - 21:50
(53) тогда именованные картежи (если имена не указаны, то обращение как к массиву)
a={1,2,3,4}

мояфункция(а) эквивалентно мояфункция(1,2,3,4)
а вообще для этого есть фиксированные структуры.
   Garykom
 
55 - 05.10.16 - 21:52
(53) Ааа тоже понял прелести js ))
   Torquader
 
56 - 05.10.16 - 21:55
(55) Я на нём писал, ещё когда восьмёрки не было, и "переменное число параметров" это единственное, что в нём хорошего - по всему остальному - это очень грустно.
   Garykom
 
57 - 05.10.16 - 21:57
(56) Ну JS тоже развивается и сейчас это совсем не те скрипты что были когда то.
   ERWINS
 
58 - 05.10.16 - 21:58
(56) я на 1с писал когда еще 8 не было, 1с унылое гуано (для некоторых разъяснение - это ирония)
   ERWINS
 
59 - 05.10.16 - 21:59
посмотрите с++ 17 по удобству он сильно догнал встроенный язык 1с.
   Serginio1
 
60 - 05.10.16 - 22:23
(47) Можно добавлять синонимы.
(53) Это и в C? params есть.
В 1С можно использовать параметры по умолчанию
(57) Но типизацию пока не вводят. TypeScript компилируется  в JS нужной версии.
Но на самом деле WebAssembly
https://habrahabr.ru/company/infopulse/blog/304362/

Может вытеснить JS
   impulse9
 
61 - 06.10.16 - 05:44
(47) "Лучше бы сделали определение дочерних типов, чтобы можно было задать числовой тип, скажем, Цена и везде его использовать, а когда нужно будет поменять разрядность, просто поменять в определении типа."
Так есть же. Определяемые типы.
   VladZ
 
62 - 06.10.16 - 06:31
(0) Не вижу смысла
   orefkov
 
63 - 06.10.16 - 09:16
(50)
Это пока работаешь один над не очень большим проектом. А когда проект большой, да несколько разрабов разного уровня - проще как-раз типизировать.
   romix
 
64 - 06.10.16 - 09:19
(0) Если Ложь Тогда док=Документы.ПриходнаяНакладная.ПустаяСсылка; КонецЕсли

Все хинты после этого начинают работать...
   Лефмихалыч
 
65 - 06.10.16 - 09:19
(63) если у тебя на 1С большой проект на несколько разрабов, то проще у тебя уже не будетт. Всё твое проще уже было...
   orefkov
 
66 - 06.10.16 - 09:27
(65)
Ну, в-принципе соглашусь, в том ключе, что добавлять в 1с ТОЛЬКО одну типизацию, не добавляя остальных плюшек (хотя бы интерфейсов, наследования и виртуальных методов) - мало что даст. Как говорится, "к полумерам не привык".
   Jokero
 
67 - 06.10.16 - 09:36
занафейкуя?

Функция СоеднитьСтроки(перваяСтрока, ВтораяСтрока)
  возврат ""+перваяСтрока+ВтораяСтрока;
КонецФункции

Ни?
   TormozIT
 
68 - 06.10.16 - 09:38
Начать можно с самого полезного - опциональная типизация при передаче параметров.

Например
РассчитатьСумму(ВалютаНовая, Сумма:Число, ВалютаСтарая)
Т.е. для железно известных типов мы их указываем и интерпретатор и синтакс-контроль выдают ошибки проверки типа в этом.
   romix
 
69 - 06.10.16 - 09:47
(68) Можно наоборот указывать плавающие типы переменных (по-моему два или более типа, которые в принципе может принимать переменная - это большая редкость).

Например, когда сначала присваивается строка, потом число, а потом ссылка. Такого же почти не бывает?
   Serginio1
 
70 - 06.10.16 - 09:48
(67) Угу. При этом если перваяСтрока будет не строка, то получим строковое представление, что иногда не соответствует ожиданию.

 Интерес же больше представляет классы

 КлонироватьТз(ТзОриг:ТаблицаЗначений): ТаблицаЗначений

Ты сразу получаешь Intellisense  и синтаксическую проверку методов итд.
  Это значительно ускоряет написание кода и отладки за счет синтаксической проверки.
   romix
 
71 - 06.10.16 - 09:50
(70)

Если Ложь Тогда тзОриг = Новый ТаблицаЗначений; КонецЕсли;

После этого набор тзОриг и точки выводит все контекстные подсказки именно по таблицам значений.
   romix
 
72 - 06.10.16 - 09:53
На месте 1С я бы ввел ключевое слово Типизация:

Типизация тзОриг ТаблицаЗначений;

С этой же целью... А то "Если Ложь" выгладит как-то неаккуратно.
   YFedor
 
73 - 06.10.16 - 09:58
Лучше бы преобразование типов как в семерке сделали (хотя бы опционально)
   Serginio1
 
74 - 06.10.16 - 09:59
(71) Это понятно, но все это через одно место.

Типизация в методе лучше
КлонироватьТз(ТзОриг:ТаблицаЗначений): ТаблицаЗначений 


 Так же можно и типизацию вводить

тз:ТаблицаЗначений=ВызватьНетипизированнуюФункцию();


Все придумано давно
   Serginio1
 
75 - 06.10.16 - 10:00
Или
Тз=ТаблицаЗначений(ВызватьНетипизированнуюФункцию());


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует