Имя: Пароль:
1C
1C 7.7
v7: Группировка по месяцу не работает на группы номенклатуры
0 ЕлыПалыч
 
06.04.17
11:59
В запросе из регистра группировка первого уровня - номенклатура, второго уровня - месяц. Так вот, в строках с элементами в месяцах значения есть, а в группах справочника только на первом уровне группировки, а в месяцах ничего.
    |Товар = Регистр.ОстаткиТоваров.Товар;
    |ОстатокТовара = Регистр.ОстаткиТоваров.ОстатокТовара;
    |ПродСумма = Регистр.ОстаткиТоваров.ПродСумма;
    |ТипОперации = Регистр.ОстаткиТоваров.ТипОперации;
    |Функция ОстатокТовараРасход = Расход(ОстатокТовара);
    |Функция ПродСуммаРасход = Расход(ПродСумма);
    |Условие(Товар в СпТоваров);
    |Группировка Товар;
    |Группировка Месяц Все ВошедшиеВЗапрос;";
1 Slypower
 
06.04.17
13:21
Так остатки выдаются только на дату, по периоду нет возможности вывести
2 Builder
 
06.04.17
13:52
(0) Насколько помню была такая фигня с периодами и группами.
Попробуй группировки местами поменять - сначала Месяц, потом товар.
Если поможет - выводи сначала в ТЗ, потом при выводе на печать "переворачивай".
3 Это_mike
 
06.04.17
14:06
можнов ИТЗ вывести, и сгруппировать как надо
4 trad
 
06.04.17
14:17
(3) не, не поможет. такой группировки как надо ТС не будет в ИТЗ
5 Это_mike
 
06.04.17
14:28
(4) может я не совсем понял, что ему нужно...
6 1dvd
 
06.04.17
14:35
ЗначениеУпорядочивания
7 1dvd
 
06.04.17
14:38
или НачалоПериода... не помню уже
8 trad
 
06.04.17
14:46
(5)
Чорный запрос и ИТЗ.Группировать(Товар:Товар&;Месяц:Месяц) дают такое:

Группа0
  Группа1
    Товар1
      Месяц1
      Месяц2
Группа0
  Товар2
    Месяц1
    Месяц2

а ТС надо:

Группа0
      Месяц1
      Месяц2
  Группа1
      Месяц1
      Месяц2
    Товар1
      Месяц1
      Месяц2
Группа0
    Месяц1
    Месяц2
  Товар2
    Месяц1
    Месяц2
9 ЕлыПалыч
 
06.04.17
14:55
Просветите, плиз, что такое ИТЗ, а то я отстал.
Есть способ решить это перебором ТЗ для суммирования недостающих группировок, но это грубо. А запросом никак.
10 trad
 
06.04.17
15:24
ИТЗ - ИндексированнаяТаблица из 1с++
http://www.1cpp.ru/docum/html/IndexedTable.html
11 Builder
 
06.04.17
16:16
(9) Ты метод из (2) проверил?
12 Djelf
 
06.04.17
16:55
(2) Ну да, просто итз.Группировать не подойдет при такой постановке задачи.
Это фактически кросс таблица. Но решается не сильно сложно. Как то вот так:

    |Функция КоличествоРасход = Расход(Количество);
    |Функция КоличествоПриход = Приход(Количество);
    |Группировка Товар без групп;
    |Группировка Месяц все;
    |";
    
    Запрос=СоздатьОбъект("Запрос");
    Запрос.Выполнить(ТекстЗапроса);
    
    итз=СоздатьОбъект("ИндексированнаяТаблица");
    итз.ЗагрузитьЗапрос(Запрос);

    СписокРесурсов=СоздатьОбъект("СписокЗначений");
    СписокРесурсов.ДобавитьЗначение("КоличествоРасход");
    СписокРесурсов.ДобавитьЗначение("КоличествоПриход");
    
    СписокМесяцев=СоздатьОбъект("СписокЗначений");
    СтрокиСумм="";
    итз.ДобавитьИндекс("Месяц","*Месяц");
    итз.Выгрузить(СписокМесяцев,"Месяц","Месяц",1);
    
    Для ии1=1 По СписокРесурсов.РазмерСписка() Цикл
        ИмяРесурса=СписокРесурсов.ПолучитьЗначение(ии1);
        Для ии2=1 По СписокМесяцев.РазмерСписка() Цикл
            Месяц=СписокМесяцев.ПолучитьЗначение(ии2);
            ИмяКолонки=ИмяРесурса+Месяц;
            итз.НоваяКолонка(ИмяКолонки);
            СтрокиСумм=СтрокиСумм+?(СтрокиСумм="","",",")+ИмяКолонки;
            итз.УстановитьФильтр(Месяц,Месяц,"Месяц");
            итз.ЗаполнитьКолонку("Месяц",ИмяКолонки,итз,"Месяц",ИмяРесурса);
        КонецЦикла;
    КонецЦикла;
    итз.Группировать("Товар:Товар&",СтрокиСумм,1);
13 Djelf
 
06.04.17
16:57
+(12) не (2), а (8)
14 ЕлыПалыч
 
06.04.17
17:10
(11) Вроде подбирает. Но обход не в том порядке. В общем, давить задачу массой кода тем или иным способом. Всем спасибо.
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший