Имя: Пароль:
1C
1С v8
Объектные модели запросов
0 _Дайвер_
 
12.09.19
15:29
Расскажите кто использовал такую модель для написания запросов с кучей алгоритмических условий.
Если по старинке то запрос становится не читабелен совсем из за конструкций ДобавитьСтрокуВЗапрос(); Если Истина Тогда Иначе КонецЕсли, Для каждого "" ИЗ "" Цикл и т.д.
1 shuhard
 
12.09.19
15:31
(0) таких нет
2 strange2007
 
12.09.19
15:33
Запросы всегда стараюсь писать так, что бы можно было открыть стандартным конструктором, ибо лентяй и не сторонник разбора сложных конструкций.
А что такое "объектная модель запроса"?
3 piter3
 
12.09.19
15:34
Собрать текст запроса что ли?
4 novichok79
 
12.09.19
15:35
5 _Дайвер_
 
12.09.19
15:36
6 novichok79
 
12.09.19
15:37
так обычно пишу через подстановку параметров в текст запроса, чтобы конструктор работал, затем заменяю параметры в коде через СтрЗаменить.
за рваные запросы без явной на то причины нужно кастрировать имхо.
7 novichok79
 
12.09.19
15:37
есть еще построительзапроса, его можно заюзать.
8 strange2007
 
12.09.19
15:40
Так я значит объектную модель запросов использую! О как!

Тады свои "костыли" тоже вставлю.

Например, ну очень долгий запрос и иногда надо в первом пакете отобрать по сотруднику. Можно СтрЗаменить, но я делаю так
Выбор Когда &СотрудникЕсть Тогда
    Сотрудник = &Сотрудник
Иначе
    Истина
Конец

Я знаю, что за такое могут побить из-за эффективности. Но оно читаемо и можно быстро в консольку перетащить
9 aleks_default
 
12.09.19
15:44
В ERP вобще считай все запросы на "объектной модели"
10 aleks_default
 
12.09.19
15:45
Особенно пакетные
11 strange2007
 
12.09.19
15:46
В ЗУПе запросы, просто слёзы. Иногда что бы просто отладить запросик, приходится пол дня копаться в километровых вложенностях кода. Прям аж вообще
12 1сник123
 
12.09.19
15:49
(0) только сейчас узнал про это((  круть!
13 _Дайвер_
 
12.09.19
15:50
(10) Ну если они закоментированы и разбиты по блокам, то в итоге удобно считаю редактировать логику запроса, или есть какие-то сложности? просто мне не приходилось сталкиваться в работе с ними, но есть крутая штука при формировании запроса ПолучитьТекстЗапроса(), который уже анализировать и если что править
14 _Дайвер_
 
12.09.19
15:54
(8) Это не объектная модель запроса))) это просто удобно что конструктор хавает такой запрос, а не СтрЗаменить()
15 singlych
 
12.09.19
15:54
Объектная модель хреново подходит для собирания текста запроса с нуля. Можно, но очень нечитабельно получается. Она скорее для того, чтобы при надобности подправить то, что есть.

А еще объектная модель не всегда корректно работает с условиями компоновки и может запороть отчет.
16 aleks_default
 
12.09.19
15:56
Сложность в том ты никогда не поймешь логику общего запроса, пока в отладке его не сформируешь. А потом когда получишь полный текст общего запроса и найдешь ошибку, то хрен потом разберешься как найти тот блок который нужно исправить.
17 aleks_default
 
12.09.19
15:57
Хотя бы комментарии к тексту они стали добавлять, по ним можно найти...
18 unenu
 
12.09.19
16:06
(0)
- одна из самых неудачных технологий 1С в расчете на человека
- одна из самых удачных технологий 1С в расчете на бота.
19 _Дайвер_
 
12.09.19
16:13
(17) ну в таком варианте считаю схема запроса адекватная и читабельная

//Создание схемы запроса
СхемаЗапроса = Новый СхемаЗапроса;
ЗапросВыбораИзИБ = СхемаЗапроса.ПакетЗапросов[0];
//Установка свойств запроса
ЗапросВыбораИзИБ.ТаблицаДляПомещения = "ТаблицаОбороты";
ЗапросВыбораИзИБ.ВыбиратьРазрешенные = Истина;
//Добавляем операторы выбора первого запроса пакета
ОператорВыбораЗакупок = ЗапросВыбораИзИБ.Операторы[0];
ИсточникНоменклатура = ОператорВыбораЗакупок.Источники.Добавить("Справочник.Номенклатура","Товары");
//Добавляем запрос выбора из регистра закупок
ИсточникЗакупки = ОператорВыбораЗакупок.Источники.Добавить("РегистрНакопления.Закупки.Обороты","Закупки");
ИсточникЗакупки.Источник.Параметры[0].Выражение = Новый ВыражениеСхемыЗапроса("&Начало") ;
ИсточникЗакупки.Источник.Параметры[1].Выражение = Новый ВыражениеСхемыЗапроса("&Окончание") ;
ИсточникЗакупки.Источник.Параметры[2].Выражение = Новый ВыражениеСхемыЗапроса("Месяц") ;
//Меняем тип соединения
ИсточникЗакупки.Соединения[0].ТипСоединения = ТипСоединенияСхемыЗапроса.ПравоеВнешнее;
//Указываем выбираемые поля
ОператорВыбораЗакупок.ВыбираемыеПоля.Добавить("Товары.Ссылка");
ОператорВыбораЗакупок.ВыбираемыеПоля.Добавить("Закупки.Период");
ОператорВыбораЗакупок.ВыбираемыеПоля.Добавить("ЕСТЬNULL(Закупки.СуммаОборот, 0)");
ОператорВыбораЗакупок.ВыбираемыеПоля.Добавить("0");
//Указываем спевдонимы для выбранных полей
ЗапросВыбораИзИБ.Колонки[0].Псевдоним = "Номенклатура";
ЗапросВыбораИзИБ.Колонки[1].Псевдоним = "Период";
ЗапросВыбораИзИБ.Колонки[2].Псевдоним = "СуммаЗакупок";
ЗапросВыбораИзИБ.Колонки[3].Псевдоним = "СуммаПродаж";
//Добавляем отбор
ОператорВыбораЗакупок.Отбор.Добавить("НЕ Товары.ЭтоГруппа");
20 aleks_default
 
12.09.19
16:23
Ну считай... До первого сложного запроса
21 ам794123
 
12.09.19
16:49
(13) Круто если была бы обратная функция - получить из текста запроса схему запроса.
22 Ботаник Гарден Меран
 
12.09.19
17:39
(21)
СхемаЗапроса.УстановитьТекстЗапроса ?
Выросло поколение, которому даже гуглить лень.
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.