![]() |
|
Внутренний язык программирования 1С 8.3 | ☑ | ||||||
---|---|---|---|---|---|---|---|---|
0
golem14
19.07.16
✎
08:44
|
Внутренний язык программирования 1С 8.3. Если посмотреть на него с позиции современных языков, он действительно так плох как его ругают некоторые, или это всё-таки от незнания.
|
|||||||
377
vhl
20.07.16
✎
16:14
|
(373) вообще то любой может принять участие в разработке: http://openjdk.java.net/contribute
|
|||||||
378
Gary417
20.07.16
✎
16:17
|
(377) может, мне интересно сколько лет займёт внедрение нового модуля в яву который я напишу?
|
|||||||
379
b_ru
20.07.16
✎
16:17
|
(376) Основная идея ООП в том, что никаких проверок Если ( ТипЗначения(Элемент)= *** ) быть не должно. Я в цикле зову метод, а уж сами объекты знают как этот метод у них исполняется.
Инкапсуляция + наследование + Интерфейсы |
|||||||
380
vhl
20.07.16
✎
16:17
|
(374) Ну документ - объект. Он и в 1С объект. Зачем тебе для этого классы и наследование?
Т.е. единственная проблема - передача параметров? А разве тебе в наследуемом классе не придется то же самое делать через super(params...) - такое же копирование. В чем выгода? |
|||||||
381
Serginio1
20.07.16
✎
16:19
|
374 + Мало того например объекты на сервере могут хранить срстояние между вызовами с клиента в том числе мутабельных значений. В asp.Net можно данные привязывать к сессии.
|
|||||||
382
b_ru
20.07.16
✎
16:19
|
(381) У нас же stateless сервер, так что не могут.
|
|||||||
383
vhl
20.07.16
✎
16:21
|
(378) Ну ты сначала жаловался что не можешь участвовать. Теперь жалуешься что долго. А если бы было быстро - то жаловался бы что слишком быстро меняется. Не угодишь...
|
|||||||
384
vhl
20.07.16
✎
16:22
|
(381) Параметры сеанса для этого есть
|
|||||||
385
orefkov
20.07.16
✎
16:22
|
(363)
В 1С боле-менее приличный инеллисенс для языка с динамической типизацией. Большинство ИДЕ для javascript даже так не могут, и подсказки если и вываливают, то практически наугад, сливая тому же typescript'у чуть менее, чем полностью. |
|||||||
386
Serginio1
20.07.16
✎
16:23
|
(380) Тебе этого мало? Это не только передача параметров, но и IntelliSense.
Про хранение состояния между вызовами уже писал. Наследование это другая песня. Она тоже имеет смысл. Например сделал отчет определил реализацию определенных методов, а в наследниках только добавляю новые методы или переопределяю методы родителя. Сейчас для обеспечения утинной типизации я должен в каждом отчете писать одни и теже методы. |
|||||||
387
Serginio1
20.07.16
✎
16:24
|
(365) А как же Typescript?
|
|||||||
388
vhl
20.07.16
✎
16:24
|
(375) ну модифицируешь ты структуру, чем это плохо? Чем бы ООП тебе помог?
|
|||||||
389
b_ru
20.07.16
✎
16:24
|
(385) Нарываешься на комплимент и рекламу снегопата? :)
Если бы в 1С был приличный интеллисенс, зачем он был бы нужен? |
|||||||
390
Mr_Rm
20.07.16
✎
16:25
|
(379) Инкапсуляция + наследование + полиморфизм.
В 1С нет ни наследования, ни функций как объектов. И нет предпосылок к появлению, если только в v9. |
|||||||
391
vhl
20.07.16
✎
16:26
|
(386) >Например сделал отчет определил реализацию определенных методов, а в наследниках только добавляю новые методы или переопределяю методы родителя.
В чем преимущество между: >Например сделал обработку "ОбщийОтчет" а в других отчетах только добавляю новые методы или переопределяю методы родителя |
|||||||
392
b_ru
20.07.16
✎
16:26
|
(390) Причем тут полиморфизм в том примере?
Предпосылок конечно нет, если за 20 лет 3,5 изменения внесли. |
|||||||
393
Jokero
20.07.16
✎
16:27
|
(379) Основная идея ООП, что с объектом данных работает только сам объект.
И если это не так, то потом начинаются овер сто тыщ тем на форуме, что кто-то меняет данные, но не понятно кто и из какого из овер 100 000 общих модулей происходит подмена. |
|||||||
394
Serginio1
20.07.16
✎
16:28
|
(391) Ты должен создать методы которые есть в ОбщийОтчет
и из них вызывать методы ОбщийОтчет |
|||||||
395
Serginio1
20.07.16
✎
16:30
|
В наследовании если тебе не нужно переопределять методы ОбщийОтчет то ты их просто и не пишешь. То есть если тебе нужно добавить 1 метод, то в новом модуле будет 1 метод. А в ОбщийОтчет может быть 100 методов
|
|||||||
396
Mr_Rm
20.07.16
✎
16:30
|
(390) Если в Элементы Коллекции - объекты-потомки одного класса, то метод Элемент.СделатьЧтоНибудь() будет вызван дл я соответствующего типа (класса).
|
|||||||
397
Serginio1
20.07.16
✎
16:36
|
(396) В скриптовых языках это идет через утиную типизацию
|
|||||||
398
orefkov
20.07.16
✎
16:36
|
(389)
Заметь, я не писал, что intellisence в 1С идеальный :) А его расширение снегопатом - лишь малая часть функционала. Но вот в новой версии подсказку по параметрам методов я уже не реализую - не просят, хватает штатной. Вот чего бы хотелось, так это иметь возможность явно указывать подсказке тип переменных, как например в TypeScript. Вот к примеру работа с восьмерочными объектами на TypeScript в Visual Studio Code: https://www.youtube.com/watch?v=vJnZPLe67Aw в одном случае TypeScript сам вывел тип переменной из v8New("ТаблицаЗначений"), а для параметра функции я тип указал явно через двоеточие. Пока в 1С это делается через костыли. |
|||||||
399
Mr_Rm
20.07.16
✎
16:40
|
(397) Ну да, есть метод - вызываем, нет - молча пропускаем.
|
|||||||
400
Serginio1
20.07.16
✎
16:44
|
(398) Спасибо. Интересно.
|
|||||||
401
Serginio1
20.07.16
✎
16:48
|
400+ Вот, во что хотелось бы преобразование 1С так это в TS
|
|||||||
402
Serginio1
20.07.16
✎
16:48
|
Kotlin тоже неплох.
|
|||||||
403
vhl
20.07.16
✎
16:49
|
(395) Это все теория. На практике таких случаев, когда у тебя будет 10 отчетов с одинаковыми процедурами очень мало. Максимум - 2-3 схожих. Т.е. вроде как и наследование, да только в реальности не используется.
|
|||||||
404
romix
20.07.16
✎
16:51
|
(398) Я везде пишу что-то вроде
Если Ложь Тогда док=Документы.ИмяДокумента.ПустаяСсылка(); КонецЕсли |
|||||||
405
Serginio1
20.07.16
✎
17:02
|
(403) В реальности их достаточно. Часто плюёшься как на отсутствие классов так и на отсутствие наследования, а так же отсутствие замыканий при использовании универсальных алгоритмов
http://catalog.mista.ru/public/371762/ Ну и как я уже писал есть конкретные вещи которые могут упростить программирование Плюс реально по аналогии с await в 1С можно 1. Разворачивать модальные методы используя конечный автомат 2. Вызов серверных функций через замыкания. 3. Асинхронные вызовы |
|||||||
406
b_ru
20.07.16
✎
17:04
|
(403) Это вообще не довод. В 1С же есть БизнесПроцесс, РегистрРрасчета, Задача, ГеографическаяСхема и АнализДанных.
|
|||||||
407
orefkov
20.07.16
✎
17:06
|
(404)
Именно это я и называю "костыли". Со снегопатом я их немного облагородил, позволяя заменить на //: док=Документы.ИмяДокумента.ПустаяСсылка() но хотелось бы поддержки этого от платформы в цивилизованном виде. Ведь к примеру когда-то в 8ке не было #Область, не было подсказки параметров методов, но ведь появились же, не будем гадать, по каким причинам. Может, и это появится со временем. |
|||||||
408
vhl
20.07.16
✎
17:09
|
(406) БизнесПроцессы? Вы просто не умеете их готовить: http://imgur.com/a/X7YXp
|
|||||||
409
b_ru
20.07.16
✎
17:10
|
(408) Тут целая куча бестолочей которые не умеют готовить ООП вообще никак. Неужели же мне нельзя не уметь готовить бизнес-процессы? :)
|
|||||||
410
Задумчивый
20.07.16
✎
17:11
|
куда там жабе, сидиезу, сипласпласу до него
Нормальный язык, развивается. |
|||||||
411
vhl
20.07.16
✎
17:16
|
(409) Я просто говорю про реальный опыт использования ООП. Все эти "фишки" из книг в реальном мире оказываются бесполезными и вот у тебя 80% приложения из отдельных классов просто потому что там нед дублирующегося функционала. А там где есть, какой-то добрый разработчик поставил private или package private и вот вся ваша красота идет псу под хвост
|
|||||||
412
Gary417
20.07.16
✎
17:29
|
(411) Фишки в книгах описаны для общего понимания, они не руководство к действию и даже не рекомендация что "делать надо именно так"
С опытом должно приходить понимание что "да, вот тот шаблон и структура здесь удачно подойдёт" И есть книжки которые рекомендуют как можно более везде писать "private или package private" потому что бездумное копирование концепций ООП налево и направо порождает очень сложные и неуловимые глюки в программах. А иногда и крайне запутанные и корявые архитектуры когда для реализации "Объект.СделатьВсёХорошо()" требует передачу объекту ссылок на огромное количество не связанных с ним напрямую модулей лишь потому что "Объект должен сам себя обрабатывать" |
|||||||
413
b_ru
20.07.16
✎
17:34
|
(411) Реальный опыт использования ООП - это гигантское количество программ, которое написано с помощью ООП. Ты сейчас читаешь это сообщение в браузере, написанном с помощью ООП, например.
Да, в учетных задачах эта технология уместна далеко не везде. Я, например, не призываю переписать типовые конфигурации с использованием ООП. Но наличие поддержки этого инструмента в платформе однозначно пригодится тем, кто умеет это самое ООП готовить. И я уверен, что людей, которые будут использовать ООП на 1С больше чем людей, которые используют эти самые БизнесПроцессы. Правда, на порядок больше тех, кто не умеет ни того, ни другого, потому реализация ООП в 1С мне не кажется первоочередной задачей. Но платформе уже не один десяток лет - пришло время для задач не первоочередных. |
|||||||
414
romix
20.07.16
✎
17:38
|
(407) Теоретически система могла бы сама выстроить деревце функций с параметрами и переменными, анализируя все ветви кода.
Хранить наподобие деревца в ветви Web-сервисы. Тогда бы не понадобилось там явно указывать. Также это помогло бы починить вот это: Как автоматически проверить параметры всех функций? |
|||||||
415
quest
20.07.16
✎
17:39
|
(408) респект.
Мое глубокое убеждение - единственное чего не хватает 1С - макросов как в лиспе и функций как объектов. Будет это - все остальное уже пишется. |
|||||||
416
Serginio1
20.07.16
✎
17:41
|
(404) На заметку!
|
|||||||
417
ZloyBrawler
20.07.16
✎
17:42
|
(411) Я думаю часть проблем можно закрыть введя НЕ обязательную типизацию переменных и параметров методов, потом помимо типа данных "Структура", дать возможность описывать что-то типа "СтруктураФиксированная" и вывести этот тип в состав метаданных, однако предвижу какой срач там будет в этой ветке конфигурации.
Вот тогда та можно будет передавать структуру с over 9000 полей, и потом радостно после нажатия кнопки "." видеть все что там из этой структуры можно вытащить или наоборот засунуть в нее. Ах да, как же я забыл, тогда и что-то с типом "ТаблицаЗначений" нужно делать, негоже чтобы число колонок было переменным, нужно тоже ввести еще один тип данных, с фиксированным числом колонок и с жестко заданным типом данных в этих самых колонках. Так можно и дальше маразматически фантазировать, вот только к чему это приведет? Сложность конфигураций возрастет однозначно. А как прекрасно IntelliSense будет работать! Вот же чудо правда? |
|||||||
418
Serginio1
20.07.16
✎
17:43
|
(414) Нужно просто пойти путем TypeScript
|
|||||||
419
vhl
20.07.16
✎
17:57
|
(413) У тебя есть опыт коммерческой разработки на ООП? Сколько лет?
|
|||||||
420
b_ru
20.07.16
✎
18:20
|
(419) 7 лет примерно.
|
|||||||
421
b_ru
20.07.16
✎
18:20
|
+420 тиражные продукты не писал, если тебя это волнует.
|
|||||||
422
romix
20.07.16
✎
18:27
|
(416) Идея не моя. После точки все начинает работать.
(418) Лениво же будет руками вот это писать: https://ru.wikipedia.org/wiki/TypeScript
Турбо Паскаль же. |
|||||||
423
Garykom
гуру
20.07.16
✎
18:35
|
(422) Выкинули begin...end с заменой на {...} так что не совсем турбо а уже дальше
|
|||||||
424
Garykom
гуру
20.07.16
✎
18:38
|
Кста ща наверно для кого то снова америку/африку открою, но кто мешает заниматься трансляцией из вашего лично любимого супер пупер языка в типовой язык 1С?
scala > java и наоборот http://javatoscala.com/ |
|||||||
425
Провинциальный 1сник
20.07.16
✎
19:25
|
(423) Помню учил в вузе алгоритмические языки на старой СМ-совместимой машинке, с 7-битным знакогенератором.. и там не было {} вообще. Их заменяли русские буквы Ш и Щ. Код выглядел весьма экзотично.
|
|||||||
426
b_ru
20.07.16
✎
19:43
|
(422) ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокументИмениНуралиеваБорисаГеоргиевича же пишут и ничего
|
|||||||
427
Serginio1
20.07.16
✎
19:49
|
(422) То, что не является объектами можно опускать.
Но если ты пишешь общие методу, то лучше указать тип параметра вместо описания. |
|||||||
428
akaBrr
20.07.16
✎
21:15
|
(424) проще поныть на мисте
|
|||||||
429
В тылу врага
21.07.16
✎
08:52
|
Ну и забыли кажется еще:
Чтото = 42; Что здесь? 1. Объявление и инициализация новой локальной переменной 2. Присваивание имеющейся локальной переменной 3. Присваивание переменной модуля 4. Присваивание реквизиту объекта 5. Присваивание переменной модуля приложения |
|||||||
430
jk3
21.07.16
✎
09:20
|
Еще забыл, в языке не хватает макросов, например, чтобы явно обозначать какой из параметров процедуры входной, а какой выходной, чтобы это потом отображалось в IntelliSense.
Процедура МояПроцедура(IN а1, IN а2, OUT а3, OUT а4) |
|||||||
431
В тылу врага
21.07.16
✎
09:23
|
(430) OUT - можно и не надо, а так есть же Знач - это считай IN, а без него это INOUT
|
|||||||
432
Serginio1
21.07.16
✎
09:49
|
(430) В 1С все параметры по умолчанию OUT.
Для In есть знач. |
|||||||
433
jk3
21.07.16
✎
10:29
|
(431) Знач -- не полезно, когда огромные таблицы значений передаются в процедуру, т.к. будет создана копия таблицы в памяти.
(432) Это понятно, что все параметры, если не указано Знач, передаются по ссылке. Это логическое разделение для удобства работы с незнакомыми процедурами. Своеобразная ontext-документация. Это только одно из применений макросов. Можно еще придумать куда их с пользой можно применять. |
|||||||
434
Serginio1
21.07.16
✎
10:53
|
(433) Для ссылочных типов ничего не копируется (кроме сериализации). Просто ты не можешь присвоить переменной переданному в параметру новое значение.
А вот, что касается серверных вызовов, то там предпочтительнее знач, если не нужно использовать возвращаемое значение. |
|||||||
435
Serginio1
21.07.16
✎
10:54
|
(кроме сериализации в серверных вызовах)
|
|||||||
436
Serginio1
21.07.16
✎
11:26
|
При перередаче ссылочных типов в параметре
1. По ссылке передается адрес переменной 2. По значению передается значение переменной в которой хранится адрес объекта |
|||||||
437
В тылу врага
21.07.16
✎
11:37
|
(433) передаются ссылки на объекты, а не копируются объекты, учи матчасть
|
|||||||
438
mistеr
21.07.16
✎
11:53
|
Не хватает пункта:
3. Нормальный язык, но не развивается, к сожалению. |
|||||||
439
orefkov
21.07.16
✎
12:16
|
(433)
Еще один не понимает, как работает Знач. Никакой копии ТЗ не будет создаваться. |
|||||||
440
jk3
21.07.16
✎
12:29
|
(439) Конечно, т.к. со ссылочными типами получается бред.
Вот такой код прекрасно прокатывает и добавляется строка в ТЗ.
По-хорошему, так быть не должно. Если передается параметр по значению, то вызывающей процедуре не должно поменяться содержимое переданного объекта. А т.к. передается ссылка, то ссылка действительно не меняется, а вот содержимое, которое находится по этой ссылке, прекрасно можно поменять. Может быть такое поведение и полезно в некоторых ситуациях, но об этом надо помнить. Да и вообще тема не об этом, а о возможностях языка, которые хотелось бы в него добавить. |
|||||||
441
b_ru
21.07.16
✎
12:32
|
(440) Это тайное ниндзютцу, только программисты знают чем const int * отличается от int * const
|
|||||||
442
impulse9
21.07.16
✎
12:48
|
Меня немного напрягает конструкции типа ЕстьNULL или &НаСервере, где надо лишний раз переключаться на английский язык (хотя & можно как Альт+38).
Еще мешает отсутствие регулярных выражений, для проверки, к примеру, валидности электронной почты, приходится строить безумные конструкции. А так хороший язык, и Конфигуратор в роли IDE тоже неплох. Нормальный язык, развивается. |
|||||||
443
В тылу врага
21.07.16
✎
13:01
|
(440) так во всех языках типа C#/Java/Delphi
|
|||||||
444
В тылу врага
21.07.16
✎
13:01
|
(442) рекомендую раскладку Чистова, сам юзаю
|
|||||||
445
PRADA
21.07.16
✎
13:09
|
Вполне.
Нормальный язык, развивается. |
|||||||
446
Serginio1
21.07.16
✎
14:55
|
Смысл с сылочными типами таков
Процедура ТестПередачиПоЗнач(Знач ТЗ) ТЗ= 5; КонецПроцедуры ТЗ= Новый ТаблицаЗначений; ТестПередачиПоЗнач(ТЗ) То Тз останется презжним. Без Знач Тз изменится на 5; |
|||||||
447
Masquerade
21.07.16
✎
23:50
|
1С хорош.
Во первых - он развивает память. Необходимо держать в голове все определения объектов, которые вы создаете в коде. Благо их типов немного, но, как говорится - бедненько, но чистенько. Во вторых - он развивает усидчивость. Сначала ты сидишь весь день, потому что надо написать тонну процедурного кода, потом ты сидишь неделю, потому что надо разобраться в тонне кода, который написал кто-то другой. В третих - он Надежен. Не надо дергаться, ибо ничего не изменится. Никто ничего нового не придумает - всё будет как всегда. Не надо ничего учить, знай цель жалом в главбуха - кто тебе что сделает? |
|||||||
448
Злопчинский
21.07.16
✎
23:58
|
(446) ойойой - тут надо осторожнее. на ИС есть боольшущая статья где рассматриваются всякие варианты, там есть особенности по Знач со ссылочными типами
|
|||||||
449
Злопчинский
22.07.16
✎
00:07
|
(442) "Еще мешает отсутствие регулярных выражений, для проверки, к примеру, валидности электронной почты, "
Покопайся на ИС, - народ в глубинах платформы раскопал regexp - и его можно заюзать! |
|||||||
450
Злопчинский
22.07.16
✎
00:09
|
Мне наш язык в целом нравится.
Самый писк когда, условно, овладеваешь не только французским языком, но и языком по-французски |
|||||||
451
В тылу врага
22.07.16
✎
10:55
|
(447) "В третих - он Надежен. Не надо дергаться, ибо ничего не изменится"
поведение предопределенных событий типа "ОбработкаЗаполнения" менялось |
|||||||
452
В тылу врага
22.07.16
✎
14:03
|
почему в стандарте SQL
select 5/2 from ... дает 2, а в запрос 1С дает 2.5 |
|||||||
453
Gunner
22.07.16
✎
14:09
|
Норм язык. Циклы есть, объектная модель есть. Многое можно на 1С написать, игры уже пишут))) Что ещё надо?
Нормальный язык, развивается. |
|||||||
454
orefkov
22.07.16
✎
14:22
|
(452)
Говорят, что Oracle тоже даст 2.5 А зато sqlite даже select 5.0/2.0 выдаст 2 :) |
|||||||
455
Кирпич
22.07.16
✎
14:34
|
(454) не может быть. мож какая то старая версия
|
|||||||
456
В тылу врага
22.07.16
✎
14:50
|
(454) говорят многое, а есть стандарт и многие к нему стремятся от версии к версии
|
|||||||
457
Кирпич
22.07.16
✎
14:54
|
(456) а 1С то каким боком к этому стандарту.
|
|||||||
458
В тылу врага
22.07.16
✎
14:55
|
(457) никаким, это печально
|
|||||||
459
Кирпич
22.07.16
✎
14:58
|
(458) что тут печального. правильно сделали, что 5/2=2.5
если бы сделали 2, то половина веток на мисте была бы с вопросом почему 1С выдает 2, а не 2.5 |
|||||||
460
В тылу врага
22.07.16
✎
15:00
|
(459) тут согласен
|
|||||||
461
Кирпич
22.07.16
✎
15:01
|
+(459) да и как 1С может следовать стандарту SQL, если в 1С нет SQL.
|
|||||||
462
orefkov
22.07.16
✎
15:16
|
(455)
Ты про oracle или sqlite? |
|||||||
463
Кирпич
22.07.16
✎
15:30
|
(462) про sqlite
|
|||||||
464
orefkov
22.07.16
✎
23:16
|
(463)
Нет, проверял буквально только что на свежем sqlite. Там всё дело в принятой в sqlite динамической типизации. Тип значения выясняется "на-лету", если не задан явно. При этом для числовых литералов подбирается наименее затратный тип. То есть если число может быть представлено целым без потери точности, оно считается целым. Так как 5.0 и 2.0 представляются целыми без потери точности, sqlite их считает как целые. А допустим 5.1 / 2.1 sqlite будет считать уже как double. Или cast(1.0 as real) / 2 - тоже будет считаться как double - тип задан явно. |
|||||||
465
orefkov
22.07.16
✎
23:18
|
+(464)
Вот "select (5.1 - 0.1)/2" sqlite посчитает как 2.5 |
|||||||
466
Jija Grenkov
23.07.16
✎
00:24
|
(461) Стандарта SQL там естественно и быть не может, но построение запросов - это чуть ли не единственное, что действительно пригодилось при разработке на дургих языках. Перевел ключевые слова на англ и вуаля. А запросы по сложности сравнимые с 1с-ными так и не пришлось писать. Даже когда-то провел эксперемент собрал 4-х колег которые утверждали, что знакомы с sql и предложил им написать срез последних. За минут 20 никто не осилил.
|
|||||||
467
kolts23381
23.07.16
✎
01:09
|
Язык нормальный свои задачи выполняет, но почти не развивается. А развивается только платформа. Да и рассматривать его отдельно от платформы нет смысла. Даже не вижу какой синтаксис можно добавить.
Хотел бы я посмотреть на умников с хабра которым бы пришлось выучить термины приходная накладная или номенклатура или акт сверки и др. на английском. Хотя они могут программировать на английском так как платформа позволяет, но чтоб быть до конца правильными, надо все имена метаданных перевести на английский, а то кириллица в исходниках - зло. |
|||||||
468
kolts23381
23.07.16
✎
01:33
|
(466)
В постгрескл, который прекрасно понимает кириллицу, можно так CREATE TEMP TABLE ЦеныНоменклатуры( Номенклатура integer, Цена numeric(15,2), Период timestamp without time zone); INSERT INTO ЦеныНоменклатуры (Номенклатура, Цена, Период) VALUES (1, 55.00, '2016-05-05 00:00:00'::timestamp without time zone), (2, 45.00, '2016-05-05 00:00:00'::timestamp without time zone), (3, 47.00, '2016-05-05 00:00:00'::timestamp without time zone), (1, 59.00, '2016-06-05 00:00:00'::timestamp without time zone), (2, 46.00, '2016-06-05 00:00:00'::timestamp without time zone), (3, 48.00, '2016-06-05 00:00:00'::timestamp without time zone); --С помощью оконной функции SELECT ПодЗапрос.Номенклатура,ПодЗапрос.Цена FROM (SELECT Номенклатура,Цена,Период, MAX(Период) over (PARTITION BY Номенклатура) AS МаксимальныйПериод FROM ЦеныНоменклатуры) ПодЗапрос WHERE ПодЗапрос.Период = ПодЗапрос.МаксимальныйПериод |
|||||||
469
Jija Grenkov
23.07.16
✎
01:40
|
(468) примерно так платформа и считает, то что - это напишут многие 1с-ники я верю.
|
|||||||
470
Лефмихалыч
23.07.16
✎
02:12
|
посмотреть на него с позиции современных языков - это как?
Очередной пионэр прочитал на википедии определение слов "полиморфизм", "инкапсуляция", "наследование" и принялся самоотверженно добывать кумыс из коня? |
|||||||
471
youalex
23.07.16
✎
02:58
|
Навеяло соседней темой.
За ЗаполнитьЗначенияСвойств(), за Структуру и Соответствие - однозначный респект. Поэтому, собсвтенно, Лично мне не хватает прямого доступа к БД, произвольных таблиц и, вообще, полного функционала СУБД. Понимаю, что это жертва в угоду универсальности, но хотя бы в виде эксперимента, хотя бы чисто под ms sql - отдельную версию, заточенную именно под нее... Нормальный язык, развивается. |
|||||||
472
oleg_km
23.07.16
✎
10:07
|
(464) Странно, только что проверил на DB Browser
select 5/2 = 2 select 5.0/2 = 2.5 |
|||||||
473
oleg_km
23.07.16
✎
10:08
|
+(472)
Версия 3.8.0 Версия Qt 5.5.1 Версия SQLite 3.9.2 |
|||||||
474
orefkov
23.07.16
✎
21:37
|
(473)
Хм, выходит пора обновлять мой dbviewer, в нём select sqlite_version(), 5.0/2.0, 5/2 3.8.10 2 2 В снегопате sqliteOpen(":memory:").exec("select sqlite_version(), 5.0/2.0, 5/2").ВыбратьСтроку() 3.13.0 2,5 2 Каюсь, пофиксили. |
|||||||
475
oleg_km
23.07.16
✎
22:49
|
(474) А ему просто нельзя свежую длл подсунуть?
|
|||||||
476
orefkov
24.07.16
✎
01:28
|
(475)
Да посмотрел, походу дело не в sqlite. Я использую для просмотра баз SqliteStudio, подсунул ему свежайший sqlite - 3.13.0 - всё равно выдает 5.0/2 = 2. Видимо в SqliteStudio косяк. Когда запрос делаю через мою компоненту - всё нормально. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |