Имя: Пароль:
1C
1С v8
Помогите с циклом
,
0 EgorWonder
 
17.07.14
09:33
Для каждого строка из ТабН цикл
         Область = Макет.ПолучитьОбласть("НГ");
         Область.Параметры.НоменклатурнаяГруппа = Строка.НоменклатурнаяГруппа;
         ТабДокумент.Присоединить(Область)  ;
конеццикла;
Как вставить сюда условие так, чтобы номенклатурные группы не повторялись (просто нужно чтобы в макете заполнялось так)
                         <Материалы>
<НоменклатурнаяГруппа>  <Количестово>  
НоменклатурнаяГруппа по вертикали, а <Материалы> и <Количестово> по горизонтали.
1 mikecool
 
17.07.14
09:35
добавить цикл по материалам
2 Redkiy
 
17.07.14
09:35
СКД тебе в помощь
3 EgorWonder
 
17.07.14
09:37
(1) он есть и работает как нужно. Я не знаю как поставить условие, чтобы НомГруппы не повторялись, при этом заполнялось Количество материалов.
4 informts
 
17.07.14
09:38
только 3 цикла делать, определять количество столбцов.
5 EgorWonder
 
17.07.14
09:40
(4) Функция Печать() Экспорт
ТабДокумент = Новый ТабличныйДокумент;
     запрос = новый запрос;
     Запрос.УстановитьПараметр("Док", СсылкаНаОбъект);
     Запрос.УстановитьПараметр("ДокТ", СсылкаНаОбъект);
          Запрос.Текст = "ВЫБРАТЬ
                         |    ТребованиеНакладнаяМатериалы.НоменклатурнаяГруппа КАК НоменклатурнаяГруппа,
                         |    ТребованиеНакладнаяМатериалы.Номенклатура,
                         |    ТребованиеНакладнаяМатериалы.Ссылка,
                         |    ТребованиеНакладнаяМатериалы.Количество КАК Итог,
                         |    ЕСТЬNULL(ТНМ.Количество, 0) КАК Колво,
                         |    ТНМ.Номенклатура КАК Номенклатура1,
                         |    ТНМ.НоменклатурнаяГруппа КАК НоменклатурнаяГруппа1
                         |ИЗ
                         |    Документ.ТребованиеНакладная.Материалы КАК ТребованиеНакладнаяМатериалы
                         |        ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                         |            ТребованиеНакладнаяМатериалы.Номенклатура КАК Номенклатура,
                         |            ТребованиеНакладнаяМатериалы.НоменклатурнаяГруппа КАК НоменклатурнаяГруппа,
                         |            ТребованиеНакладнаяМатериалы.Ссылка КАК Ссылка,
                         |            ТребованиеНакладнаяМатериалы.Количество КАК Количество
                         |        ИЗ
                         |            Документ.ТребованиеНакладная.Материалы КАК ТребованиеНакладнаяМатериалы
                         |        ГДЕ
                         |            ТребованиеНакладнаяМатериалы.Ссылка = &Докт) КАК ТНМ
                         |        ПО (ИСТИНА)
                         |ГДЕ
                         |    ТребованиеНакладнаяМатериалы.Ссылка = &Док
                         |
                         |УПОРЯДОЧИТЬ ПО
                         |    НоменклатурнаяГруппа";
    ТабНГР = запрос.Выполнить().Выгрузить();
    ТабНГР.Свернуть("Номенклатура");
    ТабН = запрос.Выполнить().Выгрузить();
    ТабН.Свернуть("НоменклатурнаяГруппа, Колво");
Макет = ПолучитьМакет("ПроизводственноеЗадание");
Область = Макет.ПолучитьОбласть("ШапкаПС|ШП");
Область.Параметры.Организация = ссылканаобъект.Организация;
ТабДокумент.Вывести(Область);
Область = Макет.ПолучитьОбласть("Шапка|ШП");
ТабДокумент.Вывести(Область);
Для каждого строка из ТабНГР цикл
    Область = Макет.ПолучитьОбласть("Шапка|ном");
    область.Параметры.Номенклатура = Строка.Номенклатура;
    ТабДокумент.Присоединить(Область);
конеццикла;
Для каждого строка из ТабН цикл
         Область = Макет.ПолучитьОбласть("НГ");
         Область.Параметры.НоменклатурнаяГруппа = Строка.НоменклатурнаяГруппа;
         ТабДокумент.Присоединить(Область)  ;
конеццикла;
Область = Макет.ПолучитьОбласть("Итого|ШП");
ТабДокумент.Вывести(Область);
Возврат ТабДокумент;
конецфункции
6 mikecool
 
17.07.14
09:42
Запрос по ном группе, материалу, количеству
итоги по ном группе
все
7 zak555
 
17.07.14
09:42
(4) зачем три ?
8 zak555
 
17.07.14
09:43
> Область.Параметры.НоменклатурнаяГруппа = Строка.НоменклатурнаяГруппа;

заменить на заполнить
9 User_Agronom
 
17.07.14
09:43
Ох уж эти 1С-ники. Горе программеры.

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

Нафига область получать 100500 раз?
10 informts
 
17.07.14
09:44
Можно и через итоги. Кинь мне в почту, макет еще посмотреть :)
11 User_Agronom
 
17.07.14
09:46
(10) Ну да. Сгруппировать по какому-то полю и выгрузить деревом. Хорошее решение.
12 spiller26
 
17.07.14
09:48
(10) через итоги или СКД.
13 EgorWonder
 
17.07.14
09:49
(9) ну я не отрицаю, что руко*опый, но все приходит с опытом)
14 EgorWonder
 
17.07.14
09:49
(10) скинул
15 User_Agronom
 
17.07.14
09:59
(14) Неправильный подход.
Разберись с назначением "ИТОГИ ПО" в запросе, чем отличается выгрузить по группировкам от прямой выгрузки.
Тогда, в следующий раз, не придётся спрашивать на форуме.
16 0xFFFFFF
 
17.07.14
09:59
(9) на всякий случай. А вдруг с первого раза не получит? :)))
17 EgorWonder
 
17.07.14
10:09
(15) ВЫБРАТЬ
                         |    ТребованиеНакладнаяМатериалы.НоменклатурнаяГруппа КАК НоменклатурнаяГруппа,
                         |    ТребованиеНакладнаяМатериалы.Номенклатура,
                         |    ТребованиеНакладнаяМатериалы.Ссылка,
                         |    ТребованиеНакладнаяМатериалы.Количество КАК Итог,
                         |    ЕСТЬNULL(ТНМ.Количество, 0) КАК Колво,
                         |    ТНМ.Номенклатура КАК Номенклатура1,
                         |    ТНМ.НоменклатурнаяГруппа КАК НоменклатурнаяГруппа1
                         |ИЗ
                         |    Документ.ТребованиеНакладная.Материалы КАК ТребованиеНакладнаяМатериалы
                         |        ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                         |            ТребованиеНакладнаяМатериалы.Номенклатура КАК Номенклатура,
                         |            ТребованиеНакладнаяМатериалы.НоменклатурнаяГруппа КАК НоменклатурнаяГруппа,
                         |            ТребованиеНакладнаяМатериалы.Ссылка КАК Ссылка,
                         |            ТребованиеНакладнаяМатериалы.Количество КАК Количество
                         |        ИЗ
                         |            Документ.ТребованиеНакладная.Материалы КАК ТребованиеНакладнаяМатериалы
                         |        ГДЕ
                         |            ТребованиеНакладнаяМатериалы.Ссылка = &Докт) КАК ТНМ
                         |        ПО (ИСТИНА)
                         |ГДЕ
                         |    ТребованиеНакладнаяМатериалы.Ссылка = &Док
                         |
                         |УПОРЯДОЧИТЬ ПО
                         |    НоменклатурнаяГруппа
                         |ИТОГИ
                         |    СУММА(Итог)
                         |ПО
                         |    НоменклатурнаяГруппа
так?
18 informts
 
17.07.14
10:10
Отправил циклами, но по хорошему через итоги лучше делать.
19 EgorWonder
 
17.07.14
10:15
а может кто-нибудь ссылку скинуть, там где хорошо итоги объясняют?
20 informts
 
17.07.14
10:27
21 User_Agronom
 
17.07.14
10:33
(17) Да. Ещё когда Выгрузить(ОбходВсейХрени.ПоГруппировкамс)
22 spiller26
 
17.07.14
10:42
Вот как то так

    |СГРУППИРОВАТЬ ПО
    |    ВТ.Организация,
    |    ВТ.НоменклатурнаяГруппа,
    |    ВТ.Номенклатура,
    |    ВТ.Контрагент
    |ИТОГИ
    |    СУММА(ПланМесяц),
    |    СУММА(ФактМесяц),
    |    СУММА(ПланДень),
    |    СУММА(ФактДень)
    |ПО
    |    Организация,
    |    Контрагент,
    |    НоменклатурнаяГруппа,
    |    Номенклатура";
    Рез = Запрос.Выполнить();

    РезОрг = Рез.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "Организация");
    Пока РезОрг.Следующий() Цикл
//вывод по РезОрг
РезНомГр = РезОрг.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "НоменклатурнаяГруппа");
Пока РезНомГр.Следующий() Цикл
//вывод по РезНомГр
КонецЦикла;
КонецЦикла;
23 samozvanec
 
17.07.14
10:59
(19) а ты конструктор открой и сам попробуй
24 EgorWonder
 
17.07.14
11:08
(23) да открывал, пробовал... но немножечко теории и других примеров не помешает
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn