Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

как сделать такой отчет?

как сделать такой  отчет?
Я
   1cKILL
 
07.07.20 - 21:44
Всем приятного вечера!

Дайте совет . нужно вывести в макет  отчет  сколько раз сколько у контрагента договоров

ранее в шапке выбирал реквизиты контрагент договор . теперь надо переделать .чтоб выводил сразу по всем договорам контрагента   ( суммы платежей) долги .
   1cKILL
 
1 - 07.07.20 - 21:47
Пример    Евромакс  суммаоплаты   долг 

                     10000        5000
         итог        34432        3434

  Евромакс  суммаоплаты   долг 

                     43534        65656
         итог        54343        665665

  Евромакс  суммаоплаты   долг 

                     767677       65656
         итог        56777         88888
   Ёпрст
 
2 - 07.07.20 - 21:47
   1cKILL
 
3 - 07.07.20 - 21:49
(2)  что значит итоги обходи?

итак уже все обойдено
   Ёпрст
 
4 - 07.07.20 - 21:51
(3) нам отсюда не видно, откуда ты берешь данные и как выводишь ЭТО в отчет
Если что, в текст запроса воткни Итоги Клиентос, Договор  и потом при обходе запроса обходи по группировкам
   1cKILL
 
5 - 07.07.20 - 21:52
(4) Итого:    СуммаПлатежа    СуммаОплаты    СуммаДолга
   Ёпрст
 
6 - 07.07.20 - 21:53
   1cKILL
 
7 - 07.07.20 - 21:54
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда



// Выполняет запрос и формирует табличный документ-результат отчета

// в соответствии с настройками, заданными значениями реквизитов отчета.
//

// Параметры:
//    ДокументРезультат - табличный документ, формируемый отчетом

//    ПоказыватьЗаголовок - признак видимости строк с заголовком отчета
//    ВысотаЗаголовка - параметр, через который возвращается высота заголовка в строках 

//  ДокументОбъект - если указан, то печать отчета по документу
//

Процедура СформироватьОтчет(Знач ПараметрыОтчета, АдресХранилища) Экспорт
     
     

    
    ДокументРезультат = Новый ТабличныйДокумент;
    
    ДокументРезультат.ОриентацияСтраницы    = ОриентацияСтраницы.Портрет;
    ДокументРезультат.АвтоМасштаб            = Истина;
    
    Макет = ПолучитьМакет("ТаблицаПросрочки");
    
    ОбластьЗаголовок  = Макет.ПолучитьОбласть("Заголовок");
    
    Заголовок = "Платежная Дисциплина ";//+Формат(ПараметрыОтчета.ДатаОтчета,"ДЛФ=ДД");

    
    СведенияОбОрганизации    = БухгалтерскийУчетПереопределяемый.СведенияОЮрФизЛице(ПараметрыОтчета.Организация,
        ПараметрыОтчета.ДатаОтчета);
        
    ПредставлениеОрганизации = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОбОрганизации, "НаименованиеДляПечатныхФорм,");
    ОбластьЗаголовок.Параметры.НазваниеОрганизации = ПредставлениеОрганизации;
    ОбластьЗаголовок.Параметры.Контрагент = ПараметрыОтчета.Контрагент.НаименованиеПолное;
    ОбластьЗаголовок.Параметры.ДоговорКонтрагента = ПараметрыОтчета.ДоговорКонтрагента.Наименование;
    
    ОбластьЗаголовок.Параметры.Заголовок    = Заголовок;
    
    ДокументРезультат.Вывести(ОбластьЗаголовок);
    
    ВывестиВОтчетДанные(ПараметрыОтчета, ДокументРезультат, Макет);
    
    // Vit ++ 22.02.2019

    Если ПараметрыОтчета.Организация = Справочники.Организации.НайтиПоРеквизиту("ИНН","7702319584") Тогда  // Ликонс

        ОбластьПодвал = Макет.ПолучитьОбласть("ПодвалЛинонс");
        // Представитель организации

        ДанныеПредставителяОрганизации = ДанныеПредставителяОрганизации(ПараметрыОтчета);
        //ОбластьПодвал.Параметры.Должность = ДанныеПредставителяОрганизации.Должность;

        ОбластьПодвал.Параметры.ФИОПредставителя = СтрШаблон("(%1)", ДанныеПредставителяОрганизации.Представление);
        ОбластьПодвал.Параметры.НазваниеОрганизацииСокр = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОбОрганизации, "СокращенноеНаименование,");
        ОбластьПодвал.Параметры.Контрагент = ПараметрыОтчета.Контрагент.НаименованиеПолное;
        
    ИначеЕсли ПараметрыОтчета.Организация = Справочники.Организации.НайтиПоРеквизиту("ИНН","7709498220")  Тогда  //Релиз

        ОбластьПодвал = Макет.ПолучитьОбласть("ПодвалРелиз");
        // Представитель организации

        ДанныеПредставителяОрганизации = ДанныеПредставителяОрганизации(ПараметрыОтчета);
        //ОбластьПодвал.Параметры.Должность = ДанныеПредставителяОрганизации.Должность;

        ОбластьПодвал.Параметры.ФИОПредставителя = "Алексеев С.Н.";
        ОбластьПодвал.Параметры.НазваниеОрганизацииСокр = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОбОрганизации, "СокращенноеНаименование,");
        ОбластьПодвал.Параметры.Контрагент = ПараметрыОтчета.Контрагент.НаименованиеПолное;
    Иначе
        ОбластьПодвал  = Макет.ПолучитьОбласть("Подвал");
        // Представитель организации

        ДанныеПредставителяОрганизации = ДанныеПредставителяОрганизации(ПараметрыОтчета);
        //ОбластьПодвал.Параметры.Должность = ДанныеПредставителяОрганизации.Должность;

        ОбластьПодвал.Параметры.ФИОПредставителя = СтрШаблон("(%1)", ДанныеПредставителяОрганизации.Представление);
        ОбластьПодвал.Параметры.НазваниеОрганизацииСокр = ОбщегоНазначенияБПВызовСервера.ОписаниеОрганизации(СведенияОбОрганизации, "СокращенноеНаименование,");
        ОбластьПодвал.Параметры.Контрагент = ПараметрыОтчета.Контрагент.НаименованиеПолное;
        
    КонецЕсли;     
    
    // Vit -- 22.02.2019 

    
    ДокументРезультат.Вывести(ОбластьПодвал);
    
    // Vit ++ 28.02.2019

    Если  НЕ ПараметрыОтчета.СПечатью Тогда
        ПустаяКартинка= Новый Картинка; 
        ДокументРезультат.Рисунки.D1.Картинка = ПустаяКартинка;
        ДокументРезультат.Рисунки.D2.Картинка = ПустаяКартинка;
    КонецЕсли; 
    // Vit -- 28.02.2019 


    ПоместитьВоВременноеХранилище(ДокументРезультат, АдресХранилища);
    
КонецПроцедуры

// Выполняет запрос и формирует таблицу

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

    ГрафикДоговораЛизинг = ПолучитьПоследнийГрафикЛизинг(ПараметрыОтчета);
    
    Если ГрафикДоговораЛизинг = Неопределено Тогда
        Возврат;
    КонецЕсли;    
    
    тзДанные = ГрафикДоговораЛизинг.ОсновныеДанные.Выгрузить(,"ДатаПлатежа,СуммаПлатежа");
    тзДанные.Колонки.Добавить("СуммаОплаты", Новый ОписаниеТипов("Число", Новый КвалификаторыЧисла(15,2)));
    
    Если тзДанные.Количество() = 0 Тогда
        Возврат;
    КонецЕсли;    
    
    ОСВыборка = ПолучитьОсновныеСредства(ПараметрыОтчета);
    Пока ОСВыборка.Следующий() Цикл
        стрОС = тзОС.Добавить();
        стрОС.ОсновноеСредство = ОСВыборка.ОсновноеСредство;
        стрОС.Выбыло = ОСВыборка.ОСВыбыло;
    КонецЦикла;    
    
    ОплатаПрошлыхПериодов = ПолучитьДанныеОплатаПрошлыхПериодов(ПараметрыОтчета,тзОС);
    
    
    Для каждого текстрока из тзДанные Цикл
        Если ОплатаПрошлыхПериодов <= 0 Тогда
            Прервать;
        КонецЕсли;    
        ТекСумма = Мин(ОплатаПрошлыхПериодов,текстрока.СуммаПлатежа); 
        текстрока.СуммаОплаты = ТекСумма;
        ОплатаПрошлыхПериодов = ОплатаПрошлыхПериодов - ТекСумма;
    КонецЦикла;    
    ОплатыВыборка = ПолучитьВсеОплаты(ПараметрыОтчета,тзОС);
    Пока ОплатыВыборка.Следующий() Цикл
        стрОплата = тзДанные.Добавить();
        стрОплата.ДатаПлатежа = ОплатыВыборка.Дата;
        стрОплата.СуммаОплаты = ОплатыВыборка.Сумма;
    КонецЦикла;
    
    ОплатыВозвраты = ПолучитьВсеВозвраты(ПараметрыОтчета, тзОС);
    Пока ОплатыВозвраты.Следующий() Цикл
        стрВозвраты = тзДанные.Добавить();
        стрВозвраты.ДатаПлатежа = ОплатыВозвраты.Дата;
        стрВозвраты.СуммаОплаты = -ОплатыВозвраты.Сумма;
    КонецЦикла;
    
    тзДанные.Свернуть("ДатаПлатежа","СуммаПлатежа,СуммаОплаты");
    тзДанные.Сортировать("ДатаПлатежа");
                   
    //Вывод ШАПКИ

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

    ИтогоСуммаПлатежа = 0;
    ИтогоСуммаОплаты = 0;
    ДолгПрошлыйПериод = 0;
    ДолгНакопление = 0;
    ПрошлыйСчет = 0;
    СуммаСчета = 0;
    ПозаПрошлыйСчет = 0;
    Для Каждого стр из тзДанные Цикл
        ДлительностьДолга = "";
        Если стр.СуммаПлатежа > 0 Тогда
            //ДеньОтсчета = стр.ДатаПлатежа;

            //Сообщить(""+ДеньОтсчета);

            ПозаПрошлыйСчет = ПрошлыйСчет;
            ПрошлыйСчет = СуммаСчета;
            СуммаСчета = стр.СуммаПлатежа;
            //ДолгПрошлыйПериод = ДолгНакопление;

        КонецЕсли;
        Если стр.ДатаПлатежа > ПараметрыОтчета.ДатаОтчета Тогда
            Продолжить;
        КонецЕсли;     
        ОбластьСтрока.Параметры.Заполнить(стр);    
        ОбластьСтрока.Параметры.ДатаПлатежа = Формат(стр.ДатаПлатежа,"ДЛФ=Д");
        ДолгПрошлыйПериод = ДолгНакопление;
        ДолгНакопление = ДолгНакопление - стр.СуммаПлатежа + стр.СуммаОплаты;
        //Если ТипЗнч(ДеньОтсчета) = Тип("Дата") Тогда

        //    ДниПросрочки = (стр.ДатаПлатежа - ДеньОтсчета)/(3600*24);

        //Иначе

        //    ДниПросрочки = 0;

        //КонецЕсли;

        Если  ДолгНакопление > 0 Тогда
            ДлительностьДолга = "";
        ИначеЕсли ДолгНакопление < 0 И ДолгНакопление *(-1) <= СуммаСчета Тогда
            ДлительностьДолга = "Менее 1 мес.";
        ИначеЕсли ДолгНакопление *(-1) > СуммаСчета И (ДолгНакопление *(-1) <= СуммаСчета+ПрошлыйСчет ИЛИ ПрошлыйСчет=0) Тогда
            ДлительностьДолга = "Более 1 мес.";
        ИначеЕсли ДолгНакопление *(-1) > СуммаСчета+ПрошлыйСчет И (ДолгНакопление *(-1) <= СуммаСчета+ПрошлыйСчет+ПозаПрошлыйСчет ИЛИ ПозаПрошлыйСчет=0) Тогда
            ДлительностьДолга = "Более 2 мес.";
        ИначеЕсли ДолгНакопление *(-1) > СуммаСчета+ПрошлыйСчет+ПозаПрошлыйСчет Тогда
            ДлительностьДолга = "Более 3 мес.";
        КонецЕсли;
        ОбластьСтрока.Параметры.СуммаДолга = ДолгНакопление;
        //Если стр.СуммаПлатежа = 0 Тогда

        //    ОбластьСтрока.Параметры.ДниПросрочки = ДниПросрочки;

        //Иначе

        //    ОбластьСтрока.Параметры.ДниПросрочки = 0;

        //КонецЕсли;

        ОбластьСтрока.Параметры.ДлительностьДолга = ДлительностьДолга;
        ДокументРезультат.Вывести(ОбластьСтрока);
        ИтогоСуммаПлатежа = ИтогоСуммаПлатежа + стр.СуммаПлатежа;
        ИтогоСуммаОплаты = ИтогоСуммаОплаты + стр.СуммаОплаты;
    КонецЦикла;    
    
    
    ОбластьИтогТаблицы = Макет.ПолучитьОбласть("ИтогТаблицы");
    ОбластьИтогТаблицы.Параметры.СуммаПлатежа = ИтогоСуммаПлатежа;
    ОбластьИтогТаблицы.Параметры.СуммаОплаты = ИтогоСуммаОплаты;
    ОбластьИтогТаблицы.Параметры.СуммаДолга = ДолгНакопление;
    ДокументРезультат.Вывести(ОбластьИтогТаблицы);
    
    ОстатокСальдо = ИтогоСуммаОплаты-ИтогоСуммаПлатежа;
    ОбластьСальдо = Макет.ПолучитьОбласть("Сальдо");
    Если ОстатокСальдо < 0 Тогда
        ОбластьСальдо = Макет.ПолучитьОбласть("СальдоМинус");
    КонецЕсли;    
    ОбластьСальдо.Параметры.Сальдо = ОстатокСальдо;
    ДокументРезультат.Вывести(ОбластьСальдо);
        
КонецПроцедуры

Функция ПолучитьВсеОплаты(ПараметрыОтчета,тзОС)
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("Организация", ПараметрыОтчета.Организация);
    Запрос.УстановитьПараметр("ОсновноеСредство",тзОС.ВыгрузитьКолонку("ОсновноеСредство"));
    Запрос.УстановитьПараметр("Счет51", ПланыСчетов.Хозрасчетный.РасчетныеСчета);
    Запрос.УстановитьПараметр("Счет62", ПланыСчетов.Хозрасчетный.РасчетыСПокупателямиИЗаказчиками);
    Запрос.Текст = "ВЫБРАТЬ
                   |    ЛК_ЛизингополучательОС.ДоговорКонтрагента КАК ДоговорКонтрагента
                   |ПОМЕСТИТЬ вр_ДоговораОС
                   |ИЗ
                   |    РегистрСведений.ЛК_ЛизингополучательОС КАК ЛК_ЛизингополучательОС
                   |ГДЕ
                   |    ЛК_ЛизингополучательОС.Организация = &Организация
                   |    И ЛК_ЛизингополучательОС.ОсновноеСредство В(&ОсновноеСредство)
                   |;
                   |
                   ////////////////////////////////////////////////////////////////////////////////

                   |ВЫБРАТЬ
                   |    НАЧАЛОПЕРИОДА(ХозрасчетныйДвиженияССубконто.Период, ДЕНЬ) КАК Дата,
                   |    СУММА(ХозрасчетныйДвиженияССубконто.Сумма) КАК Сумма
                   |ПОМЕСТИТЬ вр_Основная
                   |ИЗ
                   |    РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(
                   |            ,
                   |            ,
                   |            СчетДт = &Счет51
                   |                И СчетКт В ИЕРАРХИИ (&Счет62)
                   |                И СубконтоКт2 В
                   |                    (ВЫБРАТЬ
                   |                        вр_ДоговораОС.ДоговорКонтрагента
                   |                    ИЗ
                   |                        вр_ДоговораОС КАК вр_ДоговораОС),
                   |            ,
                   |            ) КАК ХозрасчетныйДвиженияССубконто
                   |
                   |СГРУППИРОВАТЬ ПО
                   |    НАЧАЛОПЕРИОДА(ХозрасчетныйДвиженияССубконто.Период, ДЕНЬ)
                   |
                   |ОБЪЕДИНИТЬ ВСЕ
                   |
                   |ВЫБРАТЬ
                   |    НАЧАЛОПЕРИОДА(ХозрасчетныйДвиженияССубконто.Период, ДЕНЬ),
                   |    ХозрасчетныйДвиженияССубконто.Сумма
                   |ИЗ
                   |    РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(
                   |            ,
                   |            ,
                   |            СчетДт В ИЕРАРХИИ (&Счет62)
                   |                И СчетКт В ИЕРАРХИИ (&Счет62)
                   |                И (СубконтоДт2 В
                   |                        (ВЫБРАТЬ
                   |                            вр_ДоговораОС.ДоговорКонтрагента КАК ДоговорКонтрагента
                   |                        ИЗ
                   |                            вр_ДоговораОС КАК вр_ДоговораОС)
                   |                    ИЛИ СубконтоКт2 В
                   |                        (ВЫБРАТЬ
                   |                            вр_ДоговораОС.ДоговорКонтрагента КАК ДоговорКонтрагента
                   |                        ИЗ
                   |                            вр_ДоговораОС КАК вр_ДоговораОС)),
                   |            ,
                   |            ) КАК ХозрасчетныйДвиженияССубконто
                   |ГДЕ
                   |    ХозрасчетныйДвиженияССубконто.Регистратор ССЫЛКА Документ.КорректировкаДолга
                   |    И ХозрасчетныйДвиженияССубконто.СубконтоДт2 <> ХозрасчетныйДвиженияССубконто.СубконтоКт2
                   |;
                   |
                   ////////////////////////////////////////////////////////////////////////////////

                   |ВЫБРАТЬ
                   |    вр_Основная.Дата КАК Дата,
                   |    СУММА(вр_Основная.Сумма) КАК Сумма
                   |ИЗ
                   |    вр_Основная КАК вр_Основная
                   |ГДЕ
                   |    вр_Основная.Сумма > 0
                   |
                   |СГРУППИРОВАТЬ ПО
                   |    вр_Основная.Дата";
    Возврат Запрос.Выполнить().Выбрать();                   
КонецФункции    

Функция ПолучитьВсеВозвраты(ПараметрыОтчета, тзОС)
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("Организация", ПараметрыОтчета.Организация);
    Запрос.УстановитьПараметр("ОсновноеСредство", тзОС.ВыгрузитьКолонку("ОсновноеСредство"));
    Запрос.УстановитьПараметр("Счет51", ПланыСчетов.Хозрасчетный.РасчетныеСчета);
    Запрос.УстановитьПараметр("Счет62", ПланыСчетов.Хозрасчетный.РасчетыСПокупателямиИЗаказчиками);
    Запрос.УстановитьПараметр("Дата", ПараметрыОтчета.ДатаОтчета);
    Запрос.Текст = "ВЫБРАТЬ
                   |    ЛК_ЛизингополучательОС.ДоговорКонтрагента
                   |ПОМЕСТИТЬ вр_ДоговораОС
                   |ИЗ
                   |    РегистрСведений.ЛК_ЛизингополучательОС КАК ЛК_ЛизингополучательОС
                   |ГДЕ
                   |    ЛК_ЛизингополучательОС.Организация = &Организация
                   |    И ЛК_ЛизингополучательОС.ОсновноеСредство В(&ОсновноеСредство)
                   |;
                   |
                   ////////////////////////////////////////////////////////////////////////////////

                   |ВЫБРАТЬ
                   |    НАЧАЛОПЕРИОДА(ХозрасчетныйДвиженияССубконто.Период, ДЕНЬ) КАК Дата,
                   |    СУММА(ХозрасчетныйДвиженияССубконто.Сумма) КАК Сумма
                   |ИЗ
                   |    РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(
                   |            ,
                   |            ,
                   |            СчетДт В ИЕРАРХИИ (&Счет62)
                   |                И СчетКт В ИЕРАРХИИ (&Счет51)
                   |                И СубконтоДт2 В
                   |                    (ВЫБРАТЬ
                   |                        вр_ДоговораОС.ДоговорКонтрагента
                   |                    ИЗ
                   |                        вр_ДоговораОС КАК вр_ДоговораОС),
                   |            ,
                   |            ) КАК ХозрасчетныйДвиженияССубконто
                   |ГДЕ
                   |    ХозрасчетныйДвиженияССубконто.Период <= &Дата
                   |
                   |СГРУППИРОВАТЬ ПО
                   |    НАЧАЛОПЕРИОДА(ХозрасчетныйДвиженияССубконто.Период, ДЕНЬ)";
    Возврат Запрос.Выполнить().Выбрать();                   
КонецФункции    

Функция ПолучитьОсновныеСредства(ПараметрыОтчета)
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("Организация",ПараметрыОтчета.Организация);
    Запрос.УстановитьПараметр("Лизингополучатель",ПараметрыОтчета.Контрагент);
    Запрос.УстановитьПараметр("ДоговорКонтрагента",ПараметрыОтчета.ДоговорКонтрагента);
    Запрос.Текст = "ВЫБРАТЬ
                   |    ЛК_ЛизингополучательОССрезПоследних.ОсновноеСредство,
                   |    ЛК_ЛизингополучательОССрезПоследних.Организация,
                   |    ЛК_ЛизингополучательОССрезПоследних.Лизингополучатель,
                   |    ЛК_ЛизингополучательОССрезПоследних.ДоговорКонтрагента,
                   |    ЛК_ЛизингополучательОССрезПоследних.ОСВыбыло
                   |ИЗ
                   |    РегистрСведений.ЛК_ЛизингополучательОС.СрезПоследних КАК ЛК_ЛизингополучательОССрезПоследних
                   |ГДЕ
                   |    ЛК_ЛизингополучательОССрезПоследних.Лизингополучатель = &Лизингополучатель
                   |    И ЛК_ЛизингополучательОССрезПоследних.ДоговорКонтрагента = &ДоговорКонтрагента
                   |    И ЛК_ЛизингополучательОССрезПоследних.Организация = &Организация
                   |    И НЕ ЛК_ЛизингополучательОССрезПоследних.ОСВыбыло";
    Возврат Запрос.Выполнить().Выбрать();
КонецФункции    

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

Функция ПолучитьДанныеОплатаПрошлыхПериодов(ПараметрыОтчета,тзОС)
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("Организация", ПараметрыОтчета.Организация);
    Запрос.УстановитьПараметр("ОсновноеСредство", тзОС.ВыгрузитьКолонку("ОсновноеСредство"));
    
    Запрос.Текст = "ВЫБРАТЬ
                   |    ЛК_ЛизингополучательОС.ДоговорКонтрагента
                   |ПОМЕСТИТЬ вр_ДоговораОС
                   |ИЗ
                   |    РегистрСведений.ЛК_ЛизингополучательОС КАК ЛК_ЛизингополучательОС
                   |ГДЕ
                   |    ЛК_ЛизингополучательОС.Организация = &Организация
                   |    И ЛК_ЛизингополучательОС.ОсновноеСредство В(&ОсновноеСредство)
                   |;
                   |
                   ////////////////////////////////////////////////////////////////////////////////

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


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

Процедура ЗаполнитьПустыеЗначенияДанныхПредставителя(ДанныеПредставителя)

    Если НЕ ЗначениеЗаполнено(ДанныеПредставителя.Должность) Тогда
        ДанныеПредставителя.Должность = "________________";
    КонецЕсли;
    Если НЕ ЗначениеЗаполнено(ДанныеПредставителя.ФИОПолные) Тогда
        ДанныеПредставителя.ФИОПолные = "_______________________";
    КонецЕсли;
    Если НЕ ЗначениеЗаполнено(ДанныеПредставителя.Представление) Тогда
        ДанныеПредставителя.Представление = "_______________________";
    КонецЕсли;
    
КонецПроцедуры

 

#КонецЕсли
   1cKILL
 
8 - 07.07.20 - 21:58
как тут обойти
   Ёпрст
 
9 - 07.07.20 - 22:03
(7) Если лень всё переписывать, то можно тупо

вынести формирование шапки из процы ВывестиВОтчетДанные,
далее получить все договора Клиентоса и в цикле запускать ВывестиВОтчетДанные, изменяя параметр ПараметрыОтчета.ДоговорКонтрагента
   1cKILL
 
10 - 07.07.20 - 22:04
(9) вот про это я думал . но чет не могу домозговать
   1cKILL
 
11 - 07.07.20 - 22:05
(9) моешь примерный кусок накидать?
   Ёпрст
 
12 - 07.07.20 - 22:08
(11)
    ОбластьЗаголовок.Параметры.НазваниеОрганизации = ПредставлениеОрганизации;
    ОбластьЗаголовок.Параметры.Контрагент = ПараметрыОтчета.Контрагент.НаименованиеПолное;
    ОбластьЗаголовок.Параметры.Заголовок    = Заголовок;
    МассивДоговоров = ПолучитьВсеДоговораКонтрагента(ПараметрыОтчета.Контрагент);
    Для Каждого ДоговорКонтрагента ИЗ  МассивДоговоров Цикл
        ОбластьЗаголовок.Параметры.ДоговорКонтрагента = ДоговорКонтрагента.Наименование;
        ДокументРезультат.Вывести(ОбластьЗаголовок);
        ПараметрыОтчета.ДоговорКонтрагента = ДоговорКонтрагента;
        ВывестиВОтчетДанные(ПараметрыОтчета, ДокументРезультат, Макет);
    КонецЦикла;
   1cKILL
 
13 - 07.07.20 - 22:10
(12) дай Бог тебе здоровья и богатства !
   Ёпрст
 
14 - 07.07.20 - 22:11
ну и примитивная функция
&НаСервере
Функция ПолучитьВсеДоговораКонтрагента(Контрагент)
     Запрос = Новый Запрос("Выбрать ССылка ИЗ Справочник.ДоговорыКонтрагентов Где Владелец = &Контрагент");
     Запрос.УстановитьПараметр("Контрагент",Контрагент);
     Массив = Новый Массив;
     Выборка = Запрос.Выполнить.Выбрать();
     Пока Выборка.Следующий() Цикл
         Массив.Добавить(Выборка.ССылка);
     КонецЦикла;
     Возврат Массив;           
КонецФункции
   Ёпрст
 
15 - 07.07.20 - 22:11
если надо, то в запросе договоров установить фильтр на тип договора и т.п
   1cKILL
 
16 - 07.07.20 - 22:14
Человечище благодарю тебя
   1cKILL
 
17 - 07.07.20 - 22:27
(15) все получилось . вот .что значит опыт . сила ума

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.