![]() |
![]() |
![]() |
|
Проголосуйте за мой доклад "Объектная модель запроса" (INFOSTART TECH EVENT 2025) Гипервизор, Широкий, Simod, dmt, yanikolay, Terrixus, ангел, Уран Ренгенович, Karamzin, PR, calmius, privetik, v8i1c, Crusher, Буковка, Рамиль Маугли, Krendel, lucky_, vyaz, Smit1C, Maestro2020, Fish, Андрюха, Климов Сергей, denk32, PLUT, maxar, Ager, scanduta, MichmaN, Джордж1, mmg, Timon1405, Ненавижу 1С, El_Duke, d4rkmesa
| ☑ | ||
---|---|---|---|---|
0
ангел
01.08.25
✎
14:39
|
Привет всем! Вот решил поднять злободневную для меня тему "Объектная модель запроса: современный подход к модификации запросов в типовых решениях 1С". На эту тему подготовил доклад на INFOSTART TECH EVENT 2025. Первый раз пробуюсь на роль докладчика и нуждаюсь в вашей поддержке в голосовании :) Если кто не знал еще то, вот ссылка на главную страницу мероприятия https://event.infostart.ru/2025/
А посмотреть описание доклада и проголосовать или не проголосовать за меня можно по ссылке https://event.infostart.ru/2025/agenda/2440499/ Буду раз за любую обратную связь :) |
|||
1
Гипервизор
01.08.25
✎
15:16
|
Скажите, а ЗУП - типовое решение? Насколько я знаю, там иной подход к формированию текстов запросов.
И вот ещё сомнения по поводу "неудобности" "старого подхода" и "понятности" объектной модели. Очень уж категорично и субъективно. |
|||
2
H A D G E H O G s
01.08.25
✎
15:17
|
Уныло.
Напишите лучше на партнерку в 1С, чтобы в СхемуЗапроса добавили флаг "НеВыполнятьЛогическийКонтрольПриСборкеТекстаЗапроса" Пользы будет больше, чем все ваши балаболлинги на конференциях. |
|||
3
Garykom
гуру
01.08.25
✎
15:17
|
Интересный вопрос
Как можно голосовать за доклад еще не видя хотя бы части материала Только по краткому описанию? |
|||
4
Garykom
гуру
01.08.25
✎
15:22
|
Самое убогое "когда" (но я надеюсь что "если") типовые начнут переводить на схемы запросов вместо текстов
Это будет пипипи с точки зрения поиска мест для модификации/доработок |
|||
5
Garykom
гуру
01.08.25
✎
15:24
|
(4)+ В смысле сейчас можно банально глобальным поиском по "Из Регистр.ИмяРегистра" например искать и с большой гарантией найти все места где в коде используется нужный Регистр или другой объект метаданных
В случае же программного изменения через схемы - это будет упс |
|||
6
ангел
01.08.25
✎
15:30
|
(3) Хороший вопрос :) Но если изложить все подробно до того как доклад будет зачитан то сам доклад вряд ли будет интересен :) .
В данном контекстея лишь прошу поддержки ТЕМЫ доклада а не оценки будующего выступление на конференции )) |
|||
7
ангел
01.08.25
✎
15:34
|
(4) Если запрос статический то этого не случится никогда.
Этот механизм широко применяется в ЗУПе, например по имени регистра сведений нужно создать запрос среза последних |
|||
8
WebberNSK
01.08.25
✎
15:40
|
(4)
> Самое убогое "когда" (но я надеюсь что "если") типовые начнут переводить на схемы запросов вместо текстов Не будут. Объект "Схема запроса" для реализации интерактивной работы в "Конструкторе запросов". Не для программной компоновки самих запросов в коде. В (0) "Вредные советы". |
|||
9
Fish
гуру
01.08.25
✎
15:36
|
(6) А что, тема настолько никому неинтересна, что ты просишь за неё проголосовать? Типа накрутки?
|
|||
10
Ненавижу 1С
гуру
01.08.25
✎
15:42
|
идея со схемой прекрасна - смотрите LINQ в .Net. Только вот реализация - убогая лажа, так что - нет
|
|||
11
Asmody
01.08.25
✎
15:43
|
(9) там на ИСе 100500
они (авторы) думают, что собирают голоса, а Доржи знает, что ему делают бесплатную рекламу. |
|||
12
ангел
01.08.25
✎
15:52
|
(11)
✓ задача автора - ширее заинтересовать публику своей темой в разных местах. (c) - Тут полностью согласен. ✓ они (авторы) думают, что собирают голоса, а Доржи знает, что ему делают бесплатную рекламу. - ну авторы думают прежде всего о том чтобы попробовать реализовать себя в качестве докладчика :) Обратная сторона, думаю, мало волнует авторов докладов ) |
|||
13
Fish
гуру
01.08.25
✎
16:06
|
(11) А, т.е. там некий конкурс среди желающих выступить - выступят только какая-то часть, кто соберёт больше голосов, а остальные в пролёте?
Прикольная схема для бесплатной рекламы :))) |
|||
14
Рамиль Маугли
01.08.25
✎
16:52
|
ТС что скажешь относительно (10)
Щупал этот самый LINQ в .Net. ? |
|||
15
ангел
01.08.25
✎
17:42
|
(14) Вопрос интересный :) К сожалению .net совершенно другая платформа (технология). Ради интереса даже загуглил тему LINQ.
|
|||
16
Рамиль Маугли
01.08.25
✎
18:09
|
(13) Шикарная. Они и рекламу получают и докладчиков. 1С сделана не ими и материалы на сайте генерят пользователи. Схема топчик
|
|||
17
palsergeich
01.08.25
✎
18:18
|
(16) 50% доли инфостарта у 1с еще хз с какого года)
так что это перекладывание котлеты денег из кармана в карман и вендор тут весьма заинтересованное лицо) |
|||
18
Рамиль Маугли
01.08.25
✎
18:36
|
(17) Тоже верно)
|
|||
19
d4rkmesa
01.08.25
✎
23:21
|
Ого, как ТС-у навтыкали, насыпали в панамку. Но я бы не расстраивался на его месте, а воспринял как стресс-тест и возможность подготовиться на каверзным вопросам.
Согласен с (8), СхемаЗапросов - это и есть визуальный конструктор запросов на УФ, чем он и плох (минусы давно обсудили, в том числе тут). Плохое быстродействие (перегонка текста запроса в схему и обратно занимает что-то вроде секунды, на 8.3.21 проверял), поэтому в транзакции я бы этот объект не использовал. Ужасный программный интерфейс. Даже в ЗУП-е, хотя есть несколько процедур с его использованием, по большей части запросы собираются из коллекций в текст. Тем не менее, в ERP порядка 300 мест использования ПолучитьТекстЗапроса(), очевидно, вендор активно пользуется сборкой запросов с помощью схемы. |
|||
20
ангел
02.08.25
✎
10:22
|
(19)
✓ Ого, как ТС-у навтыкали, насыпали в панамку. Но я бы не расстраивался на его месте, ...(с) - Готовился к худшему, поэтому пока нет повода грустить :) Разве что только по поводу низкой активности голосов от участников Мисты ) ✓ чем он и плох (минусы давно обсудили, в том числе тут) (с) - "даже на солнце есть пятна". Я не топлю за то что данный объект строенного языка является панацеей на все случаи жизни. Статический запрос как минимум глупо писать используя Схему запроса. Если же, например, нужно модифицировать запрос динамического списка формы в типовом решении то лучший способ для меня - Схема запроса в силу простоты обновления. Безусловно, этот объект не нужно слепо использовать и где надо и где не надо. В том числе о минусах тоже речь будет в докладе. Спасибо за Ваш комментарий :) |
|||
21
Asmody
02.08.25
✎
12:21
|
(20) "по поводу низкой активности голосов от участников Мисты" - это нормально. Мы это "болото с крокодилами" специально держим для самых интровертов и мизантропов. Сожрать, обосрать и нахуй послать - это пожалуйста. А если помочь кому - приходите 20 лет назад, напомогались уже.
|
|||
22
OldCondom
02.08.25
✎
14:20
|
Один инфофест (года 2 назад кажется, спб), варился в этом. Шляпа полная. Там любое говно можно было пропихнуть, лишь бы норм протеже был. Голоса, накрутки - ну разумеется. Финальный собес - курам на смех, двум интервьюверам лапши понавешал: вы приняты!
|
|||
23
Злопчинский
02.08.25
✎
14:35
|
(22) в итоге на конференции - людям-то нравится...
|
|||
24
Злопчинский
02.08.25
✎
14:35
|
(21) судя по активности на форуме - интроверты и мизантропы вымирают... ;-)
|
|||
25
OldCondom
02.08.25
✎
14:39
|
(23) увы, там тупо все бухают) Но самордкт есть, интересные темы есть. У нас парень аналитик толкал речь в главном зале про свертку базы на гигаразмерах - любо дорого было слушать. Хотя, мог бы оформить отдельной темой /разработкой и грести бабло)
|
|||
26
Злопчинский
02.08.25
✎
15:36
|
(25) бухают/небухают : но народу каждый год достаточно. Значит востребовано и интересно.
|
|||
27
Злопчинский
02.08.25
✎
15:40
|
Я как о на одном из фестов инфостартовских на вип-ужине - как ты говоришь - где все бухают, за два часа наслушался полезного и интересного чуть ли не больше чем за день конференции.
|
|||
28
d4rkmesa
02.08.25
✎
15:41
|
(25) Сейчас молодежь редко бухает, боятся заскуфиться.
|
|||
29
Asmody
02.08.25
✎
18:17
|
(27) да наслушаешься там с удовольствием.
Только принципиально ничего не меняется. У вендора свои взгляды на жизнь и своих планов громадьё. Поэтому, на конференциях можете обговорится, кушать потом придётся что они из себя выдавят. |
|||
30
palsergeich
02.08.25
✎
18:28
|
(2) вот кстати да, пересчет графа с удалениями недоступного при любом действии - бесит аж не могу
|
|||
31
TormozIT
гуру
03.08.25
✎
07:20
|
(0) Обязательно расскажи в докладе о минусах:
- как зависит цена (задержка) применения схемы запроса от размера запроса, например добавить одно слово в огромный текст запроса - в каких случаях схема ругнется на запрос, хотя он без проблем выполняется - в каких случаях схема запроса вставляет некорректные куски в запрос Мои баги по схеме запроса (все актуальны в 8.3.27) https://www.hostedredmine.com/projects/platform1c/search?utf8=%E2%9C%93&q=%D1%81%D1%85%D0%B5%D0%BC+%D0%B7%D0%B0%D0%BF%D1%80%D0%BE%D1%81&scope=&all_words=&all_words=1&titles_only=&titles_only=1&issues=1&attachments=1&options=0&commit=%D0%9F%D0%BE%D0%B8%D1%81%D0%BA |
|||
32
TormozIT
гуру
03.08.25
✎
09:47
|
В большинстве случаев для программной правки текста запроса там, где не нужна универсальность, я применяю подтверждающий СтрЗаменить:
Функция СтрЗаменитьЛкс(Знач ГдеЗаменять, Знач ЧтоЗаменять, Знач НаЧтоЗаменять, Знач ОставитьЧтоЗаменятьСлева = Ложь, Знач ВыброситьИсключениеПриОтсутствии = Истина) Экспорт Результат = ГдеЗаменять; Если ЧтоЗаменять = НаЧтоЗаменять Тогда Возврат Результат; КонецЕсли; Если ОставитьЧтоЗаменятьСлева Тогда НаЧтоЗаменять = ЧтоЗаменять + НаЧтоЗаменять; КонецЕсли; Результат = СтрЗаменить(Результат, ЧтоЗаменять, НаЧтоЗаменять); Если ВыброситьИсключениеПриОтсутствии И Результат = ГдеЗаменять Тогда ВызватьИсключение "Шаблонная строка """ + ЧтоЗаменять + """ не найдена в тексте"; КонецЕсли; Возврат Результат; КонецФункции |
|||
33
ангел
04.08.25
✎
11:07
|
(32)
✓ "В большинстве случаев для программной правки текста запроса там, где не нужна универсальность, я применяю подтверждающий СтрЗаменить" (с) - Хотелось бы сказать что Схема запроса единственно правильное решение, ... но это будет неправдой :) . В простых случаях безусловно лучше подходит старый-добрый СтрЗаменить. Не всегда целесообразно стрелять из пушки по воробьям ) |
|||
34
rsv
04.08.25
✎
11:19
|
(0) … просто очередная обьектная обертка для запроса.
Как и xdto для строки xml. |
|||
35
rsv
04.08.25
✎
11:31
|
Начнут копать производительность или в дебрях объектной сборки ляжет что-то - без обычной консоли запросов и строки запроса не обойтись
|
|||
36
dmt
04.08.25
✎
11:43
|
(10) седня такое видел
1С Предприятие. Fluent запросы https://github.com/zerobig/fluent-request-schema-1c пример Функция ТаблицаАдресныхСокращений(НаименованияАдресныхОбъектов) Запрос = СхЗапрос.НовыйЗапрос("РегистрСведений.УровниСокращенийАдресныхСведений") .Выбрать("Значение КАК Наименование, Сокращение") .Сгруппировать("Значение, Сокращение") .Упорядочить("Наименование"); Если ТипЗнч(НаименованияАдресныхОбъектов) = Тип("Массив") И НаименованияАдресныхОбъектов.Количество() > 0 Тогда Запрос = Запрос .Где(СхЗапрос.Предикат() .Реквизит("Значение").В(НаименованияАдресныхОбъектов)); КонецЕсли; Возврат Запрос.ВТаблицуЗначений(); КонецФункции |
|||
37
ангел
04.08.25
✎
11:50
|
(36)
Запрос = СхЗапрос.НовыйЗапрос("РегистрСведений.УровниСокращенийАдресныхСведений") .Выбрать("Значение КАК Наименование, Сокращение") .Сгруппировать("Значение, Сокращение") .Упорядочить("Наименование"); --------------------------------------------------- Напоминает "цепочку вызовов" в java script :) Нестандартный подход, но тоже имеет право на жизнь )) |
|||
38
scanduta
04.08.25
✎
14:06
|
(0) Вот у меня вопрос - по какой причине вы эти доклады делаете? за это хорошо платят? или иная цель? (может просто заняться нечем больше )
|
|||
39
Волшебник
04.08.25
✎
20:24
|
(36) Он там увидел монструозную функцию
Функция ТаблицаАдресныхСокращений(НаименованияАдресныхОбъектов) Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | УровниСокращенийАдресныхСведений.Значение КАК Наименование, | УровниСокращенийАдресныхСведений.Сокращение КАК Сокращение |ИЗ | РегистрСведений.УровниСокращенийАдресныхСведений КАК УровниСокращенийАдресныхСведений |ГДЕ | &Условие | |СГРУППИРОВАТЬ ПО | УровниСокращенийАдресныхСведений.Значение, | УровниСокращенийАдресныхСведений.Сокращение | |УПОРЯДОЧИТЬ ПО | Наименование"; Если ТипЗнч(НаименованияАдресныхОбъектов) = Тип("Массив") И НаименованияАдресныхОбъектов.Количество() > 0 Тогда Условие = "ИСТИНА"; Иначе Условие = "УровниСокращенийАдресныхСведений.Значение В(&АдресныеСокращения)"; Запрос.УстановитьПараметр("АдресныеСокращения", НаименованияАдресныхОбъектов); КонецЕсли; Запрос.Текст = СтрЗаменить(Запрос.Текст, "&Условие", Условие); Возврат Запрос.Выполнить().Выгрузить(); КонецФункции я бы её переписал так: Функция ТаблицаАдресныхСокращений(АдресныеСокращения=Неопределено) Запрос = Новый Запрос("ВЫБРАТЬ РАЗЛИЧНЫЕ | У.Значение КАК Наименование, | У.Сокращение КАК Сокращение |ИЗ РегистрСведений.УровниСокращенийАдресныхСведений КАК У |ГДЕ (&ВсеСокращения ИЛИ У.Значение В(&АдресныеСокращения)) |УПОРЯДОЧИТЬ ПО Наименование"); Запрос.УстановитьПараметр("АдресныеСокращения", АдресныеСокращения); Запрос.УстановитьПараметр("ВсеСокращения", ЗначениеЗаполнено(АдресныеСокращения)); Возврат Запрос.Выполнить().Выгрузить(); КонецФункции 11 строчек при той же функциональности, без строковой замены &Условие А у него 16 строк на новом языке! И ещё кучу говна надо прикрутить, типа внешних компонент для регулярок. |
|||
40
unenu
04.08.25
✎
12:01
|
Объектная модель запросов требует большего времени на понимание логики запроса.
Посему и востребована теми, кому свое время девать некуда, иными словами - блажь. |
|||
41
unenu
04.08.25
✎
12:03
|
(38) Площадка для презентации скорее. Там бывают крупные работодатели или их охотники за головами.
|
|||
42
Fish
гуру
04.08.25
✎
12:09
|
(41) Т.е. безработные докладчики могут найти себе работу?
|
|||
43
ангел
04.08.25
✎
12:11
|
(38)
✓ "за это хорошо платят ? или иная цель ?" (с) - тянет сказать что будет квартира в СПб с видом на Дворцовую площать, .... но это будет не правда :) ✓ "может просто заняться нечем больше" - это ближе к истине :) ибо сегодня первый день отпуска и в эту дождливую московскую погоду сижу в поисках "резервов" для участия в этой "предвыборной гонке". Спасибо всем кто откликнулся ) |
|||
44
ангел
04.08.25
✎
12:25
|
(42) Безработные докладчики в поисках работы ? Вряд ли смогут выдержать "предвыборную гонку".....
Всякие чаты, форумы это примерно +10-15 голосов к "карме" :) Основная доля голосов - голоса коллег с текущего места работы. |
|||
45
Fish
гуру
04.08.25
✎
12:30
|
(44) Так вот и я удивился, зачем докладчикам "крупные работодатели или их охотники за головами.", если они не ищут работу.
|
|||
46
ангел
04.08.25
✎
12:38
|
(45) Открою "большую" тайну за "завесой" :)
Например, ты работаешь в ИТ-компании к которой заказчики обращаются за рабработкой (участием в проектах). В этой компании есть хорошие ИТ-специалисты, для которых выступление на конференции это "+" в копилку известности и популярности в кругах 1С... |
|||
47
Fish
гуру
04.08.25
✎
12:43
|
(46) "в копилку известности и популярности в кругах 1С" - Наверное, главное, чтобы эта известность не превратилась в "печальную" :)))
|
|||
48
Ненавижу 1С
гуру
04.08.25
✎
12:46
|
(36) отсутствие нормальной типизации и работа с текстом все убивает
|
|||
49
ангел
04.08.25
✎
12:52
|
(48) "отсутствие нормальной типизации" так вот за что ты ненавидишь 1С 🤦 ? За динамическую типизацию ? ))
А что а контексте 1С ты называешь "нормальной" типизацией ? |
|||
50
rsv
04.08.25
✎
13:34
|
В принципе на перспективу код конфигураций можно и не закрывать. Пару схем … да еще в другой очередной схеме и ….. все .:)
|
|||
51
AlexKimp
04.08.25
✎
13:38
|
(36) прикольно. закос под джавовскую criteria. Только вот в чем дело. Одна из целей - избавление кода от текстов запросов - допустим, достигнута. а вот главная цель - валидация запроса на стадии компиляции?
|
|||
52
Garykom
гуру
04.08.25
✎
14:08
|
(51) В 1С же нет понятия компиляции (по сути)
Есть только некая трансляция в объектный код |
|||
53
Волшебник
04.08.25
✎
19:38
|
(52) Это тоже компиляция.
|
|||
54
PR
04.08.25
✎
20:58
|
(52) Ты точно хорошо понимаешь, что такое трансляция, а что компиляция?
|
|||
55
Волшебник
04.08.25
✎
21:01
|
(54) Тут скорее так: есть трансляция, которая делится на интерпретацию (построчно) и компиляцию (по файлам).
Garykom пытался донести до нас термин "интерпретация", ИМХО. Но нет, в 1С компиляция. |
|||
56
PR
04.08.25
✎
21:12
|
(55) Трансляция — это когда берется код и в процессе выполнения на лету преобразуется в машинный код, скорее всего в несколько этапов, конечно же
Компиляция — это когда берется код, преобразуется в какой-то более простой вариант кода, возможно даже (но не обязательно) в машинный код и потом уже в процессе выполнения используется именно преобразованный вариант И да, преобразованный вариант также может оказаться не готовыми машинными кодами и также может в процессе выполнения на лету транслироваться в машинные коды В этом случае получается, что код сначала компилировался, а потом уже в процессе выполнения на лету транслируется Теперь о 1С Если в 1С не два различных варианта трансляции, отдельно для исходного кода, отдельно для байткода, а исходный код всегда сначала преобразуется в байткод, то тогда преобразование в байткод не в процессе выполнения на лету — это конечно же компиляция И тогда один из примеров компиляции — это исключение модулей поставки, когда исходных модулей нет, а байткод есть |
|||
57
Волшебник
04.08.25
✎
21:15
|
(56) Вы тоже спутали термины трансляция, интерпретация и компиляция. Трансляция включает интерпретацию и компиляцию (включая в промежуточный код).
В Java есть ещё одна трансляция из промежуточного кода в нативный для конкретного процессора, она называется "компиляция на лету" |
|||
58
Волшебник
04.08.25
✎
21:30
|
преобразование в байткод - это компиляция
далее я уверен, в 1С идёт интерпретация |
|||
59
PR
04.08.25
✎
21:28
|
(57) Да, почитал немного, освежил знания 25-летней давности, напутал что-то :))
Спасибо |
|||
60
Волшебник
04.08.25
✎
21:33
|
Промежуточный код 1С содержит номер строки, чтобы ошибка была более адресной и понятной для программиста 1С.
|
|||
61
Ненавижу 1С
гуру
05.08.25
✎
09:12
|
(49) в данном контексте:
СхЗапрос.НовыйЗапрос("РегистрСведений.УровниСокращенийАдресныхСведений") .Выбрать("Значение КАК Наименование, Сокращение") .Сгруппировать("Значение, Сокращение") .Упорядочить("Наименование"); в каждом методе можно передавать в параметры абсолютную ерунду и мы получим рантайм-ошибку в LINQ epxression такое не пройдет |
|||
62
ангел
05.08.25
✎
11:47
|
(61)
✓ в каждом методе можно передавать в параметры абсолютную ерунду - так это не только проблема конкретной реализаци (обертки в виде общего модуля СхЗапрос) а 1С в целом :) |
|||
63
ангел
05.08.25
✎
11:49
|
✓ СхЗапрос.НовыйЗапрос("РегистрСведений.УровниСокращенийАдресныхСведений")
-------------------------------- Кстати, для информации, в 1С ERP УХ существует своя "обёртка" для СхемыЗапроса. Общий модуль СхемыЗапроса. Но пока очень редко приходится им пользоваться. |
|||
64
Гипервизор
05.08.25
✎
12:10
|
(63) Так и в ERP есть общий модуль СхемыЗапросов.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |