• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Помогите правильно составить запрос

  • Автор темы Guest
  • Дата начала
G

Guest

Доброе время суток.

Не могу сделать запрос. Заранее спасибо

В документе есть табличная часть в неё товары которые входят в разные групп.
Я их все упорядочил определил суммы групп на который взят товар в документе
пример
канцелярии - 100р
Прасходников 1500р

И все это дело записал в ТЗ

теперь не могу сообразить как теперь сделать что бы брать наименование группы из ТЗ и подставлять в запрос в часть условия и что бы по регистру(обороты) выдовал сумму.

вот как делаю

ТабЗнач.ВыбратьСтроки();
Пока ТабЗнач.ПолучитьСтроку()=1 Цикл
//Создание объекта типа Запрос
Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Период с (НачКвартала(ТекущаяДата()));
|Наименование = Регистр.рег_групп_тов.группа_товара.Наименование;
|сумма = Регистр.рег_групп_тов.сумма;
|Функция суммаСумма = Сумма(сумма);
|Группировка Наименование без упорядочивания;
|Условие(Наименование = строка(ТабЗнач.ГруппаТовараДок));
|"//}}ЗАПРОС
;
// Если ошибка в запросе, то выход из процедуры
Если Запрос.Выполнить(ТекстЗапроса) = 0 Тогда
Возврат;
КонецЕсли;
 
V

vitfil

1. Зачем фигачить запросы в цикле?
2. В ТЗ вставляйте не наименования групп, а сами группы. Потом выгрузите колонку с группами в список значений и условие формируйте по списку значений.
Код:
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Период с (НачКвартала(ТекущаяДата()));
|ГруппаТовара = Регистр.рег_групп_тов.группа_товара;
|сумма = Регистр.рег_групп_тов.сумма;
|Функция суммаСумма = Сумма(сумма);
|Группировка ГруппаТовара упорядочить по ГруппаТовара.Наименование;
|Условие(ГруппаТовара в СписокГрупп);
|"//}}ЗАПРОС
 
G

Guest

1.у меня в табличной части может несколько товаров из разных групп и мне их надо подсчитать потому что надо контролировать суммы по группам товара
2. в регистр пишится группа и сумма по группе. А зачем в цикле сначало что бы брал первое наименование группы из ТЗ проверял по условию потом брал второе и тд.

Большое спасибо твой скриптик очень помог (натолкнул на правильную мысль)
Во как сделал

Запрос = СоздатьОбъект("Запрос");
ТекстЗапроса =
"//{{ЗАПРОС(Сформировать)
|Период с (НачКвартала(ТекущаяДата()));
|Наименование = Регистр.рег_групп_тов.группа_товара;
|сумма = Регистр.рег_групп_тов.сумма;
|Функция суммаСумма = Сумма(сумма);
|Группировка Наименование без упорядочить;
|Условие(Наименование = ТабЗнач.ГруппаТовараДок);
 
V

vitfil

Мать моя женщина... А если в документе будет 300 товаров? А если еще и пользователей будет по 50 человек. Сервак, спасайся, запросы атакуют!
 
G

Guest

ради интереса
что ты предлогаеш
 
E

ech

Если честно, изначально вопроса твоего не понял...либо я тугой, либо ты объясняешь не совсем понятно.

Но составленый запрос в цикле ТЗ это конечно круто!
 
G

Guest

то есть вы предлогаете сделапть все с помошью СЗ
Думаете будет быстрей работать
 
K

kaa

в отладчике есть такая штука как замер производительности, сделайте два варианта и проверьте :rolleyes:
 
V

vbs

практика без теории слепа, теория без практики беспредметна (с)
 
V

vitfil

А на пракике лично проверяете?
Ну разумеется. Но в данном случае можно и не проверять. Особенно, если знать, что происходит с запросом на сервере, поймете, что выборка данных одним запросом всегда кошерней, нежели кидать в цикле запросы и получать порциями. С одной оговоркой - следует учитывать размер запроса и количество возвращаемых данных.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!