Имя: Пароль:
1C
1С v8
Сложные запросы в 1С
0 Maksu_
 
09.08.22
11:48
А часто ли в вашей практике встречаются сложные запросы (вложенные, левый джойн и проч.)?
1 Волшебник
 
09.08.22
11:49
Левый джойн часто бывает, а вот правый джойн уже признак того, что запрос написан вручную, с любовью.
2 Галахад
 
гуру
09.08.22
12:02
Интересно, а простые это какие?
3 Dmitrii
 
гуру
09.08.22
12:08
(0) Если вложенные запросы и левые джойны это примеры сложных запросов, то в моей практике простые запросы практически не встречаются.

Какой-то тупой опрос.
4 H A D G E H O G s
 
09.08.22
12:10
Автор хочет в мир 1С и пытается задавать вопросы из жизни.
5 Kassern
 
09.08.22
12:11
(0) а что для вас простой запрос? Это просто обращение к одной таблице?)
6 IVT_2009
 
09.08.22
12:12
Очень часто. Обычно текст запроса на несколько экранов.
7 Kassern
 
09.08.22
12:14
(6) это еще ладно на несколько экранов, а вот когда он в 100500 менеджерах таблиц, а текст запросов еще программно собирается из кучи кусков - вот это уже веселее)
8 mikecool
 
09.08.22
12:14
(0) нет, сынок, это фантастика
9 Smallrat
 
09.08.22
12:16
(0) какие джойны и вложенные? ЗУПа вам покажет что такое сложные запросы.
10 Kassern
 
09.08.22
12:16
(9) это я как и пытался описать в (7) ))
11 NorthWind
 
09.08.22
12:21
(2) Выбрать * из Справочник.Номенклатура, наверно
12 lubitelxml
 
09.08.22
12:22
(9) (10) в УТ аналогично
13 Kassern
 
09.08.22
12:22
(11) Справочники.Номенклатура.Выбрать() - еще проще (по факту такой же запрос)
14 Kassern
 
09.08.22
12:23
(12) там хоть не так жестят со менеджерами таблиц
16 Maksu_
 
09.08.22
13:07
(4) Возможно. Пустите?
17 mistеr
 
09.08.22
13:10
(0) Вложенные и левый джойн это не сложные. Сложные это когда от количества джойнов рябит в глазах, а ты отчаянно пытаешься понять, это поле в условии с этого уровня вложенности или с предыдущего. :)
18 Жан Пердежон
 
09.08.22
13:11
мне вот сейчас в наследство достался запрос с 160+ временных таблиц,
просят оптимизировать, говорят медленно работает...
19 Kassern
 
09.08.22
13:18
(18) и сколько по времени открывается конструктор запроса?
20 RomanYS
 
09.08.22
13:22
(1) В какой-то момент начал ловить случаи, когда конструктор делает правые соединения. Был удивлён)
21 Волшебник
 
09.08.22
13:23
(18) Может временных таблиц не хватает?
22 Smallrat
 
09.08.22
13:27
Вспомнил еще одну жесть - типовые шаблоны RLS, как это читать можно я до сих пор не вкуриваю
23 magnum2
 
09.08.22
13:40
(17) А как разбираться в таком?
24 mistеr
 
09.08.22
13:44
(23) С помощью консоли запросов ИР
25 Said_We
 
09.08.22
19:13
(0) Если хочешь изучать запросы, то точно не на 1С.
1С использует стандарт SQL-92 + небольшие расширения в виде итогов, иерархии....
Если посмотришь на запросы, которые используют люди которые пишут не на 1С - будешь чувствовать себя...
В общем запросы сейчас пишут короче и понятнее, решая подобные задачи. Под задачами я понимаю не задачи конфигурации, а более короткие и простые. Например, разбить на периоды последовательность и дат. Рекурсивных запросов в 1С нет. Оконных функций в 1С нет. PIVOT, UNPIVOT в 1С нет.... Список можно продолжать.
И это только то, что касается простой выборки данных.
26 CepeLLlka
 
09.08.22
20:56
(22)Такая же фигня :) Было пару раз при помощи ИР вроде научился их вкуривать, но забыл как страшный сон :)
27 H A D G E H O G s
 
09.08.22
21:12
(0) Если хочешь изучать запросы - то смело можешь использовать 1С.
1С позволяет строить запросы так, как они и были изначально задуманы - с минимально необходимым синтаксисом минимально избыточных данных.
Остальная шлянь в виде итогов, рекурсий и представлений и не нужна в трехзвенках и должна обрабатываться кодом, без всяких извращений.
28 SleepyHead
 
гуру
10.08.22
06:56
(18) "просят оптимизировать, говорят медленно работает..."

Успевают чай попить два раза?
29 Bigbro
 
10.08.22
07:51
(28) зато можно заработать всеобщую благодарность и возможно премию ускорив весь этот беспредел на порядок. или даже два.
мне как то удалось отчет разогнать в 60+ раз. чтобы вместо 3,5 часов 3 минуты с хвостиком формировался ))
до меня с этим жили и мучались 3 с лишним года.
30 Skom2
 
10.08.22
08:22
(28) это они себестоимость в ерп не считали просто)
31 Said_We
 
10.08.22
11:09
(27) Задумано когда? 30 лет назад?
ROW_NUMBER() в 1С через жо.. реализована. Какие-то надуманные ограничения.
Простейшие RANK(), DENSE_RANK() - отсутствуют как класс. Хрен с ним с разделением на группы NTILE() - используется не часто.
Хрен с CHOOSE() и IIF(), да нагляднее короче и понятнее, но не на столько важно.

Не только короче и нагляднее, но и быстрее такие функции как LAG(), LEAD(), но важней же как оно задумывалось до 92 года, пока в стандарт SQL-92 попало.

Все придумали колесо, а 1С продолжает волоком таскать. Как-то так мне это видится.
32 mistеr
 
10.08.22
14:53
(31) А часто они нужны в 1С? Только если в отчетах, так в СКД они почти все есть.
33 Arbuz
 
10.08.22
15:35
(29) > можно заработать всеобщую благодарность и возможно премию ускорив весь этот беспредел на порядок. или даже два.
Неужели деинсталлировав 1С?
(32) Зачем тащить всё в СКД, если можно в запросе отфильтровать/сгруппировать/посчитать сразу?
34 Arbuz
 
10.08.22
15:35
+(33)
*можно было бы*
35 Жан Пердежон
 
10.08.22
16:04
(31) до SQL-92 было только внутреннее соединение, а оконные функции вообще только в 2003 появились
36 ptiz
 
10.08.22
16:09
(0) Сложный запрос бывает и без джойнов.
Например, этот для многих сложный, не могут сказать результат:
ВЫБРАТЬ
СУММА(1)
ИЗ Справочник.Номенклатура
37 Said_We
 
10.08.22
23:56
(35) В стандарте появились почти 20 лет назад. В оракле были до выхода стандарта.

Вы считаете, что для того что бы появиться в 1С оконным функциям 20-30 лет это слишком быстро?
Да в SQLite появились они в 2018 году. Но во первых уже 4 года назад как появились, а во вторых это БЕСПЛАТНЫЙ SQL сервер, который на сейчас лениво пишет всего один человек. По факту иногда уделяет время. Да и задачи SQLite другие обычно решает по объемам баз.

Почему этого нет в 1С?
Ответ на поверхности.
Есть бесплатный SQL Постгри. Необходимо отказаться от файловой в пользу какой-то версии на Постгри и дальше можно всё написать быстрее. Но как это так отказаться от файловой? Ай яй яй.

По факту после отказа от файловой задача будет стоять - перевод текста с языка запросов 1С в язык запросов SQL сервера на которой крутится база. По факту практически 1 к 1 с русского на английский с очень мелкими нюансами. А кто пишет на английском в 1С, то ... ещё проще.
Например: в MS SQL "SELECT TOP 100...", а в Постгри "SELECT ... FROM ... LIMIT 100".
Синтаксис языка SQL в части выборки в самих SQL серверах очень похожи. Есть нюансы, но это мелочи. В любом случае реализация на Постгри уже есть и уже работает.

Как результат не нужно тянуть бегемота из болота и тормозить развитие языка SQL в 1C, за счет собственной какой-то реализации языка SQL в файловой версии.
Какие усилия необходимо предпринять - кроме как морально-волевых? Да особо никаких. После каждого выхода редакции конфигурации пользователям приходится больше действий совершать. То перенос данных, то документы генерировать или вводить, то ещё что.

А тут установил 1С 8.8 (например) без поддержки файловой версии, но с Постгри вместо неё. Базу выгрузил и загрузил. Усё.

Будет это? Предположу, что никогда не будет. Нет морали и нет воли.
38 Kassern
 
11.08.22
09:17
(37) Вопрос тут в другом, будет спрос - будет реализация. Для 99% проектов, оконные функции могут вообще никогда не понадобиться, за глаза хватает текущего функционала. Поэтому нафига тратить время(деньги) на реализацию того, что в перспективе не принесет тебе денег(ускорит разработку)?
Сейчас работа идет к тому, чтобы было по меньше программистов и по больше консультантов имхо. Раньше допиливали конфу под нужны бизнеса. Сейчас конфы перегружены функционалом и их настройками приводят к хотелкам бизнеса в рамках коробочного решения.
39 Said_We
 
11.08.22
10:22
(38) т.е. скорость разработки и поддержки за счет более короткого и понятного кода SQL запросов не важна. Скорость работы этих запросов тоже не важна.
За то мы типа ускорялись когда переходили с обычных форм на управляемые. В итоге получили такие тормоза...

По моему надо честно сказать - не правильной дорогой идём товарищи.

Сейчас рисуют на основе 1С исполнителя, или как там его назвали, новую платформу 1С 9.0. При этом хотят сделать на основе бесплатного, что-то платное. При этом то что сделали пока работает как-то не очень по сравнению с бесплатным. Какой-то велосипед опять изобретают.
40 Kassern
 
11.08.22
10:33
(39) "За то мы типа ускорялись когда переходили с обычных форм на управляемые" - не верно. Данный переход позволил перейти в веб и в мобилки. А это актуально на сегодняшний день.
"т.е. скорость разработки и поддержки за счет более короткого и понятного кода SQL запросов не важна" - Вангую, что скорость разработки это дело не сильно увеличит, а доработка возни добавит много. В общем выбирают меньшее из зол. Вот если бы каждому второму разрабу, приходилось извращаться сторонними инструментами, чтобы реализовать оконные функции и т.д. для решения задач 1с, то 99.9% это бы внедрили и очень оперативно.
"Сейчас рисуют на основе 1С исполнителя, или как там его назвали, новую платформу 1С 9.0" - поживем увидим, что получится.
41 Kassern
 
11.08.22
10:37
Вот понадобилось разрабам система линейных уравнений, для решения задач расчета той же себестоимости. Контора понимала, что это упростит им жизнь, поэтому и реализовала. Как часто вы пользуетесь СЛУ в 1с?
Если разрабам для разработки будущих конфигураций нужны были оконные функции, они бы и это запилили, хотя бы для себя.
42 mistеr
 
11.08.22
10:41
(37) Который год уже ты не можешь смириться с тем, что файловая еще жива. Не надоело? :)

Это меньшая из проблем 1С. Ну или одна из меньших.
43 Said_We
 
11.08.22
10:41
(40) "не верно. Данный переход позволил перейти в веб и в мобилки" - вспоминаем как это преподносилось. Причиной перехода 1С называло ускорение работы и снижение нагрузки на сеть. Другими словами - просто врали. :-)
44 Kassern
 
11.08.22
10:43
(43) ну смотря как посмотреть. Давайте возьмем условную конфигурацию на 5-10тыс пользователей. Как вы на обычных формах нагрузку распределите и отчетность? Для клиент серверной версии есть множество вариантов.
45 Kassern
 
11.08.22
10:43
если же речь идет о конторе в 1-50 человек, то да, ускорение особое вы вряд ли увидите
46 Said_We
 
11.08.22
10:44
(42) На мой взгляд это одна из самых больших проблем. Сейчас условно "ларьки" частично уходят в системы, которые предлагают банки или сама налоговая.
Файловая для кого?

(44) Да хоть 5 тысяч пользователей, хоть всего 5-ть. Тормозит.
47 mistеr
 
11.08.22
10:44
(41) Предположу, что в данном случае дело было немного иначе. На каком-то крупном внедрении топ заказчика вышел на топа из 1С и сказал: "Какая-то маленькая программка на Си считает нашу себестоимость за полчаса, а у вас сутки! Вы там не охренели?"
48 Kassern
 
11.08.22
10:47
(47) все возможно, вот когда так будет с оконными функциями, то их таким же макаром внедрят))
49 Said_We
 
11.08.22
10:47
(45) Еще вопрос задам. Файловая никак не накладывает ограничения на запись данных в БД?
50 Kassern
 
11.08.22
10:47
(46) "Да хоть 5 тысяч пользователей, хоть всего 5-ть. Тормозит." - только вот в первом случае у вас может вообще не взлететь, там где тонкий клиент "тормозит"
51 Said_We
 
11.08.22
10:49
(50) "там где тонкий клиент "тормозит" - а условно "маленькая программка на С" вообще не тормозит и на 100 000 пользователях.
52 Kassern
 
11.08.22
10:50
(51) только вот сколько вам нужно времени, чтобы эта маленькая программа на Си обрасла таким же функционалом, как коробочная корп конфа?
53 Kassern
 
11.08.22
10:52
Сколько лет и денег вы потеряете пока такую напишите и как скоро она окупится. Еще и спецов нужно будет искать отдельных на разработку и поддержку этой программы. И полюбому она не одним Си делана будет, а целый зоопарк из технологий.
54 Kassern
 
11.08.22
10:52
С тем же успехом все можно на ассемблере написать и будет быстро, но не всегда это выгодно.
55 Said_We
 
11.08.22
10:54
(52) Вопрос не функционала, а простой отображения формы для пользователя с минимум данных. То что таких форм в 1С сотни и все они тормозят никак не оправдывает положение дел. Какая разница сколько форм тормозит. В 1С можно нарисовать с пустой конфигурации простейшую с простейшим функционалом и всё это будет тормозить.
56 ptiz
 
11.08.22
10:54
(44) Обычные форм не отменяют клиент-серверной архитектуры.
57 mistеr
 
11.08.22
10:54
(46) Ты не можешь включить Постгрю в базовую, кто ее будет чинить? Техподдержка первой линии по e-mail? Embedded версии у Постгри нет. А еще есть мобилки. В принципе, может подойти SQLite, но экономически овчинка (переписывание) выделки не стоит.

А еще остаются ларьки на 2-3 пользователя, которые не хотят к банкам. SQLite их не закрывает.
58 mistеr
 
11.08.22
10:55
(49) О чем речь?
59 Said_We
 
11.08.22
10:56
(53) "а целый зоопарк из технологий" - микросервисы сейчас это называется. Как во всём есть и плюсы и минусы.
60 Said_We
 
11.08.22
10:57
(57) 1С++ 77 работает с SQLite. Хорошо работает даже.
61 Kassern
 
11.08.22
10:58
(55) "В 1С можно нарисовать с пустой конфигурации простейшую с простейшим функционалом и всё это будет тормозить" - у вас, видимо какой-то отрицательный опыт работы. Ничего не тормозит)
62 Kassern
 
11.08.22
11:01
(60) Удобно вам формы рисовать в клюшках? В клиент серверном варианте прям красота в этом деле. Накидал, все автоматом привязывается. Можешь хоть программно рисовать форму. А отчеты в клюшках как делаете, чтобы они хоть как-то приблизились к возможности которую дает СКД юзверам и разработчику?
63 Said_We
 
11.08.22
11:07
(62) В 1С++ практически полноценный SQL. Что хочешь можешь нарисовать на выходе.
1С++ было 10-20 лет назад, и не развивается. Чего вы хотите от неё?
64 Kassern
 
11.08.22
11:09
(63) тогда смысл ее сейчас тут приводить, ну не будет новый мелкий бизнес подобным пользоваться. Ему проще коробочное решение купить и платить прогу на аутсоре 2 раза в неделю, чтобы он их носом тыкал и хотелки реализовывал.
65 Said_We
 
11.08.22
11:10
(64) А при чем тут мелкий бизнес?
Мелкому проще в налоговой нарисовать циферки и отчетностью не заниматься вообще.
66 АгентБезопасной Нацио
 
11.08.22
11:11
(64) стоп-стоп-стоп! какие такие хотелки прогу на оутсорсе??? "Сейчас конфы перегружены функционалом и их настройками приводят к хотелкам бизнеса в рамках коробочного решения."©
67 Kassern
 
11.08.22
11:15
(66) ну так все верно. Мол хотим код товара вместо артикула выводить, а прог такой щелк по настройками и вуаля. Далее, хотим логотип наш воткнуть и т.д.
68 Said_We
 
11.08.22
11:23
(58) Да в чем в чем?
Несколько лет назад (много) в какой-то большой базе было принято решение добавить реквизит булевский или число размером 1 в регистр, не помню уже точно. И было принято решение за чем-то именно ИСТИНА заполнить по умолчанию или 1 если было числовым. Регистр большой и заполнение его средствами 1С занимал около 3 часов. Баз около 50 такого размера и надо было сделать в каждой.
Средствами SQL обычный апдейт работал 3 секунды примерно.
На тот момент выяснили, что 1С всё равно физически пишет не набор данных, а по одной записи набора. И делает она так, так как файловая по другому не умеет.
69 Kassern
 
11.08.22
11:28
(68) А сейчас пробовали на современной платформе подобное сделать? Не припоминаю подобных проблем.
70 mistеr
 
11.08.22
11:30
(68) И что с того?

P.S. Транзакции надо было использовать.
71 СеменовСемен
 
11.08.22
11:35
(68) таки 1с пишет набор. вот только набор, например, для регистра с регистратором для каждого документа свой. нет общего набора для всех документов
72 Said_We
 
11.08.22
11:36
(69) Сейчас не пробовал - задачи такой более не попадалось.

Но и ускорения работы баз в 1С при том же проведении я тоже не наблюдаю. Да проведение не аргумент - перед проведением какие-то данные как-то собираются и как-то анализируются.
Тут как-то пришлось проводить документы 1 к 1 в ЗиУП 2.5 и ЗиУП 3.1. Платформа и сервер одинаковые. ЗиУП 3.1 на много медленнее проводит. Про рисование форм и отображение информации я молчу и так понятно что УФ далеко сзади.

(70) Использовали. 3 часа самой быстрое чего удалось достичь. И 3 секунды простой прямой запрос средствами SQL.
73 Said_We
 
11.08.22
11:39
(71) Это понятно. Но на тот момент, даже если в наборе по одному регистратору много записей писалось физически по одной.
74 Kassern
 
11.08.22
11:44
(72) " ЗиУП 3.1 на много медленнее проводит" - ну так может там всякие подписки добавились и доп проверки, по сравнению с ЗиУП 2.5?
Если взять и создать новый документ, привязать к нему 1 регистр без всяких проверок, то он будет моментально проводиться и распроводиться. Только дело в том, что в новых конфах добавляют 100500 различного функционала, которые тем, или иным образом влияют на скорость проведения документов.
75 СеменовСемен
 
11.08.22
11:46
(73) никогда такого не было
76 СеменовСемен
 
11.08.22
11:52
(75) хотя нет, там же делет и инсерт
77 mistеr
 
11.08.22
12:05
(76) Как и в SQL :)

Это большая проблема 1С. И дело тут не в файловой, а в своем менеджере блокировок.
78 СеменовСемен
 
11.08.22
12:12
(77) ну так раньше не было своего менеджера. полагались на скл.
и было не очень хорошо
79 Жан Пердежон
 
11.08.22
18:33
(37) вместо того, чтобы ныть на форуме, можешь просто пойти и сделать, изменить жизнь к лучшему:
https://hh.ru/employer/882
80 Said_We
 
11.08.22
22:48
(79) Работали у меня знакомые в 1С. Бывшие коллеги. На сейчас работает наверное один - хотя не факт. Давно с ним не общался. А так все ушли. И дело даже не в размере оплаты труда.
Поэтому не айс.