Имя: Пароль:
1C
1С v8
Печать нескольких макетов в зависимости от кол-ва Складов в док. Авансовый отчет
0 capllary
 
14.11.14
10:25
Всем привет. Нужна помощь в реализации печати кол-ва Приходных ордеров (форма М-4) в документе Авансовый отчет УПП 1.3 в зависимости от кол-ва разных Складов в табчасти Товары.

Пока что высчитал кол-во разных складов таким запросом:

//Запрос кол-ва складов
    ЗапросПоСкладам = Новый Запрос();
    ЗапросПоСкладам.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект.Ссылка);
    ЗапросПоСкладам.Текст = "ВЫБРАТЬ
                            |    ВложенныйЗапрос.Склад
                            |ИЗ
                            |    (ВЫБРАТЬ
                            |        КОЛИЧЕСТВО(РАЗЛИЧНЫЕ АвансовыйОтчет.Склад) КАК Склад
                            |    ИЗ
                            |        Документ.АвансовыйОтчет.Товары КАК АвансовыйОтчет
                            |    ГДЕ
                            |        АвансовыйОтчет.Ссылка = &ТекущийДокумент) КАК ВложенныйЗапрос";
    ЗапросТовары = ЗапросПоСкладам.Выполнить().Выбрать();
    ЗапросТовары.Следующий();
    КолвоПереданныхОбъектов = ЗапросТовары.Склад;




А как дальше прописать чтобы получить то кол-во макетов сколько и складов не знаю.
1 capllary
 
14.11.14
10:26
Выбор разных складов в документе уже реализовал.
2 Azverin
 
14.11.14
10:27
если количество()>0 то цикл по складам и внутри формируй и выводи на печать макеты
3 capllary
 
14.11.14
10:31
(2) А как прописать чтоб кол-во циклов было = КолвоПереданныхОбъектов?
4 Azverin
 
14.11.14
10:54
(3) Пока Выборка.Следующий() Цикл
у тебя же в Выборке различные склады?
5 capllary
 
14.11.14
11:09
(4) Да, разные склады.

Я вот что написал, но оно не работает:
//Запрос кол-ва складов
    ЗапросПоСкладам = Новый Запрос();
    ЗапросПоСкладам.УстановитьПараметр("ТекущийДокумент", СсылкаНаОбъект.Ссылка);
    ЗапросПоСкладам.Текст = "ВЫБРАТЬ
                            |    ВложенныйЗапрос.Склад
                            |ИЗ
                            |    (ВЫБРАТЬ
                            |        КОЛИЧЕСТВО(РАЗЛИЧНЫЕ АвансовыйОтчет.Склад) КАК Склад
                            |    ИЗ
                            |        Документ.АвансовыйОтчет.Товары КАК АвансовыйОтчет
                            |    ГДЕ
                            |        АвансовыйОтчет.Ссылка = &ТекущийДокумент) КАК ВложенныйЗапрос";
    ЗапросТовары = ЗапросПоСкладам.Выполнить().Выбрать();
    ЗапросТовары.Следующий();
    КолвоПереданныхОбъектов = ЗапросТовары.Склад;
    
    к = 1;
    Пока ЗапросТовары.Следующий() Цикл
            
        Если к = КолвоПереданныхОбъектов Тогда
           Прервать;
        КонецЕсли;
        
        
        
        
        
        
    // Зададим параметры макета
    ТабДок=Новый ТабличныйДокумент;
    ТабДок.ПолеСверху         = 0;
    ТабДок.ПолеСлева          = 0;
    ТабДок.ПолеСнизу          = 0;
    ТабДок.ПолеСправа         = 0;
    ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
    ТабДок.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_АвансовыйОтчет_М4";
    Макет = ПолучитьМакет("М4");
    
    //Заполним Шапку
    Шапка=Макет.ПолучитьОбласть("Шапка");
    Шапка.Параметры.Заполнить(Шапка);
    СведенияОПокупателе = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка_запрос.Организация, Шапка_запрос.ДатаСоставления);
    Адрес = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПокупателе, "ЮридическийАдрес");
    Телеф = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПокупателе, "Телефоны");
    Шапка.Параметры.ПредставлениеОрганизации = СсылкаНаОбъект.Организация.НаименованиеСокращенное + "  "+Адрес+"  "+Телеф;
    Шапка.Параметры.ОрганизацияПоОКПО        = СведенияОПокупателе.КодПоОКПО;
    Шапка.Параметры.НомерДокумента           = ОбщегоНазначения.ПолучитьНомерНаПечать(Шапка_запрос);
    ТабДок.Вывести(Шапка);
    
    // Заполним заголовок докмента
    ЗаголовокДокумента=Макет.ПолучитьОбласть("ЗаголовокДокумента");
    ЗаголовокДокумента.Параметры.Заполнить(ЗаголовокДокумента);
    ЗаголовокДокумента.Параметры.Заполнить(Шапка_запрос);
    ЗаголовокДокумента.Параметры.Дата = Шапка_запрос.ДатаСоставления;
    ПредставлениеКонтрагента = Шапка_запрос.Поставщик;
    ЗаголовокДокумента.Параметры.ПоставщикНаименование = ПредставлениеКонтрагента;
    ТабДок.Вывести(ЗаголовокДокумента);

    // Заполним ЗаголовокТаблицы
    ЗаголовокТаблицы=Макет.ПолучитьОбласть("ЗаголовокТаблицы");
    ЗаголовокТаблицы.Параметры.Заполнить(ЗаголовокТаблицы);
    ТабДок.Вывести(ЗаголовокТаблицы);
    
    //Заполним Строка
    Строка=Макет.ПолучитьОбласть("Строка");
    Строка.Параметры.Заполнить(Строка);

    // Инициализация итогов в документе
    ИтогоКоличествоПринято = 0;
    ИтогоСуммаБезНДС       = 0;
    ИтогоСуммаНДС          = 0;
    ИтогоВсегоСНДС         = 0;
    Ном                    = 0;
    НомерСтраницы   = 1;
    НомерСтроки     = 0;
    КоличествоСтрок = ЗапросТовары.Количество();
    
    Для Каждого ВыборкаСтрок Из ЗапросТовары Цикл
    Строка.Параметры.Заполнить(ВыборкаСтрок);
        Кратность = ?(Шапка_запрос.Кратность = 0, 1, Шапка_запрос.Кратность);
        ВсегоСНДС = (ВыборкаСтрок.Стоимость
                  + ?(Шапка_запрос.СуммаВключаетНДС, 0, ВыборкаСтрок.СуммаНДС));

        КоличествоПринято = ВыборкаСтрок.КоличествоПринято;
        СуммаНДС          = ВыборкаСтрок.СуммаНДС;
        Цена              = (ВсегоСНДС - СуммаНДС) / ?(КоличествоПринято = 0, 1, КоличествоПринято);

        Строка.Параметры.КоличествоПринято = КоличествоПринято;
        Строка.Параметры.ВсегоСНДС         = ВсегоСНДС;
        Строка.Параметры.СуммаБезНДС       = ВсегоСНДС - СуммаНДС;
        Строка.Параметры.СуммаНДС          = СуммаНДС;
        Строка.Параметры.Цена              = Цена;
        Строка.Параметры.ТоварНаименование = СокрЛП(ВыборкаСтрок.ТоварНаименование);
        ТабДок.Вывести(Строка);
        ИтогоКоличествоПринято = ИтогоКоличествоПринято + КоличествоПринято;
        ИтогоСуммаБезНДС       = ИтогоСуммаБезНДС       + ВсегоСНДС - СуммаНДС;
        ИтогоСуммаНДС          = ИтогоСуммаНДС          + СуммаНДС;
        ИтогоВсегоСНДС         = ИтогоВсегоСНДС         + ВсегоСНДС;
        КонецЦикла;
    
        // Заполним Итого
        Итого=Макет.ПолучитьОбласть("Итого");
        Итого.Параметры.Заполнить(Итого);
        Итого.Параметры.ИтогоКоличествоПринято = ИтогоКоличествоПринято;
        Итого.Параметры.ИтогоСуммаБезНДС       = ИтогоСуммаБезНДС;
        Итого.Параметры.ИтогоСуммаНДС          = ИтогоСуммаНДС;
        Итого.Параметры.ИтогоВсегоСНДС         = ИтогоВсегоСНДС;
        ТабДок.Вывести(Итого);    
        
        // Заполним Подвал
        Подвал = Макет.ПолучитьОбласть("Подвал");
        Подвал.Параметры.Заполнить(Подвал);
        ПредставлениеКонтрагента = Шапка_запрос.Поставщик;
        Подвал.Параметры.ФИОМОЛ=ПредставлениеКонтрагента;
        Руководители = ОбщегоНазначения.ОтветственныеЛица(СсылкаНаОбъект.Организация, СсылкаНаобъект.Дата, ПодразделениеОтветственныхЛиц );        
        Подвал.Параметры.ДолжностьПоставщика = Руководители.РуководительДолжность;
        Подвал.Параметры.ФИОПоставщика = Руководители.РуководительПредставление;
        ТабДок.Вывести(Подвал);

    Возврат ТабДок;
    КонецЦикла;
6 capllary
 
14.11.14
12:23
Может у кого нибудь появились какие нибудь идеи?
7 Looser-1c
 
14.11.14
12:25
8 capllary
 
14.11.14
12:26
(7) Шутник, однако)
9 capllary
 
14.11.14
12:26
Уже и так попробовал:

к = -1;
    Пока ЗапросТовары.Следующий() Цикл
            
                
        
        
        
        
        
    // Зададим параметры макета
    ТабДок=Новый ТабличныйДокумент;
    ТабДок.ПолеСверху         = 0;
    ТабДок.ПолеСлева          = 0;
    ТабДок.ПолеСнизу          = 0;
    ТабДок.ПолеСправа         = 0;
    ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
    ТабДок.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_АвансовыйОтчет_М4";
    Макет = ПолучитьМакет("М4");
    
    //Заполним Шапку
    Шапка=Макет.ПолучитьОбласть("Шапка");
    Шапка.Параметры.Заполнить(Шапка);
    СведенияОПокупателе = УправлениеКонтактнойИнформацией.СведенияОЮрФизЛице(Шапка_запрос.Организация, Шапка_запрос.ДатаСоставления);
    Адрес = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПокупателе, "ЮридическийАдрес");
    Телеф = ФормированиеПечатныхФорм.ОписаниеОрганизации(СведенияОПокупателе, "Телефоны");
    Шапка.Параметры.ПредставлениеОрганизации = СсылкаНаОбъект.Организация.НаименованиеСокращенное + "  "+Адрес+"  "+Телеф;
    Шапка.Параметры.ОрганизацияПоОКПО        = СведенияОПокупателе.КодПоОКПО;
    Шапка.Параметры.НомерДокумента           = ОбщегоНазначения.ПолучитьНомерНаПечать(Шапка_запрос);
    ТабДок.Вывести(Шапка);
    
    // Заполним заголовок докмента
    ЗаголовокДокумента=Макет.ПолучитьОбласть("ЗаголовокДокумента");
    ЗаголовокДокумента.Параметры.Заполнить(ЗаголовокДокумента);
    ЗаголовокДокумента.Параметры.Заполнить(Шапка_запрос);
    ЗаголовокДокумента.Параметры.Дата = Шапка_запрос.ДатаСоставления;
    ПредставлениеКонтрагента = Шапка_запрос.Поставщик;
    ЗаголовокДокумента.Параметры.ПоставщикНаименование = ПредставлениеКонтрагента;
    ТабДок.Вывести(ЗаголовокДокумента);

    // Заполним ЗаголовокТаблицы
    ЗаголовокТаблицы=Макет.ПолучитьОбласть("ЗаголовокТаблицы");
    ЗаголовокТаблицы.Параметры.Заполнить(ЗаголовокТаблицы);
    ТабДок.Вывести(ЗаголовокТаблицы);
    
    //Заполним Строка
    Строка=Макет.ПолучитьОбласть("Строка");
    Строка.Параметры.Заполнить(Строка);

    // Инициализация итогов в документе
    ИтогоКоличествоПринято = 0;
    ИтогоСуммаБезНДС       = 0;
    ИтогоСуммаНДС          = 0;
    ИтогоВсегоСНДС         = 0;
    Ном                    = 0;
    НомерСтраницы   = 1;
    НомерСтроки     = 0;
    КоличествоСтрок = ЗапросТовары.Количество();
    
    Для Каждого ВыборкаСтрок Из ЗапросТовары Цикл
    Строка.Параметры.Заполнить(ВыборкаСтрок);
        Кратность = ?(Шапка_запрос.Кратность = 0, 1, Шапка_запрос.Кратность);
        ВсегоСНДС = (ВыборкаСтрок.Стоимость
                  + ?(Шапка_запрос.СуммаВключаетНДС, 0, ВыборкаСтрок.СуммаНДС));

        КоличествоПринято = ВыборкаСтрок.КоличествоПринято;
        СуммаНДС          = ВыборкаСтрок.СуммаНДС;
        Цена              = (ВсегоСНДС - СуммаНДС) / ?(КоличествоПринято = 0, 1, КоличествоПринято);

        Строка.Параметры.КоличествоПринято = КоличествоПринято;
        Строка.Параметры.ВсегоСНДС         = ВсегоСНДС;
        Строка.Параметры.СуммаБезНДС       = ВсегоСНДС - СуммаНДС;
        Строка.Параметры.СуммаНДС          = СуммаНДС;
        Строка.Параметры.Цена              = Цена;
        Строка.Параметры.ТоварНаименование = СокрЛП(ВыборкаСтрок.ТоварНаименование);
        ТабДок.Вывести(Строка);
        ИтогоКоличествоПринято = ИтогоКоличествоПринято + КоличествоПринято;
        ИтогоСуммаБезНДС       = ИтогоСуммаБезНДС       + ВсегоСНДС - СуммаНДС;
        ИтогоСуммаНДС          = ИтогоСуммаНДС          + СуммаНДС;
        ИтогоВсегоСНДС         = ИтогоВсегоСНДС         + ВсегоСНДС;
        КонецЦикла;
    
        // Заполним Итого
        Итого=Макет.ПолучитьОбласть("Итого");
        Итого.Параметры.Заполнить(Итого);
        Итого.Параметры.ИтогоКоличествоПринято = ИтогоКоличествоПринято;
        Итого.Параметры.ИтогоСуммаБезНДС       = ИтогоСуммаБезНДС;
        Итого.Параметры.ИтогоСуммаНДС          = ИтогоСуммаНДС;
        Итого.Параметры.ИтогоВсегоСНДС         = ИтогоВсегоСНДС;
        ТабДок.Вывести(Итого);    
        
        // Заполним Подвал
        Подвал = Макет.ПолучитьОбласть("Подвал");
        Подвал.Параметры.Заполнить(Подвал);
        ПредставлениеКонтрагента = Шапка_запрос.Поставщик;
        Подвал.Параметры.ФИОМОЛ=ПредставлениеКонтрагента;
        Руководители = ОбщегоНазначения.ОтветственныеЛица(СсылкаНаОбъект.Организация, СсылкаНаобъект.Дата, ПодразделениеОтветственныхЛиц );        
        Подвал.Параметры.ДолжностьПоставщика = Руководители.РуководительДолжность;
        Подвал.Параметры.ФИОПоставщика = Руководители.РуководительПредставление;
        ТабДок.Вывести(Подвал);

    Возврат ТабДок;
    Если к = КолвоПереданныхОбъектов Тогда
           Прервать;
    КонецЕсли;

    к = к + 1;
    КонецЦикла;


Все равно не печатает.