|
Можно ли программно генерировать текст запроса без боли | ☑ | ||
---|---|---|---|---|
0
ssalikoff
13.03.23
✎
15:25
|
В 1С тяжело анализировать и отлаживать код, в котором динамически генерируется текст запроса к базе данных.
В 1С есть объектная модель для текста запроса, однако ни в одной типовой нет примеров её использования (я не видел). Интересно, а в других средах, других языках программирования такие же проблемы? У кого есть опыт, расскажите, какие фишки и приёмы имеются вне мира 1С |
|||
1
lubitelxml
13.03.23
✎
15:30
|
(0) А в чем боль то? Отладчиком смотришь какой запрос получился и анализируешь. Конструктор вроде удобный, чего не хватает?
|
|||
2
Chai Nic
13.03.23
✎
15:30
|
(0) А смысл? Сам по себе SQL это достаточно высокоуровневая модель для обращения к данным. Лепить запрос, используя некий нестандартный механизм, который надо изучать специально, при этом он не даст никакого выигрыша в поддерживаемости кода и в скорости разработки - зачем?
|
|||
3
OldCondom
13.03.23
✎
15:42
|
"В 1С есть объектная модель для текста запроса". Можно подробнее?
А то мне синтаксис говорит ТекстЗапроса (QueryText) Использование: Чтение и запись. Описание: Тип: Строка. |
|||
4
НафНаф
13.03.23
✎
15:43
|
(3) СхемаЗапроса
|
|||
5
НафНаф
13.03.23
✎
15:44
|
(0) В C# есть LINQ - штука гораздо приятнее
|
|||
6
PLUT
13.03.23
✎
15:45
|
(0) вы про это?
https://infostart.ru/1c/articles/307045/ старость от 2014 года :) https://wonderland.v8.1c.ru/blog/upravlyaemyy-konstruktor-zaprosa-i-obektnaya-model-skhemy-zaprosa/?sphrase_id=267663 в ERP в пофигурации, например, поиском "СхемаЗапроса" - находится овердофига |
|||
7
PLUT
13.03.23
✎
15:48
|
(6) и в этой старости даже написали - для зачем
"Редактирование текста запроса с помощью объектной модели позволяет вам проще и понятнее модифицировать имеющиеся запросы. Или даже создавать их во встроенном языке «с нуля». А затем просто получать готовый текст запроса из схемы методом ПолучитьТекстЗапроса()." |
|||
8
PLUT
13.03.23
✎
15:52
|
(0) > В 1С есть объектная модель для текста запроса, однако ни в одной типовой нет примеров её использования (я не видел).
а ERP можно считать типовой? в не самой свежей 2.5.8 найдено 1337 вхождений "СхемаЗапроса" |
|||
9
unenu
13.03.23
✎
15:55
|
(0) глобальный поиск в модулях типовых по тегу "СхемаЗапроса" даст примеры.
Правда, в первое на что кликнул увидел гибрид с костылями, где и схема и текст запроса, причем текст запроса лепят с соединением строк через "+", что есть кощчунством. |
|||
10
PLUT
13.03.23
✎
16:02
|
(1) в типовых уже такие запросы, которые в окне отладчика целиком не помещаются :) по кнопочке F2 в отдельном окне показать - не получится текст запроса целиком скопипастить )))
приходится творчески подходить к проблеме. ну про МВТ отдельная "пестня". слава яйцам зачеркнуто разработчикам - добавили заклинание МВТ.Таблицы[ИмяТаблицы].ПолучитьДанные().Выгрузить() - которая выгружает нужную временную в таблицу значений |
|||
11
magicSan
13.03.23
✎
16:40
|
у 1С конструкторы запросов всегда были намного впереди.
|
|||
12
unregistered
13.03.23
✎
16:42
|
(0) ИМХО, нет особых вариантов.
Либо динамическое собирание текста из строк-кусков. Либо объектная модель. Через схему запроса или построитель запроса. Наихудший вариант - когда пытаются скрестить одно с другим. Если вопрос именно в отладке, то тут тоже особых вариантов нет - приходится кушать то, что дают. Когда свой код пишешь - можешь сам выбирать каким путём идти. Написать зарос для получения всего и вся и потом возиться с результатом запроса, убирая/игнорируя лишнее. Или долго париться с текстом запроса, но зато сразу получить только то, что нужно. Когда разбираешь чужой код - выбора особого нет. >> лепят с соединением строк через "+", что есть кощунство. Как будто что-то типа СтрЗаменить(ТекстЗапроса, "#УсловиеСоединения", ТекстУсовияСоединения) намного лучше... Особенно когда ТекстУсовияСоединения родилось после многчисленных Если ИначеЕсли Иначе КонецЕсли и имеет размер от пустой строки до строки размером с пару листингов. |
|||
13
ssalikoff
13.03.23
✎
16:48
|
(12) Да, под болью я имел в виду разбор чужого кода, в том числе типового
Когда в макете один запрос, а исполяняется совершенно другое, пройдя множество трансформаций |
|||
14
polosov
13.03.23
✎
16:49
|
(13) Анальгина прими. Это нормально и легче не будет.
|
|||
15
lEvGl
гуру
13.03.23
✎
16:57
|
ну, динамический текст - это в принципе боль, хоть в какой среде разработки
еще в (1) сказали - остановился, посмотрел результат сборки текста и делаешь выводы, что еще |
|||
16
АгентБезопасной Нацио
13.03.23
✎
16:59
|
+(14) И помни: "АНАЛьгин, несмотря на своё название, принимается перорально"©
|
|||
17
lEvGl
гуру
13.03.23
✎
17:05
|
это ладно, был один грамотный специалист, так он текст объектного кода динамически генерил в строку и потом совал в Выполнить(), вот то веселье было после его ухода
|
|||
18
Сергиус
13.03.23
✎
17:09
|
(7)[позволяет вам проще и понятнее] - Забыли только объяснить еще, чем оно проще и понятнее)
|
|||
19
Fish
13.03.23
✎
17:17
|
(17) Всего один? Я знаю целую команду таких. И они делают свой документооборот :))))
|
|||
20
mikecool
13.03.23
✎
17:33
|
(18) когда разберешься, то точно проще и понятнее ))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |