Имя: Пароль:
1C
1С v8
Требуется помощь в правильной выборке из запроса.
, ,
0 capllary
 
18.09.14
17:36
ввобщем есть запрос, в результате него выходит три значения, т.е. в форму вставляется последнее значение, в служебных сообщениях выходит 3 значения.

Мне надо чтобы первое значение было в одной ячейке формы (ОбластьДоходы.Параметры.Д21), второе во второй (ОбластьДоходы.Параметры.Д22) и третье в третей (ОбластьДоходы.Параметры.Д23).

Помогите разобраться как это реализовать))

Во запрос с вытекающими:

Субконто1 = Справочники.НоменклатурныеГруппы.НайтиПоКоду("000000001");
    Субконто2 = Справочники.НоменклатурныеГруппы.НайтиПоКоду("000000006");
    Субконто3 = Справочники.НоменклатурныеГруппы.НайтиПоКоду("000000002");

    
    ТекстЗапроса =    
    "ВЫБРАТЬ
    |    ХозрасчетныйОстаткиИОбороты.СуммаОборотКт,
    |    ХозрасчетныйОстаткиИОбороты.Субконто1,
    |    ХозрасчетныйОстаткиИОбороты.Субконто2,
    |    ХозрасчетныйОстаткиИОбороты.Субконто3
    |ИЗ
    |    РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачПериода, &КонПериода, , , Счет В ИЕРАРХИИ (&Счет90), , Субконто1 В (&Субконто1, &Субконто2, &Субконто3)) КАК ХозрасчетныйОстаткиИОбороты
    |ИТОГИ ПО
    |    ОБЩИЕ";
    
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("НачПериода", НачПериода);
    Запрос.УстановитьПараметр("КонПериода", КонецДня(КонПериода));
    Запрос.УстановитьПараметр("Счет90", Счет90_01);
    Запрос.УстановитьПараметр("Субконто1", Субконто1);
    Запрос.УстановитьПараметр("Субконто2", Субконто2);
    Запрос.УстановитьПараметр("Субконто3", Субконто3);
    Запрос.Текст = ТекстЗапроса;

    РезультатЗапроса = Запрос.Выполнить().Выбрать();
        
    Пока РезультатЗапроса.Следующий() Цикл
        Сообщить(РезультатЗапроса.СуммаОборотКт);
        ОбластьДоходы.Параметры.Д21 = ОбщегоНазначения.ФорматСумм(РезультатЗапроса.СуммаОборотКт);    
    КонецЦикла;
1 capllary
 
18.09.14
17:37
Не могу никак верную выборку написать.
2 capllary
 
18.09.14
17:40
В ячейке ОбластьДоходы.Параметры.Д21 почему то встает последнее значение из трех.
3 capllary
 
18.09.14
17:41
Язык запросов только начал изучать.
4 Dmitriy_76
 
18.09.14
17:41
а... где вывести ???
5 barrgand
 
18.09.14
17:41
(0)
    к = 1;
    Пока РезультатЗапроса.Следующий() Цикл
        Сообщить(РезультатЗапроса.СуммаОборотКт);
        ОбластьДоходы.Параметры["Д2" + к] = ОбщегоНазначения.ФорматСумм(РезультатЗапроса.СуммаОборотКт);    
        к = к + 1;
    КонецЦикла;
6 capllary
 
18.09.14
17:44
(5) Почти в точку, только поле объекта Д24 не обнаружено.
7 Балоун
 
18.09.14
17:45
(6) ничего не трогай, сейчас тебе дадут исправленный код
8 Dmitriy_76
 
18.09.14
17:45
(6) ... итоги там еще
9 Dmitriy_76
 
18.09.14
17:46
отладчик сп..ли ?
10 Dmitriy_76
 
18.09.14
17:46
завтра пятницо
11 barrgand
 
18.09.14
17:47
(6)
    к = 1;
    Пока РезультатЗапроса.Следующий() Цикл
        Если к = 4 Тогда
            Сообщить("я не думал что будет больше трех, ай-яй-яй");
            Прервать;
        КонецЕсли;
        Сообщить(РезультатЗапроса.СуммаОборотКт);
        ОбластьДоходы.Параметры["Д2" + к] = ОбщегоНазначения.ФорматСумм(РезультатЗапроса.СуммаОборотКт);    
        к = к + 1;
    КонецЦикла;
12 capllary
 
18.09.14
17:49
(11) Почти, только почему то первая ячейка не заполнилась, а её значение сдвинулось на следующую ячейку.
13 capllary
 
18.09.14
17:53
(11) Как я понял Цикл пытается с 22 значения заполнять, а не с 21.
14 Dmitriy_76
 
18.09.14
17:54
(11) Гы... ИТОГИ ПО ОБЩИЕ...
15 capllary
 
18.09.14
17:54
(8) Не, там уже другие значения, но это уже новые запросы.
16 capllary
 
18.09.14
17:55
(14) А что тут такого забавного?
17 Dmitriy_76
 
18.09.14
17:56
(16) где обход результата запроса ?
18 Dmitriy_76
 
18.09.14
17:57
+ итоги убери а сделай группировку в запросе
19 Балоун
 
18.09.14
17:59
(16) Dmitriy_76 значет, что это, а ты нет
20 barrgand
 
18.09.14
17:59
(14) запрос не смотрел даже =)
(12) Что думаешь по поводу (8) (9)?
21 capllary
 
18.09.14
18:00
(18) Так?

ВЫБРАТЬ
    СУММА(ХозрасчетныйОстаткиИОбороты.СуммаОборотКт) КАК СуммаОборотКт,
    ХозрасчетныйОстаткиИОбороты.Субконто1,
    ХозрасчетныйОстаткиИОбороты.Субконто2,
    ХозрасчетныйОстаткиИОбороты.Субконто3
ИЗ
    РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&НачПериода, &КонПериода, , , Счет В ИЕРАРХИИ (&Счет90), , Субконто1 В (&Субконто1, &Субконто2, &Субконто3)) КАК ХозрасчетныйОстаткиИОбороты

СГРУППИРОВАТЬ ПО
    ХозрасчетныйОстаткиИОбороты.Субконто3,
    ХозрасчетныйОстаткиИОбороты.Субконто2,
    ХозрасчетныйОстаткиИОбороты.Субконто1
22 capllary
 
18.09.14
18:01
(20) Нет там никаких итогов.
23 Балоун
 
18.09.14
18:03
(22) даже по общие?
24 capllary
 
18.09.14
18:06
Блин, народ лучше почему цикл пропускает 21 ячейку...
25 acanta
 
18.09.14
18:08
к = 0
26 capllary
 
18.09.14
18:09
(25) неа, пробовал...
27 acanta
 
18.09.14
18:13
переименуй ячейки
28 capllary
 
18.09.14
18:20
(27) На какие значения и что это даст?
29 capllary
 
18.09.14
18:23
(27) Переименовал на 20,21,22, все равно сдвигает все пропускает первое значение.
30 capllary
 
18.09.14
19:01
Вобщем, нашел только одно решение, название строк сместить на одну вниз, соответственно третью на первое место + добавил на форме еще один параметр Д24, это для того чтобы все 3 значения считались, иначе выходило два значения (1 и 2)
в итого вот код:

к = 1;
    Пока РезультатЗапроса.Следующий() Цикл
        
        Если к = 5 Тогда
           Прервать;
        КонецЕсли;
        Сообщить(РезультатЗапроса.СуммаОборотКт);
        ОбластьДоходы.Параметры["Д2" + к] = ОбщегоНазначения.ФорматСумм(РезультатЗапроса.СуммаОборотКт);    
        к = к + 1;
        ОбластьДоходы.Параметры.Д21 = ОбщегоНазначения.ФорматСумм(РезультатЗапроса.СуммаОборотКт);
    КонецЦикла;
31 alle68
 
19.09.14
01:47
(21) Зачем это?
    ХозрасчетныйОстаткиИОбороты.Субконто2,
    ХозрасчетныйОстаткиИОбороты.Субконто3
А если оборота по "&Субконто1" не будет за период, будет работать?
А группировка для чего?