Имя: Пароль:
1C
1С v8
Как вывести общие итоги, при нажатии на кнопку печать
0 Igor_rubalka
 
29.09.15
09:48
Функция ПечатьПотребностиБезразмерные()
    З = Новый Запрос;
    З.Текст = "ВЫБРАТЬ
              |    ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток,
              |    ВложенныйЗапрос.Номенклатура.Родитель КАК Родитель,
              |    ВложенныйЗапрос.Номенклатура КАК Номенклатура,
              |    ВложенныйЗапрос.Количество КАК Количество,
              |    ВложенныйЗапрос.ЧастьОбуви КАК ЧастьОбуви
              |ИЗ
              |    (ВЫБРАТЬ
              |        ОтчетПроизводстваЗаСменуМатериалы.Номенклатура КАК Номенклатура,
              |        СУММА(ОтчетПроизводстваЗаСменуМатериалы.Количество) КАК Количество,
              |        ОтчетПроизводстваЗаСменуМатериалы.Ссылка.Склад КАК Склад,
              |        ОтчетПроизводстваЗаСменуМатериалы.ЧастьОбуви КАК ЧастьОбуви
              |    ИЗ
              |        Документ.ОтчетПроизводстваЗаСмену.Материалы КАК ОтчетПроизводстваЗаСменуМатериалы
              |    ГДЕ
              |        ОтчетПроизводстваЗаСменуМатериалы.Ссылка = &ТекущийДокумент
              |        И НЕ ОтчетПроизводстваЗаСменуМатериалы.Номенклатура.ВестиУчетПоХарактеристикам
              |    
              |    СГРУППИРОВАТЬ ПО
              |        ОтчетПроизводстваЗаСменуМатериалы.Номенклатура,
              |        ОтчетПроизводстваЗаСменуМатериалы.ЧастьОбуви,
              |        ОтчетПроизводстваЗаСменуМатериалы.Ссылка.Склад) КАК ВложенныйЗапрос
              |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаОст, Склад = &Склад) КАК ТоварыНаСкладахОстатки
              |        ПО ВложенныйЗапрос.Номенклатура = ТоварыНаСкладахОстатки.Номенклатура
              |            И ВложенныйЗапрос.Склад = ТоварыНаСкладахОстатки.Склад
              |
              |УПОРЯДОЧИТЬ ПО
              |    ВложенныйЗапрос.Номенклатура.Родитель.Наименование,
              |    ВложенныйЗапрос.Номенклатура.Наименование
              |ИТОГИ
              |    СУММА(КоличествоОстаток),
              |    СУММА(Количество)
              |ПО
              |    Родитель,
              |    Номенклатура,
              |    ЧастьОбуви";
    З.УстановитьПараметр("ТекущийДокумент", ЭтотОбъект.Ссылка);
    З.УстановитьПараметр("Склад", ЭтотОбъект.Склад);
    З.УстановитьПараметр("ДатаОст", Дата);
    //ВыборкаОБЩИЕ = З.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Общие");
    //ВыборкаОБЩИЕ.Следующий();
    //ВыборкаНоменклатура = З.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Номенклатура");
    ВыборкаРодитель = З.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Родитель");
    Таб = Новый ТабличныйДокумент;
    Макет = ПолучитьМакет("Потребности");
    Обл = Макет.ПолучитьОбласть("Шапка");
    Таб.Вывести(Обл);
    Пока ВыборкаРодитель.Следующий() Цикл
        Обл = Макет.ПолучитьОбласть("Родитель");
        Обл.Параметры.Заполнить(ВыборкаРодитель);
        Таб.Вывести(Обл);
        ВыборкаНоменклатура = ВыборкаРодитель.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Номенклатура");
        Пока ВыборкаНоменклатура.Следующий() Цикл
            ВыборкаЧастьОбуви = ВыборкаНоменклатура.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"ЧастьОбуви");
            Обл = Макет.ПолучитьОбласть("Номенклатура");
            Обл.Параметры.Заполнить(ВыборкаНоменклатура);
            Если ВыборкаНоменклатура.КоличествоОстаток = null Тогда
                Обл.Параметры.КоличествоОстаток = 0;
                КвоЧО = 1;
            Иначе
                КвоЧО = ВыборкаЧастьОбуви.Количество();
                Обл.Параметры.КоличествоОстаток = ВыборкаНоменклатура.КоличествоОстаток/КвоЧО;
            КонецЕсли;
            НадоОбеспечить = ?(ВыборкаНоменклатура.КоличествоОстаток = null,0,ВыборкаНоменклатура.КоличествоОстаток/КвоЧО) - ?(ВыборкаНоменклатура.Количество = null,0,ВыборкаНоменклатура.Количество);
            Если НадоОбеспечить<0 Тогда
                Обл.Параметры.НадоОбеспечить = - НадоОбеспечить;
            Иначе
                Обл.Параметры.НадоОбеспечить = 0;
            КонецЕсли;
            Таб.Вывести(Обл);
            
            Пока ВыборкаЧастьОбуви.Следующий() Цикл
                Если ВыборкаЧастьОбуви.ЧастьОбуви = Справочники.ЧастиОбуви.ПустаяСсылка() Тогда
                    Продолжить;
                КонецЕсли;
                Обл = Макет.ПолучитьОбласть("ЧастьОбуви");
                Обл.Параметры.Заполнить(ВыборкаЧастьОбуви);
                Таб.Вывести(Обл);
            КонецЦикла;
            //Если Не ВыборкаНоменклатура.Номенклатура.ВестиУчетПоХарактеристикам Тогда
            //    Продолжить;
            //КонецЕсли;
            //ВыборкаРазмер = ВыборкаНоменклатура.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"ХарактеристикаНоменклатуры");
            //Пока ВыборкаРазмер.Следующий() Цикл
            //    Обл = Макет.ПолучитьОбласть("Характеристика");
            //    Обл.Параметры.Заполнить(ВыборкаРазмер);
            //    НадоОбеспечить = ?(ВыборкаРазмер.КоличествоОстаток = null,0,ВыборкаРазмер.КоличествоОстаток) - ?(ВыборкаРазмер.Количество = null,0,ВыборкаРазмер.Количество);
            //    Если НадоОбеспечить<0 Тогда
            //        Обл.Параметры.НадоОбеспечить = - НадоОбеспечить;
            //    Иначе
            //        Обл.Параметры.НадоОбеспечить = 0;
            //    КонецЕсли;
            //    Таб.Вывести(Обл);
            //КонецЦикла;
        КонецЦикла;
    КонецЦикла;
    Обл = Макет.ПолучитьОбласть("Итог");
    //Обл.Параметры.Заполнить(ВыборкаОБЩИЕ);
    Таб.Вывести(Обл);
    Возврат Таб;
КонецФункции



Мне надо чтобы выводились общие итоги. Как это можно реализовать?
1 vicof
 
29.09.15
09:49
Также, как и вывод других областей. Пример перед глазами.
2 aka AMIGO
 
29.09.15
09:49
Не выводятся итоги? И что говорит отладчик?
4 aka AMIGO
 
модератор
29.09.15
09:51
(3) Не-На-До!
5 Igor_rubalka
 
29.09.15
09:52
Итоги выводятся, только общие по группам не выводятся
6 vicof
 
29.09.15
09:53
(5) Будь мужиком, сделай на СКД
7 Igor_rubalka
 
29.09.15
09:55
(6) Я только начинающий, даже не знаю что делать. Помогите как можете
8 Buster007
 
29.09.15
10:01
(7) для начинающего отлично подходит метод "тыка"
9 Igor_rubalka
 
29.09.15
10:04
(8) Ну да, но че и куда тыкать я немного не пойму =(
10 vicof
 
29.09.15
10:13
11 Igor_rubalka
 
29.09.15
10:20
(10) А дописать кодом как-то можно?
Программист всегда исправляет последнюю ошибку.