Имя: Пароль:
1C
1С v8
Объясните почему так
0 PuhUfa
 
20.10.11
15:30
Запрос:

   Построитель.Текст =
       "ВЫБРАТЬ РАЗРЕШЕННЫЕ
       |    ТоварыНаСкладахОстаткиИОбороты.Склад КАК Склад,
       |    ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура,
       |    ТоварыНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
       |    СУММА(ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток) КАК КоличествоНачальныйОстаток,
       |    СУММА(ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход) КАК КоличествоПриход,
       |    СУММА(ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход) КАК КоличествоРасход,
       |    СУММА(ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток) КАК КоличествоКонечныйОстаток,
       |   СУММА(
       |         ВЫБОР
       |           КОГДА ТоварыНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры.ВесЯщика <> 0
       |             ТОГДА ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток/ТоварыНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры.ВесЯщика
       |           ИНАЧЕ 0
       |         КОНЕЦ
       |         ) КАК КоличествоНачальныйОстатокЯщ,
       |   СУММА(
       |         ВЫБОР
       |           КОГДА ТоварыНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры.ВесЯщика <> 0
       |             ТОГДА ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход/ТоварыНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры.ВесЯщика
       |           ИНАЧЕ 0
       |         КОНЕЦ
       |         ) КАК КоличествоПриходЯщ,
       |   СУММА(
       |         ВЫБОР
       |           КОГДА ТоварыНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры.ВесЯщика <> 0
       |             ТОГДА ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход/ТоварыНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры.ВесЯщика
       |           ИНАЧЕ 0
       |         КОНЕЦ
       |         ) КАК КоличествоРасходЯщ,
       |   СУММА(
       |         ВЫБОР
       |           КОГДА ТоварыНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры.ВесЯщика <> 0
       |             ТОГДА ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток/ТоварыНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры.ВесЯщика
       |           ИНАЧЕ 0
       |         КОНЕЦ
       |         ) КАК КоличествоКонечныйОстатокЯщ,
       |    ТоварыНаСкладахОстаткиИОбороты.Регистратор
       |ИЗ
       |    РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&ДатаНачала, &ДатаОкончания, Регистратор, ,) КАК ТоварыНаСкладахОстаткиИОбороты
       |//СОЕДИНЕНИЯ
       |
       |СГРУППИРОВАТЬ ПО
       |    ТоварыНаСкладахОстаткиИОбороты.Склад,
       |    ТоварыНаСкладахОстаткиИОбороты.Номенклатура,
       |    ТоварыНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры,
       |    ТоварыНаСкладахОстаткиИОбороты.Регистратор
       |УПОРЯДОЧИТЬ ПО
       |   Склад,
       |   Номенклатура,
       |   ХарактеристикаНоменклатуры
       |ИТОГИ
       |    СУММА(КоличествоНачальныйОстаток),
       |    СУММА(КоличествоНачальныйОстатокЯщ),
       |    СУММА(КоличествоПриход),
       |    СУММА(КоличествоПриходЯщ),
       |    СУММА(КоличествоРасход),
       |    СУММА(КоличествоРасходЯщ),
       |    СУММА(КоличествоКонечныйОстаток),
       |    СУММА(КоличествоКонечныйОстатокЯщ)
       |ПО
       |    ОБЩИЕ,
       |    Склад,
       |    Номенклатура,
       |    ХарактеристикаНоменклатуры,
       |    Регистратор";

В результате получаю: http://i056.radikal.ru/1110/74/f8964a7dae5c.jpg
Почему "Вес" не суммируется в разрезе группировки характеристика "вес ящика" а количество ящиков суммируется?
1 PuhUfa
 
20.10.11
15:31
+ (0) ссылку съело в код: http://i056.radikal.ru/1110/74/f8964a7dae5c.jpg
2 izekia
 
20.10.11
15:39
как отчет выводишь? там ошибку ищи
3 izekia
 
20.10.11
15:39
просто закинь в консоль запросов запрос ... проверь что там
4 PuhUfa
 
20.10.11
15:42
Отчет вывожу простой выборкой:
   Результат = Построитель.Результат.Выбрать();
   Пока Результат.Следующий() цикл
       ТекГруппировка = Результат.Группировка();
       Если ТекГруппировка = "ОБЩИЕ" Тогда
           ИмяСтрокиИтого = Макет.ПолучитьОбласть("Итого");
           ИмяСтрокиИтого.Параметры.НачОстаток        = Результат.КоличествоНачальныйОстаток;
           ИмяСтрокиИтого.Параметры.НачОстатокЯщ    = Результат.КоличествоНачальныйОстатокЯщ;
           ИмяСтрокиИтого.Параметры.Приход            = Результат.КоличествоПриход;
           ИмяСтрокиИтого.Параметры.ПриходЯщ        = Результат.КоличествоПриходЯщ;
           ИмяСтрокиИтого.Параметры.Расход            = Результат.КоличествоРасход;
           ИмяСтрокиИтого.Параметры.РасходЯщ        = Результат.КоличествоРасходЯщ;            
           ИмяСтрокиИтого.Параметры.КонОстаток        = Результат.КоличествоКонечныйОстаток;
           ИмяСтрокиИтого.Параметры.КонОстатокЯщ    = Результат.КоличествоКонечныйОстатокЯщ;
       ИначеЕсли ТекГруппировка = "Склад" Тогда
           ИмяСтроки = Макет.ПолучитьОбласть("Склад");
           ИмяСтроки.Параметры.Склад            = Результат.Склад;
           //ИмяСтроки.Параметры.Номенклатура    = Результат.Номенклатура;
           //ИмяСтроки.Параметры.Характеристика    = Результат.ХарактеристикаНоменклатуры;
           //ИмяСтроки.Параметры.Документ        = Результат.Регистратор;
           ИмяСтроки.Параметры.НачОстаток        = Результат.КоличествоНачальныйОстаток;
           ИмяСтроки.Параметры.НачОстатокЯщ    = Результат.КоличествоНачальныйОстатокЯщ;
           ИмяСтроки.Параметры.Приход            = Результат.КоличествоПриход;
           ИмяСтроки.Параметры.ПриходЯщ        = Результат.КоличествоПриходЯщ;
           ИмяСтроки.Параметры.Расход            = Результат.КоличествоРасход;
           ИмяСтроки.Параметры.РасходЯщ        = Результат.КоличествоРасходЯщ;            
           ИмяСтроки.Параметры.КонОстаток        = Результат.КоличествоКонечныйОстаток;
           ИмяСтроки.Параметры.КонОстатокЯщ    = Результат.КоличествоКонечныйОстатокЯщ;
           ТабДок.Вывести(ИмяСтроки);
       ИначеЕсли ТекГруппировка = "Номенклатура" Тогда
           ИмяСтроки = Макет.ПолучитьОбласть("Номенклатура");
           //ИмяСтроки.Параметры.Склад            = Результат.Склад;
           ИмяСтроки.Параметры.Номенклатура    = Результат.Номенклатура;
           //ИмяСтроки.Параметры.Характеристика    = Результат.ХарактеристикаНоменклатуры;
           //ИмяСтроки.Параметры.Документ        = Результат.Регистратор;
           ИмяСтроки.Параметры.НачОстаток        = Результат.КоличествоНачальныйОстаток;
           ИмяСтроки.Параметры.НачОстатокЯщ    = Результат.КоличествоНачальныйОстатокЯщ;
           ИмяСтроки.Параметры.Приход            = Результат.КоличествоПриход;
           ИмяСтроки.Параметры.ПриходЯщ        = Результат.КоличествоПриходЯщ;
           ИмяСтроки.Параметры.Расход            = Результат.КоличествоРасход;
           ИмяСтроки.Параметры.РасходЯщ        = Результат.КоличествоРасходЯщ;            
           ИмяСтроки.Параметры.КонОстаток        = Результат.КоличествоКонечныйОстаток;
           ИмяСтроки.Параметры.КонОстатокЯщ    = Результат.КоличествоКонечныйОстатокЯщ;
           ТабДок.Вывести(ИмяСтроки);
       ИначеЕсли ТекГруппировка = "ХарактеристикаНоменклатуры" Тогда
           ИмяСтроки = Макет.ПолучитьОбласть("Характеристика");
           //ИмяСтроки.Параметры.Склад            = Результат.Склад;
           //ИмяСтроки.Параметры.Номенклатура    = Результат.Номенклатура;
           ИмяСтроки.Параметры.Характеристика    = Результат.ХарактеристикаНоменклатуры;
           //ИмяСтроки.Параметры.Документ        = Результат.Регистратор;
           ИмяСтроки.Параметры.НачОстаток        = Результат.КоличествоНачальныйОстаток;
           ИмяСтроки.Параметры.НачОстатокЯщ    = Результат.КоличествоНачальныйОстатокЯщ;
           ИмяСтроки.Параметры.Приход            = Результат.КоличествоПриход;
           ИмяСтроки.Параметры.ПриходЯщ        = Результат.КоличествоПриходЯщ;
           ИмяСтроки.Параметры.Расход            = Результат.КоличествоРасход;
           ИмяСтроки.Параметры.РасходЯщ        = Результат.КоличествоРасходЯщ;            
           ИмяСтроки.Параметры.КонОстаток        = Результат.КоличествоКонечныйОстаток;
           ИмяСтроки.Параметры.КонОстатокЯщ    = Результат.КоличествоКонечныйОстатокЯщ;
           ТабДок.Вывести(ИмяСтроки);
       ИначеЕсли ТекГруппировка = "Регистратор" Тогда
           Если НЕ ЗначениеЗаполнено(Результат.Регистратор) тогда
               Продолжить;
           КонецЕсли;    
           ИмяСтроки = Макет.ПолучитьОбласть("Регистратор");
           //ИмяСтроки.Параметры.Склад            = Результат.Склад;
           //ИмяСтроки.Параметры.Номенклатура    = Результат.Номенклатура;
           //ИмяСтроки.Параметры.Характеристика    = Результат.ХарактеристикаНоменклатуры;
           ИмяСтроки.Параметры.Документ        = Результат.Регистратор;
           ИмяСтроки.Параметры.НачОстаток        = Результат.КоличествоНачальныйОстаток;
           ИмяСтроки.Параметры.НачОстатокЯщ    = Результат.КоличествоНачальныйОстатокЯщ;
           ИмяСтроки.Параметры.Приход            = Результат.КоличествоПриход;
           ИмяСтроки.Параметры.ПриходЯщ        = Результат.КоличествоПриходЯщ;
           ИмяСтроки.Параметры.Расход            = Результат.КоличествоРасход;
           ИмяСтроки.Параметры.РасходЯщ        = Результат.КоличествоРасходЯщ;            
           ИмяСтроки.Параметры.КонОстаток        = Результат.КоличествоКонечныйОстаток;
           ИмяСтроки.Параметры.КонОстатокЯщ    = Результат.КоличествоКонечныйОстатокЯщ;
           ТабДок.Вывести(ИмяСтроки);
       КонецЕсли;    
   КонецЦикла;
5 Scooter
 
20.10.11
15:45
(4)

           ОбластьМакета = Макет.ПолучитьОбласть("ОбщиеДанные");
           ОбластьМакета.Параметры.Заполнить(Выборка);
           ТабДокумент.Вывести(ОбластьМакета);
6 Scooter
 
20.10.11
15:47
(0)NULL скорее всего встречается
7 izekia
 
20.10.11
15:48
похоже там где 1С рассчитывает итоги характеристика недоступна
вообще убери группировку в запросе, она не нужна
и лишние итоги по регистратору
8 izekia
 
20.10.11
15:49
попробуй пока убрать группировку и посмотри, должно получиться то то чебе нужно
соответственно агрегатные все тоже убери у тебя уже обороты по регистратору выбираются
9 PuhUfa
 
21.10.11
09:46
(6) NULL в чем?
(7) если я убираю группировку то у в отчет не попадают итоги по группе. Или я не совсем понял что именно ты имел ввиду.
10 izekia
 
21.10.11
10:08
ВЫБРАТЬ РАЗРЕШЕННЫЕ
       |    ТоварыНаСкладахОстаткиИОбороты.Склад КАК Склад,
       |    ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура,
       |    ТоварыНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
       |    СУММА(ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток) КАК КоличествоНачальныйОстаток,
       |    СУММА(ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход) КАК КоличествоПриход,
       |    СУММА(ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход) КАК КоличествоРасход,
       |    СУММА(ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток) КАК КоличествоКонечныйОстаток,
       |   СУММА(
       |         ВЫБОР
       |           КОГДА ТоварыНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры.ВесЯщика <> 0
       |             ТОГДА ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток/ТоварыНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры.ВесЯщика
       |           ИНАЧЕ 0
       |         КОНЕЦ
       |         ) КАК КоличествоНачальныйОстатокЯщ,
       |   СУММА(
       |         ВЫБОР
       |           КОГДА ТоварыНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры.ВесЯщика <> 0
       |             ТОГДА ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход/ТоварыНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры.ВесЯщика
       |           ИНАЧЕ 0
       |         КОНЕЦ
       |         ) КАК КоличествоПриходЯщ,
       |   СУММА(
       |         ВЫБОР
       |           КОГДА ТоварыНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры.ВесЯщика <> 0
       |             ТОГДА ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход/ТоварыНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры.ВесЯщика
       |           ИНАЧЕ 0
       |         КОНЕЦ
       |         ) КАК КоличествоРасходЯщ,
       |   СУММА(
       |         ВЫБОР
       |           КОГДА ТоварыНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры.ВесЯщика <> 0
       |             ТОГДА ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток/ТоварыНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры.ВесЯщика
       |           ИНАЧЕ 0
       |         КОНЕЦ
       |         ) КАК КоличествоКонечныйОстатокЯщ,
       |    ТоварыНаСкладахОстаткиИОбороты.Регистратор
       |ИЗ
       |    РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&ДатаНачала, &ДатаОкончания, Регистратор, ,) КАК ТоварыНаСкладахОстаткиИОбороты
       |//СОЕДИНЕНИЯ

       |
       |СГРУППИРОВАТЬ ПО        <= вот это тебе не нужно
       |    ТоварыНаСкладахОстаткиИОбороты.Склад,
       |    ТоварыНаСкладахОстаткиИОбороты.Номенклатура,
       |    ТоварыНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры,
       |    ТоварыНаСкладахОстаткиИОбороты.Регистратор
       |УПОРЯДОЧИТЬ ПО
       |   Склад,
       |   Номенклатура,
       |   ХарактеристикаНоменклатуры
       |ИТОГИ
       |    СУММА(КоличествоНачальныйОстаток),
       |    СУММА(КоличествоНачальныйОстатокЯщ),
       |    СУММА(КоличествоПриход),
       |    СУММА(КоличествоПриходЯщ),
       |    СУММА(КоличествоРасход),
       |    СУММА(КоличествоРасходЯщ),
       |    СУММА(КоличествоКонечныйОстаток),
       |    СУММА(КоличествоКонечныйОстатокЯщ)
       |ПО
       |    ОБЩИЕ,
       |    Склад,
       |    Номенклатура,
       |    ХарактеристикаНоменклатуры,
       |    Регистратор
11 izekia
 
21.10.11
10:10
(9) и итоги по регистратору по идее тоже не нужны, так как то же самое будет в детальных записях, просто раза в два больше данных в выборке получается
12 PuhUfa
 
21.10.11
11:43
(10) что то я вообще запутался -( Если я убираю группировку то начинает ругаться "поле не входит в группу"
13 izekia
 
21.10.11
11:45
(12) забей, займись чем-нибудь полезным обществу
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.