Имя: Пароль:
1C
1C 7.7
v7: Тупая задача подскажите с запросом
0 GStiv
 
05.07.12
23:18
В ТИС нужно сделать отчет по продажам со следующим группировками
в строках контрагенты из выбранной папки, в колонках номенклатура из списка значений на форме в значениях количество
В запросе добавляю
Для а=1 по списокТоваров.РазмерСписка() Цикл
   номенклатура[а]=СписокТоваров.ПолучитьЗначение(а);
       ТекстЗапроса =ТекстЗапроса +"
   |Функция КоличествоСумма"+а+" = Сумма(Количество) когда(Номенклатура=Номенклатура"+а+");";
   КонецЦикла;

В итоге в тексте запроса вроде все верно
Функция КоличествоСумма1 = Сумма(Количество) когда(Номенклатура=Номенклатура1);
Функция КоличествоСумма2 = Сумма(Количество) когда(Номенклатура=Номенклатура2);
Функция КоличествоСумма3 = Сумма(Количество) когда(Номенклатура=Номенклатура3);

а при выполнении
НОМЕНКЛАТУРА1<<?>>
Переменная не определена (НОМЕНКЛАТУРА1) итд, как правильнее разрулить выполнение
1 МихаилМ
 
05.07.12
23:34
|Функция КоличествоСумма"+а+" = Сумма(Количество) когда(Номенклатура=Номенклатура["+а+"]);";
2 GStiv
 
05.07.12
23:42
НОменклатура<<?>>[1]  
Переменная не определенна как массив
Хотя в начале идет определение
Перем Номенклатура[10]
3 Cthulhu
 
05.07.12
23:44
анахрена столько функций в текст запроса пхать?.. не боисся, что он от удовольствия лопнет?..
4 Cthulhu
 
05.07.12
23:44
ЗЫ: и - нет, это не задача тупая.
5 nicxxx
 
05.07.12
23:47
номенклатура[1] и номенклатура1 - это пять:)))
6 GStiv
 
05.07.12
23:51
Я так порнимаю быстрее будет сделать через обход по группировкам по первой ВевестиСекцию, по второй присоеденить секцию.
(5) не смейтесь с 6 утра на работе с 17 лопатой выкапывал канализацию (строю дом) как то уже с трудом соображаю
7 nicxxx
 
06.07.12
00:02
короче массив не прокатит, надо перед запросом определить столько переменных Номенклатура1, Номенклатура2.... и т.д., сколько требуется использовать в запросе. а вобще какой то странный алгоритм, не проще ли написать Функция КоличествоСумма=Сумма(Количество), а затем одно условие на весь список товаров: Условие (Номенклатура в СписокТоваров); ?
8 GStiv
 
06.07.12
00:06
так уже и сделал плюс добавил группировки и в процессе обхода по группировкам через присоеденитьСекцию, а что бы было по очереди "все вошедшие в запрос"
9 Азат
 
06.07.12
00:07
имха - лучше просто сделать запрос и потом его в ТЗ упихать так, как надо...

Сделать ТЗ вида: Контрагент Кол_1 Кол_2 .... Кол_Н

делаешь тупа запрос, который возвращает тебе группировки Контрагент, Номенклатуру и функцию - КоличествоСумма...
10 Азат
 
06.07.12
00:07
идешь по запросу, добавляешь строки в ТЗ, а потом ее хоп и сворачиваешь и получаешь профит
11 nicxxx
 
06.07.12
00:09
зачем этот огород? автор уже сделал как проще. а по твоему способу еще будет тратиться время на заполнение таблицы
12 Азат
 
06.07.12
00:10
завтра добавится номенклатурная позиция и пи????да рулю?:
13 nicxxx
 
06.07.12
00:14
Все вошедшие в запрос и ПрисоединитьСекцию как раз такие ситуации нормально отрабатывают
14 GStiv
 
06.07.12
00:15
(12) почему так считаете в запросе
Группировка Номенклатура без групп все ВошедшиеВЗапрос;
в итоге если позиция не проходила у контрагента там пустая строка в функции и таблица получается структурированная не зависиммо от количества номенклатуры в условии (список значений).
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс