Имя: Пароль:
1C
1C 7.7
v7: не получает следующее значение из запроса
,
0 manti
 
26.11.12
12:41
почему то возвращает  Запрос.Группировка(НомГруппировки)=0, как в 7 посмотреть что не так?

Процедура СформироватьТаблицу(Знач Запрос,Знач НомГруппировки )
   Отступ = "";
   Если НомГруппировки <> 1 Тогда
       
       Для КолСимвТабуляции = 1 По Номгруппировки Цикл
           Отступ = Отступ +" ";
       КонецЦикла;
   
   КонецЕсли;
   
   Пока Запрос.Группировка(НомГруппировки) = 1 Цикл
       Значение = Отступ + Запрос.ЗначениеУпорядочивания(номгруппировки);
       Выручка = Запрос.Выручка;
       Таб.ВывестиСекцию ("Строка");
       //Таб.ВывестиСекцию ("Итого");
       
       Если Номгруппировки <> колгруппировок Тогда
           СформироватьТаблицу(Запрос,НомГруппировки+1);
       КонецЕсли;
       
   КонецЦикла;

КонецПроцедуры                                

//*******************************************

Процедура Сформировать()
   
Таб = СоздатьОбъект("Таблица");

Таб.ИсходнаяТаблица("Таблица");
Таб.ВывестиСекцию ( "Шапка");  

Запрос = СоздатьОбъект ("Запрос");

ТекстЗапроса =
"//{{ЗАПРОС(Запрос1)
|Период с НачДата по КонДата;
|Номенклатура = Регистр.Прибыль.Номенклатура;
|Контрагент = Регистр.Прибыль.Контрагент;
|Сумма = Регистр.Прибыль.Сумма;
|Функция Прибыль = Сумма(Сумма);
|"//}}ЗАПРОС
;

КолГруппировок = 0;

//КоличествоСтрок()
   Для Ном=1 По СЗ.РазмерСписка() Цикл
       Если СЗ.Пометка(Ном)=1 Тогда
           ТекстЗапроса = ТекстЗапроса + "
           |группировка "+СЗ.ПолучитьЗначение(Ном)+";";
           КолГруппировок = КолГруппировок + 1;
       КонецЕсли;
КонецЦикла;

Если КолГруппировок=0 Тогда
   Предупреждение ("Нельзя построить отчет без группировок!",60);
   Возврат;
КонецЕсли;

Если Запрос.Выполнить (ТекстЗапроса)=0 Тогда
   Возврат;
КонецЕсли;


СформироватьТаблицу(Запрос, 1);

Таб.ТолькоПросмотр(1) ;
Таб.Опции(0,0,0,0) ;
Таб.Показать("Таблица") ;

КонецПроцедуры
1 zladenuw
 
26.11.12
12:42
покажи весь запрос. после добавление сз
2 ЧеловекДуши
 
26.11.12
12:43
(1) Все в коде...
Походу автор не выбрал галочку по списку :)
>>> Если СЗ.Пометка(Ном)=1 Тогда
3 Ёпрст
 
26.11.12
12:44
(0) Прибыль - регистр остатковый, или оборотный ?
4 manti
 
26.11.12
12:55
(3) оборотный
(1) все что есть выложил)
(2) галки поставил тоесть 2 группировки Номенклатура и Контрагент
5 miki
 
26.11.12
12:55
(3)А как прибыль может быть остатком?
6 zladenuw
 
26.11.12
12:56
(4) какой все.
Ты программно дополняешь запрос. вот покажи его после дополнения.
7 1Сергей
 
26.11.12
12:57
А зачем запрос передаёшь по значению?
8 miki
 
26.11.12
12:58
(7)+1
Только не запрос, а номер группировки
?
9 manti
 
26.11.12
12:58
(6)
Для Ном=1 По СЗ.РазмерСписка() Цикл
       Если СЗ.Пометка(Ном)=1 Тогда
           ТекстЗапроса = ТекстЗапроса + "
           |группировка "+СЗ.ПолучитьЗначение(Ном)+";";
           КолГруппировок = КолГруппировок + 1;
       КонецЕсли;
КонецЦикла;

програмно вроде тут
10 1Сергей
 
26.11.12
13:00
колгруппировок  не передаётся
11 zladenuw
 
26.11.12
13:00
(9). в отладчике перед запрос.выполнить. посмотри текст запроса. а еще лучше сюда
12 ЧеловекДуши
 
26.11.12
13:01
(9)Выведи так:

СООБЩИТЬ(""+ТекстЗапроса)

Если Запрос.Выполнить (ТекстЗапроса)=0 Тогда
   Возврат;
КонецЕсли;

И покажи нам текст полученного запроса :)
13 ЧеловекДуши
 
26.11.12
13:02
+ Хотя судя по запросу и коду, "А был ли мальчик?" :)
14 ЧеловекДуши
 
26.11.12
13:02
Может нет за заданный период данных...
15 1Сергей
 
26.11.12
13:03
У него "Если Номгруппировки <> колгруппировок Тогда" срабатывает, ибо колгруппировок он не передаёт. Т.е. по одной группировки пытается выводить вторую
16 1Сергей
 
26.11.12
13:04
(15)+ да, ещё и по значению передёт запрос. Каша получается
17 miki
 
26.11.12
13:04
(15)колгруппировок может быть глобальной для модуля
18 Voronve
 
26.11.12
13:05
Процедура СформироватьТаблицу(Знач Запрос,Знач НомГруппировки)
замени на
Процедура СформироватьТаблицу(Запрос,НомГруппировки)
19 1Сергей
 
26.11.12
13:08
(17) Не вижу ©
20 miki
 
26.11.12
13:17
(19)1с-ский транслятор написал бы, что
Если Номгруппировки <> колгруппировок <<?>>Тогда
{(...)}: Переменная не определена (колгруппировок)
21 Ёпрст
 
26.11.12
13:56
(5) у автора всё может быть
22 manti
 
26.11.12
14:19
(11),(12)
Значит по порядку запрос такой
ТекстЗапроса = "//{{ЗАПРОС(Запрос1) Период с НачДата по КонДата; Номенклатура = Регистр.Прибыль.Номенклатура; Контрагент = Регистр.Прибыль.Контрагент; Сумма = Регистр.Прибыль.Сумма; Функция Прибыль = Сумма(Сумма); группировка Номенклатура; группировка Ко"

(15) не работает уже в этом месте
Пока Запрос.Группировка(НомГруппировки) = 1
23 Ёпрст
 
26.11.12
14:19
(22)
Сообщить(НомГруппировки); ?
24 Ёпрст
 
26.11.12
14:20
+ Знач Запрос - это переделай на Запрос в параметрах функции
25 manti
 
26.11.12
14:21
группировка Ко"
странно почему то обрезает Контрагента, но даже если оставит одну группировку то не группировка не срабаотывает. Группировки выбираются из таблицы списка - контрагент и номенклатура соответственно
26 manti
 
26.11.12
14:21
(24) тоже так сделал - не помогло
27 1Сергей
 
26.11.12
14:22
(22) у тебя весь запрос закоменчен чтоли?
28 Ёпрст
 
26.11.12
14:22
(25) зачет ага, может будешь всё же Число передавать, а не строку ? У тебя же потом номер группировки суммируется.
29 Cthulhu
 
26.11.12
14:23
(25): если из отладчика скопипастил - то не странно. отладчик обрезает отображаемые результаты.
30 Ёпрст
 
26.11.12
14:24
и вот это
Запрос.ЗначениеУпорядочивания(номгруппировки)

тоже моветон.
31 manti
 
26.11.12
14:25
(23)
Сообщить(НомГруппировки); выдает 1
32 Ork
 
26.11.12
14:30
Все не читал. Но осуждаю.
В результате выполнения запроса по-любому получится 2 (две) группировки. Как тогда понять вот это :
"Пока Запрос.Группировка(НомГруппировки) = 1 Цикл"?

Может ему все же нужно :
Запрос.Получить(<ЗначениеГруппировки1>,...,<ЗначениеГруппировкиN>)?
33 Ёпрст
 
26.11.12
14:30
(31) как тогда определяешь "неработоспособности" ?
В цикл обхода группировки заходит ?
Уверен, что за выбранный период именно по этому регистру есть движения ?

Так, есть че ?

Запрос.Выполнить(ТекстЗапроса);
Запрос.Выгрузить(ТекстЗапроса);
ТекстЗапроса.ВыбратьСтроку();
34 Ёпрст
 
26.11.12
14:31
(32) нет, там всё нормально с этим
35 manti
 
26.11.12
17:05
(34) что то какая то непонять твориться. В пофигураторе встаю на эти строки, первый раз дает 1, во второй уже 0
36 Ёпрст
 
26.11.12
17:08
(35) смотри, нет ли реквизита с идентификатором НомГруппировки  на форме ?

И это, в разы проще взять любой типовой отчет, хотя бы АнализПродпаж с ТиС и переписать его, добавив свой текст запроса, воткнуть сои группировки и МФ
37 manti
 
26.11.12
18:00
блин парни, с регистром косяк был - в данных)
Ошибка? Это не ошибка, это системная функция.