Имя: Пароль:
1C
1С v8
Несколько запросов в одной процедуре (работает только первый)
, ,
0 capllary
 
12.09.14
12:53
Не могу понять почему из 3 запросов формируется только один:

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

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

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


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

Запрос = Новый Запрос;
Запрос.УстановитьПараметр("НачПериода", НачПериода);
Запрос.УстановитьПараметр("КонПериода", КонецДня(КонПериода));
Запрос.УстановитьПараметр("Счет90", Счет90_01);
Запрос.УстановитьПараметр("НоменклатурнаяГруппа", Субконто1);
Запрос.Текст = ТекстЗапроса1;

РезультатЗапроса1 = Запрос.Выполнить().Выбрать();

Пока РезультатЗапроса1.Следующий() Цикл
ОбластьДоходы.Параметры.Д21 = ОбщегоНазначения.ФорматСумм(РезультатЗапроса1.СуммаОборотКт);
КонецЦикла;


Субконто2 = Справочники.НоменклатурныеГруппы.НайтиПоКоду("000000006");
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("НачПериода", НачПериода);
Запрос.УстановитьПараметр("КонПериода", КонецДня(КонПериода));
Запрос.УстановитьПараметр("Счет90", Счет90_01);
Запрос.УстановитьПараметр("НоменклатурнаяГруппа", Субконто2);
Запрос.Текст = ТекстЗапроса2;

РезультатЗапроса2 = Запрос.Выполнить().Выбрать();

Пока РезультатЗапроса2.Следующий() Цикл
ОбластьДоходы.Параметры.Д22 = ОбщегоНазначения.ФорматСумм(РезультатЗапроса2.СуммаОборотКт);
КонецЦикла;

Субконто3 = Справочники.НоменклатурныеГруппы.НайтиПоКоду("000000002");
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("НачПериода", НачПериода);
Запрос.УстановитьПараметр("КонПериода", КонецДня(КонПериода));
Запрос.УстановитьПараметр("Счет90", Счет90_01);
Запрос.УстановитьПараметр("НоменклатурнаяГруппа", Субконто3);
Запрос.Текст = ТекстЗапроса3;

РезультатЗапроса3 = Запрос.Выполнить().Выбрать();

Пока РезультатЗапроса3.Следующий() Цикл
ОбластьДоходы.Параметры.Д23 = ОбщегоНазначения.ФорматСумм(РезультатЗапроса3.СуммаОборотКт);
КонецЦикла;
1 mikecool
 
12.09.14
12:57
как проверял, что не работают?
2 capllary
 
12.09.14
12:58
Есть макет на который все данные выводятся.


Вот полная процедура:

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

    РезультатЗапроса1 = Запрос.Выполнить().Выбрать();
        
    Пока РезультатЗапроса1.Следующий() Цикл
        ОбластьДоходы.Параметры.Д21 = ОбщегоНазначения.ФорматСумм(РезультатЗапроса1.СуммаОборотКт);    
    КонецЦикла;
    
    
    Субконто2 = Справочники.НоменклатурныеГруппы.НайтиПоКоду("000000006");
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("НачПериода", НачПериода);
    Запрос.УстановитьПараметр("КонПериода", КонецДня(КонПериода));
    Запрос.УстановитьПараметр("Счет90", Счет90_01);
    Запрос.УстановитьПараметр("НоменклатурнаяГруппа", Субконто2);
    Запрос.Текст = ТекстЗапроса2;

    РезультатЗапроса2 = Запрос.Выполнить().Выбрать();
        
    Пока РезультатЗапроса2.Следующий() Цикл
        ОбластьДоходы.Параметры.Д22 = ОбщегоНазначения.ФорматСумм(РезультатЗапроса2.СуммаОборотКт);    
    КонецЦикла;
    
    Субконто3 = Справочники.НоменклатурныеГруппы.НайтиПоКоду("000000002");    
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("НачПериода", НачПериода);
    Запрос.УстановитьПараметр("КонПериода", КонецДня(КонПериода));
    Запрос.УстановитьПараметр("Счет90", Счет90_01);
    Запрос.УстановитьПараметр("НоменклатурнаяГруппа", Субконто3);
    Запрос.Текст = ТекстЗапроса3;

    РезультатЗапроса3 = Запрос.Выполнить().Выбрать();
        
    Пока РезультатЗапроса3.Следующий() Цикл
        ОбластьДоходы.Параметры.Д23 = ОбщегоНазначения.ФорматСумм(РезультатЗапроса3.СуммаОборотКт);    
    КонецЦикла;

    
        
    
    
    ОбластьДоходы.Параметры.Квартал = ПредставлениеПериода(НачалоДня(НачПериода), КонецДня(КонПериода), "ФП = Истина" );
    //ОбластьДоходы.Параметры.Д21 = КО(Счет90_01);
    
    
    
    //ОбластьДоходы.Параметры.Д23 = КО(Счет90_01) / 1000 * 18;
    //ОбластьДоходы.Параметры.Д21 = "";
    //ОбластьДоходы.Параметры.Д21 = "";
    
    ОбластьРасходы = Макет.ПолучитьОбласть("Расходы");
    
    ОбластьРасходы.Параметры.Квартал = ПредставлениеПериода(НачалоДня(НачПериода), КонецДня(КонПериода), "ФП = Истина" );
    
    ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
    
    
    

    ТабДок.Очистить();
    ТабДок.Вывести(ОбластьЗаголовок);
    ТабДок.Вывести(ОбластьДоходы);
    ТабДок.Вывести(ОбластьРасходы);
    
    ТабДок.Вывести(ОбластьПодвал);
    
    
КонецПроцедуры
3 capllary
 
12.09.14
13:00
Такое ощущение что запросы (второй и третий) просто не выполняются.
4 chelentano
 
12.09.14
13:02
(3) а может без ощущений, зато с отладчиком?
5 capllary
 
12.09.14
13:04
(4) Буду пробовать.
6 LionHeart_spg
 
12.09.14
13:05
Сколько субсчетов у счета Счет90_01 ?
7 drcrasher
 
12.09.14
13:06
Если ты трижды создаёшь "Запрос", то и делай Запрос1, Запрос2 и Запрос3.
8 alle68
 
12.09.14
13:06
(3) Все субконто "НомГр"???
9 13_Mult
 
12.09.14
13:06
ТабДок <> Макет ?
10 Зойч
 
12.09.14
13:07
а что у 90счет все 3 субконто номенклатурные группы?
11 capllary
 
12.09.14
13:10
(6) 2 - 90.01.1 и 90.01.2
12 capllary
 
12.09.14
13:11
(10) Мне просто нужно заполнить 3 ячейки данными оборотов 90.01 счета с фильтром по номенклатурным группам.
13 KishMish
 
12.09.14
13:11
Пока РезультатЗапроса3.Следующий() Цикл
        ОбластьДоходы.Параметры.Д23 = ОбщегоНазначения.ФорматСумм(РезультатЗапроса3.СуммаОборотКт);    
    КонецЦикла;
идругие
а где вывод этой областей в таблицу?
14 capllary
 
12.09.14
13:12
(13) Т.е. после каждого Цикла надо вставить ТабДок.Вывести(ОбластьДоходы);
15 capllary
 
12.09.14
13:14
(13) Это вопрос.
16 capllary
 
12.09.14
13:16
Либо же как оставить один запрос, первый, и указать для каждой ячейки вывод оборотов именно по определенной номенклатурной группе?

В этой строке:

ОбластьДоходы.Параметры.Д21 = ОбщегоНазначения.ФорматСумм(РезультатЗапроса1.СуммаОборотКт);
17 alle68
 
12.09.14
13:17
(15) Вопрос это (8) и (10). Они же и ответ.
18 capllary
 
12.09.14
14:55
Парни, цель такая - сделать:

ОбластьДоходы.Параметры.Д21 - было сумма оборотов номенклатурной группы с кодом 000000001
ОбластьДоходы.Параметры.Д22 - было сумма оборотов номенклатурной группы с кодом 000000006
ОбластьДоходы.Параметры.Д23 - было сумма оборотов номенклатурной группы с кодом 000000002
19 capllary
 
12.09.14
14:57
(17) Да, в моей процедуре 3 субконто Номенклатурная группа у счета 90.01 (не факт что это правильно, скорее наоборот).

Просто не знаю, как в трех запросах указать отбор по разным Номенклатурным группам в субконто счета.
20 YFedor
 
12.09.14
14:59
(19) оператор ВЫБОР и три Суммы
21 capllary
 
12.09.14
15:10
Так?

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

Запрос.Текст = ТекстЗапроса;

    РезультатЗапроса = Запрос.Выполнить().Выбрать();
        
    Пока РезультатЗапроса.Следующий() Цикл
        ОбластьДоходы.Параметры.Д21 = ОбщегоНазначения.ФорматСумм(РезультатЗапроса.СуммаОборотКт);    
    КонецЦикла;
23 capllary
 
12.09.14
15:57
Кстати, с праздником всех кто помогал!!!
24 IKSparrow
 
12.09.14
16:12
Может лучше на СКД? На фига этот онанизм.
Основная теорема систематики: Новые системы плодят новые проблемы.