Имя: Пароль:
1C
 
Можно ли программно генерировать текст запроса без боли
,
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) когда разберешься, то точно проще и понятнее ))