Имя: Пароль:
1C
1С v8
Помогите с запросом!
,
0 EgorWonder
 
14.07.14
11:06
ТабДокумент = Новый ТабличныйДокумент;
     запрос = новый запрос;
     Запрос.УстановитьПараметр("Док", СсылкаНаОбъект);
          Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ
                         |    ТребованиеНакладнаяМатериалы.НоменклатурнаяГруппа КАК НоменклатурнаяГруппа,
                         |    ТребованиеНакладнаяМатериалы.Номенклатура,
                         |    ТребованиеНакладнаяМатериалы.Ссылка,
                         |    СУММА(ТребованиеНакладнаяМатериалы.Количество) КАК Итог,
                         |    ТребованиеНакладнаяМатериалы.Количество КАК Колво
                         |ИЗ
                         |    Документ.ТребованиеНакладная.Материалы КАК ТребованиеНакладнаяМатериалы
                         |ГДЕ
                         |    ТребованиеНакладнаяМатериалы.Ссылка = &Док
                         |
                         |СГРУППИРОВАТЬ ПО
                         |    ТребованиеНакладнаяМатериалы.Номенклатура,
                         |    ТребованиеНакладнаяМатериалы.НоменклатурнаяГруппа,
                         |    ТребованиеНакладнаяМатериалы.Ссылка,
                         |    ТребованиеНакладнаяМатериалы.Количество
                         |
                         |УПОРЯДОЧИТЬ ПО
                         |    НоменклатурнаяГруппа";    
    рез = запрос.Выполнить().Выбрать();
    ТабНГР = запрос.Выполнить().Выгрузить();
    ТабНГР.Свернуть("Номенклатура","Итог");
    ТабН = запрос.Выполнить().Выгрузить();
    ТабН.Свернуть("НоменклатурнаяГруппа, Колво");
Макет = ПолучитьМакет("ПроизводственноеЗадание");
Область = Макет.ПолучитьОбласть("ШапкаПС|ШП");
Область.Параметры.Организация = ссылканаобъект.Организация;
ТабДокумент.Вывести(Область);
Область = Макет.ПолучитьОбласть("Шапка|ШП");
ТабДокумент.Вывести(Область);
Для каждого строка из ТабНГР цикл
    Область = Макет.ПолучитьОбласть("Шапка|ном");
    область.Параметры.Номенклатура = Строка.Номенклатура;
    ТабДокумент.Присоединить(Область);
конеццикла;

Для каждого строка из ТабН цикл
         Область = Макет.ПолучитьОбласть("НГ");
         Область.Параметры.НоменклатурнаяГруппа = Строка.НоменклатурнаяГруппа;
         ТабДокумент.Присоединить(Область);
конеццикла;
Область = Макет.ПолучитьОбласть("Итого|ШП");
ТабДокумент.Вывести(Область);
Для каждого стр из ТабНГР цикл
    Область = Макет.ПолучитьОбласть("Итого|ном");
    область.Параметры.Итог = Стр.Итог;
    ТабДокумент.Присоединить(Область);
конеццикла;
Возврат ТабДокумент;

Мне нужно чтобы, к примеру, получалась такая таблица:
Продукция(НоменклатурнаяГруппа) Материалы(Номенклатура) Колво
Прод1                           Мат1                      2
Прод1                           Мат2                      0
Прод2                           Мат1                      0
Прод2                           Мат2                      1
То есть если в какой-то продукции этот материал не используется, ставилось значение 0.
1 Господин ПЖ
 
14.07.14
11:07
ам/кг

"различные" доставило...
2 palladyi
 
14.07.14
11:07
используй ЕСТЬNULL
3 Господин ПЖ
 
14.07.14
11:09
>используй ЕСТЬNULL

щито?
4 palladyi
 
14.07.14
11:10
>То есть если в какой-то продукции этот материал не используется, ставилось значение 0.
для этого используется функция в запросе ЕСТЬNULL
5 palladyi
 
14.07.14
11:10
что не так? (3)
6 Господин ПЖ
 
14.07.14
11:11
(5) в рамках текущего запроса ЕСТЬNULL бесполезен
7 palladyi
 
14.07.14
11:12
(6) согласен, не прочитал запрос(
8 Легат
 
14.07.14
11:12
Да, пожалуй, это же не регистр ..
9 Легат
 
14.07.14
11:13
В чем проблема то?
10 EgorWonder
 
14.07.14
11:24
(9)У меня такая таблица получается
Продукция(НоменклатурнаяГруппа) Материалы(Номенклатура) Колво
Прод1                           Мат1                      2
Прод2                           Мат2                      1
а я не знаю как сделать, чтобы получалась такая:
Продукция(НоменклатурнаяГруппа) Материалы(Номенклатура) Колво
Прод1                           Мат1                      2
Прод1                           Мат2                      0
Прод2                           Мат1                      0
Прод2                           Мат2                      1
11 Enders
 
14.07.14
11:25
(10) а у тебя что, один и тот же материал может принадлежать разным группам? Если да, то почему в примере только Прод1,Прод2, а как же Прод3,Прод4 и т.д.?)
12 EgorWonder
 
14.07.14
11:29
(11) Дак а может, в примере так для краткости написал
13 dk
 
14.07.14
11:32
а в документе что хранится? кинь пример документа
14 Ёпрст
 
14.07.14
11:33
(12) не пример, а хрень полная.. из второй таблички, первая запросм в (0) никак не получится, вообще.
15 Ёпрст
 
14.07.14
11:33
ну и группировать по количеству... это п..ц
16 Enders
 
14.07.14
11:33
(12) ну и как у тебя связана, допустим "Прод1" и "Мат2"
или "Прод2" и "Мат1"?)
17 Ёпрст
 
14.07.14
11:34
Мот,  тогда вообще не стОило применять группировку, не ?
18 Enders
 
14.07.14
11:38
(17) Там ещё кроме лишней группировки, переборщили с кол-вом выполнений запроса

рез = запрос.Выполнить().Выбрать();
ТабНГР = запрос.Выполнить().Выгрузить();
ТабН = запрос.Выполнить().Выгрузить();
19 EgorWonder
 
14.07.14
12:13
я конечно понимаю, что я туповат(мягко говоря)
(16) Если во всех документах разное количество номенклатурных групп и номенклатуры, как их связать?
вообще мне нужно заполнить макет:
  Изделия        (Ном)
(НомГруппа)     (Колво)        
НомГруппа заполняется вертикально, а Колво и Ном - горизонтально, дак вот, Номенклатура(Ном) должна быть вся, которая используется в документе, и если НомГруппа не использует такого товара, чтобы ставился 0.
20 EgorWonder
 
14.07.14
12:15
(19) если НомГруппа не использует такого Материала, чтобы колво ставилось 0.
21 Enders
 
14.07.14
12:22
1. Сначала выбери все варианты номенклатура, номенклатурная группа. Для этого сделай полное соединение ТЧ самой к себе по истина;
2. К полученному результату присоедини ещё раз свою ТЧ по НоменклатурнаяГруппа и номенклутара. Количество в ЕСТЬNull.
3. Готово.
22 Enders
 
14.07.14
12:23
+ к (21) Сначала ТЧ лучше отобрать во временную таблицу, и дальнейшие действия выполнять уже с ней.
23 EgorWonder
 
14.07.14
12:32
(21)Спасибо, сейчас попробую.