Имя: Пароль:
1C
1С v8
Запрос. Нулевые значения
,
0 programer_
1c_nn15
 
23.08.11
14:33
Добрый день есть запрос по счету 26, с группировкой по подразделениям, все данные верные но в отчете не все подразделения только те по которым есть движения.Подскажите как сделать можно чтобы выводились все?Пробовал через левое соединение пока не совсем то получается.
1 programer_
1c_nn15
 
23.08.11
14:33
Запрос = Новый Запрос;
   Запрос.Текст =
   "ВЫБРАТЬ
   |    ХозрасчетныйОстаткиИОбороты.Подразделение КАК Подразделение,
   |    ХозрасчетныйОстаткиИОбороты.Субконто1 КАК СтатьяДвиженияДС,
   |    СУММА(ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокДт) КАК НачальныйОстатокДт,
   |    СУММА(ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокКт) КАК НачальныйОстатокКт,
   |    СУММА(ХозрасчетныйОстаткиИОбороты.СуммаОборотДт) КАК ОборотДт,
   |    СУММА(ХозрасчетныйОстаткиИОбороты.СуммаОборотКт) КАК ОборотКт,
   |    СУММА(ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокДт) КАК КонечныйОстатокДт,
   |    СУММА(ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокКт) КАК КонечныйОстатокКт
   |ИЗ
   |    РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&ДатаНач, &ДатаКон, День, , , , ) КАК ХозрасчетныйОстаткиИОбороты
   |ГДЕ
   |    ХозрасчетныйОстаткиИОбороты.Счет = &счет
   |    И ХозрасчетныйОстаткиИОбороты.Организация = &организация
   |
   |СГРУППИРОВАТЬ ПО
   |    ХозрасчетныйОстаткиИОбороты.Подразделение,
   |    ХозрасчетныйОстаткиИОбороты.Субконто1
   |ИТОГИ
   |    СУММА(НачальныйОстатокДт),
   |    СУММА(НачальныйОстатокКт),
   |    СУММА(ОборотДт),
   |    СУММА(ОборотКт),
   |    СУММА(КонечныйОстатокДт),
   |    СУММА(КонечныйОстатокКт)
   |ПО
   |    ОБЩИЕ,
   |    Подразделение ИЕРАРХИЯ,
   |    СтатьяДвиженияДС
   |АВТОУПОРЯДОЧИВАНИЕ";
2 programer_
1c_nn15
 
23.08.11
14:34
Запрос.УстановитьПараметр("ДатаКон", КонецДня(ДатаКон));
   Запрос.УстановитьПараметр("ДатаНач", НачалоДня(ДатаНач));
   Запрос.УстановитьПараметр("организация", организация);
   Запрос.УстановитьПараметр("счет", счет);

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

   ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
   ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
   ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
   ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
   ОбластьОбщийИтог = Макет.ПолучитьОбласть("ОбщиеИтоги");
   ОбластьПодразделениеИерархия = Макет.ПолучитьОбласть("ПодразделениеИерархия");
   ОбластьПодразделение = Макет.ПолучитьОбласть("Подразделение");
   ОбластьСубконто2 = Макет.ПолучитьОбласть("Субконто2");

   ТабДок.Очистить();
   ТабДок.Вывести(ОбластьЗаголовок);
   ТабДок.Вывести(ОбластьШапкаТаблицы);
   ТабДок.НачатьАвтогруппировкуСтрок();

   ВыборкаОбщийИтог = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

   ВыборкаОбщийИтог.Следующий();        // Общий итог
   ОбластьОбщийИтог.Параметры.Заполнить(ВыборкаОбщийИтог);
   ТабДок.Вывести(ОбластьОбщийИтог, ВыборкаОбщийИтог.Уровень());

   ВыборкаПодразделение = ВыборкаОбщийИтог.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

   Пока ВыборкаПодразделение.Следующий() Цикл
       Если ВыборкаПодразделение.ТипЗаписи() = ТипЗаписиЗапроса.ИтогПоИерархии Тогда
            Область = ОбластьПодразделениеИерархия;
       Иначе
           Область = ОбластьПодразделение;
       КонецЕсли;

       Область.Параметры.Заполнить(ВыборкаПодразделение);
       ТабДок.Вывести(Область, ВыборкаПодразделение.Уровень());

       ВыборкаСубконто1 = ВыборкаПодразделение.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

       Пока ВыборкаСубконто1.Следующий() Цикл
           ОбластьСубконто2.Параметры.Заполнить(ВыборкаСубконто1);
           ТабДок.Вывести(ОбластьСубконто2, ВыборкаСубконто1.Уровень());
       КонецЦикла;
   КонецЦикла;

   ТабДок.ЗакончитьАвтогруппировкуСтрок();
   ТабДок.Вывести(ОбластьПодвалТаблицы);
   ТабДок.Вывести(ОбластьПодвал);
3 programer_
1c_nn15
 
23.08.11
14:35
Может быть с помощью функций можно или как то по другому
4 kosts
 
23.08.11
14:37
ВыборкаСубконто1 = ВыборкаПодразделение.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,,~~~ Что то здесь ~~~);
5 zbv
 
23.08.11
14:37
выбери подразделения из спр.Подразделения и соедини с помощью левого соединения со своим запросом, по подразделению.
6 Grusswelle
 
23.08.11
14:38
(2) Не не не. Всё правильно, через ЛЕВОЕ СОЕДИНЕНИЕ. Пили запрос.
7 programer_
1c_nn15
 
23.08.11
14:40
Через левое вот так сделал нет иерархии, в справочнике подразделения иерархия 3 уровня

Запрос.Текст =
   "ВЫБРАТЬ
   |    ХозрасчетныйОстаткиИОбороты.Субконто1 КАК СтатьяДвиженияДС,
   |    СУММА(ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокДт) КАК НачальныйОстатокДт,
   |    СУММА(ХозрасчетныйОстаткиИОбороты.СуммаНачальныйОстатокКт) КАК НачальныйОстатокКт,
   |    СУММА(ХозрасчетныйОстаткиИОбороты.СуммаОборотДт) КАК ОборотДт,
   |    СУММА(ХозрасчетныйОстаткиИОбороты.СуммаОборотКт) КАК ОборотКт,
   |    СУММА(ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокДт) КАК КонечныйОстатокДт,
   |    СУММА(ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокКт) КАК КонечныйОстатокКт,
   |    ПодразделенияОрганизаций.Ссылка,
   |    ПодразделенияОрганизаций.Представление
   |ИЗ
   |    Справочник.ПодразделенияОрганизаций КАК ПодразделенияОрганизаций
   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&ДатаНач, &ДатаКон, День, , , , ) КАК ХозрасчетныйОстаткиИОбороты
   |        ПО ХозрасчетныйОстаткиИОбороты.Подразделение = ПодразделенияОрганизаций.Ссылка
   |ГДЕ
   |    ХозрасчетныйОстаткиИОбороты.Счет = &счет
   |    И ХозрасчетныйОстаткиИОбороты.Организация = &организация
   |
   |СГРУППИРОВАТЬ ПО
   |    ХозрасчетныйОстаткиИОбороты.Субконто1,
   |    ПодразделенияОрганизаций.Ссылка,
   |    ПодразделенияОрганизаций.Представление
   |ИТОГИ
   |    СУММА(НачальныйОстатокДт),
   |    СУММА(НачальныйОстатокКт),
   |    СУММА(ОборотДт),
   |    СУММА(ОборотКт),
   |    СУММА(КонечныйОстатокДт),
   |    СУММА(КонечныйОстатокКт)
   |ПО
   |    ОБЩИЕ,
   |    ПодразделенияОрганизаций.Ссылка,
   |    СтатьяДвиженияДС
   |АВТОУПОРЯДОЧИВАНИЕ";
8 programer_
1c_nn15
 
23.08.11
14:43
(4) в этом случае после точки никаких значений нет
9 Aprobator
 
23.08.11
14:44
а где в ИТОГАХ указано что тебе ПодразделенияОрганизаций.Ссылка ИЕРАРХИЯ надо? (в конструкторе запросов тип итогов то глянь).
10 Aprobator
 
23.08.11
14:44
запрос безобразный.
11 Aprobator
 
23.08.11
14:45
почитай в СП внимательно в Языке запросов про таблицу регистров бухгалтерии.
12 programer_
1c_nn15
 
23.08.11
14:47
(10) был бы идеальный не писал бы сюда
13 programer_
1c_nn15
 
23.08.11
14:47
(9)ок
14 programer_
1c_nn15
 
23.08.11
14:49
(9) действительно надо иерархию поставить
15 Aprobator
 
23.08.11
14:52
(12) меня больше смущает, то что никто кроме меня на это не указал. Для новичка - типичные все ошибки: параметры виртуальной таблицы не заполнены нефига и используется сгруппировать и сумма, хотя виртуальная таблица (ОстаткиИОбороты) это делает сама по полям выборки. В СП все прописано - читай внимательно.
16 programer_
1c_nn15
 
23.08.11
14:57
(15)могу тоже сознаться что не новичок но запросы редко доводится писать и если пишу обычно не сложные
17 programer_
1c_nn15
 
23.08.11
14:59
(15) параметры кстати были слетели после редактирования отчета
18 programer_
1c_nn15
 
23.08.11
15:05
(11) сп-синтаксис помошник имеешь ввиду?
19 Aprobator
 
23.08.11
15:06
(18) да.
20 programer_
1c_nn15
 
23.08.11
15:20
(19) Слушай , попутно вопрос , система компоновки данных мощный инструмент?Прокоментировать можешь? Возможно скоро с отчетами работы прибавится,надо будет поподробней остановиться
21 kosts
 
23.08.11
15:21
(20) > система компоновки данных мощный инструмент?

Уууууууу
22 Aprobator
 
23.08.11
15:21
(20) в умелых руках да. Но без книги ее не осилить. По крайней мере, я не смог. Книжка по ней отдельная - погугли. Не помню как уже называется. Или может сейчас подскажет что.
23 programer_
1c_nn15
 
23.08.11
15:26
(22)Книга есть начал изучать:)к ней учебная конфа прилагается, интересно сравнить с другими методами разработки
24 Aprobator
 
23.08.11
15:28
ямщииииик - не гониииии лошадей!
25 Aprobator
 
23.08.11
15:29
и при чем здесь методы разработки? СКД - один из инструментов. Свои плюсы, свои минусы, своя область применения.
Основная теорема систематики: Новые системы плодят новые проблемы.