Имя: Пароль:
1C
1С v8
Логика заполнения обработки ПодборПараметровРасшифровкиПлатежа
0 gaspik
 
22.11.16
13:39
Коллеги, подскажите, плиз.
Конфигурация УПП 1.3.81.2. Не могу понять как обработка ПодборПараметровРасшифровкиПлатежа заполняет таблицу значений.
Если в документе ПП исходящее ткнуть в выбор Заявки на оплату, то запускается эта обработки и она, я так понимаю, должна сформировать список неоплаченных заявок. В каких то ПП это список есть, в каких то нет. При том, что в регистре "Заявки на расходование средств" есть конечный остаток по этому контрагенту и договору. Какой то еще параметр влияет на заполнение?

Не могу раскрутить запрос, который формирует список планируемых движений. Хелп.
1 gaspik
 
22.11.16
13:56
Вот такой запрос там. Понятно, что из регистра "Заявки на расходование средств" идет выборка, но по каким параметрам не могу понять, запуталась.

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

        Запрос.УстановитьПараметр("БанковскийСчетКасса",БанковскийСчетКасса);    
        Запрос.УстановитьПараметр("ПустойСчетКасса",Новый(ТипЗнч(БанковскийСчетКасса)));
        
    КонецЕсли;
                
    Если ЗначениеЗаполнено(Контрагент) Тогда
        
         Если         ВидОперацииПлан=Перечисления.ВидыОперацийЗаявкиНаРасходование.ВыдачаДенежныхСредствКассеККМ
             ИЛИ      ВидОперацииПлан=Перечисления.ВидыОперацийЗаявкиНаРасходование.ВыдачаДенежныхСредствПодотчетнику
             ИЛИ      ВидОперацииПлан=Перечисления.ВидыОперацийЗаявкиНаРасходование.РасчетыПоКредитамИЗаймамСРаботниками Тогда
            
             ТекстУсловия=ТекстУсловия+"
             |И (ЗаявкаНаРасходование.Получатель=&Контрагент ИЛИ ЗаявкаНаРасходование.Получатель=Неопределено)";
             Запрос.УстановитьПараметр("Контрагент",Контрагент);
            
         Иначе
            
             ТекстУсловия=ТекстУсловия+"
             |И ("+ДокументПланирования+".Контрагент=&Контрагент ИЛИ "+ДокументПланирования+".Контрагент=&ПустойКонтрагент)";
             Запрос.УстановитьПараметр("Контрагент",Контрагент);
             Запрос.УстановитьПараметр("ПустойКонтрагент",Справочники.Контрагенты.ПустаяСсылка());
            
         КонецЕсли;
                    
    КонецЕсли;
    
    Если ЗначениеЗаполнено(ДоговорКонтрагента) Тогда
        ТекстУсловия=ТекстУсловия+"
        |И ДоговорКонтрагента=&ДоговорКонтрагента";
        Запрос.УстановитьПараметр("ДоговорКонтрагента",ДоговорКонтрагента);
    КонецЕсли;
    
    Если ЗначениеЗаполнено(СтатьяДвиженияДенежныхСредств) Тогда
        ТекстУсловия=ТекстУсловия+"
        |И (СтатьяДвиженияДенежныхСредств=&ПустойСтатьяДвиженияДенежныхСредств ИЛИ СтатьяДвиженияДенежныхСредств=&СтатьяДвиженияДенежныхСредств)";
        Запрос.УстановитьПараметр("СтатьяДвиженияДенежныхСредств",СтатьяДвиженияДенежныхСредств);
        Запрос.УстановитьПараметр("ПустойСтатьяДвиженияДенежныхСредств",Справочники.СтатьиДвиженияДенежныхСредств.ПустаяСсылка());
    КонецЕсли;
                
    Если ЗначениеЗаполнено(ВидОперацииПлан) Тогда
        ТекстУсловия=ТекстУсловия+"
        |И "+ДокументПланирования+".ВидОперации = &ВидОперации";
        Запрос.УстановитьПараметр("ВидОперации",ВидОперацииПлан);
    КонецЕсли;
    
    Если ЗначениеЗаполнено(Организация) Тогда
        ТекстУсловия=ТекстУсловия+"
        |И ("+ДокументПланирования+".Организация=&ПустойОрганизация ИЛИ "+ДокументПланирования+".Организация=&Организация)";
        Запрос.УстановитьПараметр("Организация",Организация);
        Запрос.УстановитьПараметр("ПустойОрганизация",Справочники.Организации.ПустаяСсылка());
    КонецЕсли;
    
    Если ЗначениеЗаполнено(Сделка) Тогда
        ТекстУсловия=ТекстУсловия+"
        |И (Сделка=Неопределено ИЛИ Сделка=&Сделка)";
        Запрос.УстановитьПараметр("Сделка",Сделка);
    КонецЕсли;
    
    Если ЗначениеЗаполнено(ДокументРасчетовСКонтрагентом) Тогда
        ТекстУсловия=ТекстУсловия+"
        |И (ДокументРасчетовСКонтрагентом=Неопределено ИЛИ ДокументРасчетовСКонтрагентом=&ДокументРасчетовСКонтрагентом)";
        Запрос.УстановитьПараметр("ДокументРасчетовСКонтрагентом",ДокументРасчетовСКонтрагентом);
    КонецЕсли;
    
    Если ЗначениеЗаполнено(Проект) Тогда
        ТекстУсловия=ТекстУсловия+"
        |И (Проект=&ПустойПроект ИЛИ Проект=&Проект)";
        Запрос.УстановитьПараметр("Проект",Проект);
        Запрос.УстановитьПараметр("ПустойПроект",Справочники.Проекты.ПустаяСсылка());
    КонецЕсли;
    
    Если ВключенныеВПлатежныйКалендарь=Истина Тогда
        ТекстУсловия=ТекстУсловия+"
        |И "+ДокументПланирования+".ВключатьВПлатежныйКалендарь=Истина";
    КонецЕсли;
    
    ТекстУсловия=Сред(ТекстУсловия,3);
    
    Запрос.Текст="ВЫБРАТЬ
    |    ПланируемыеДвиженияОстатки.ДоговорКонтрагента,
    |    ПланируемыеДвиженияОстатки.Сделка,
    |    ПланируемыеДвиженияОстатки.ДокументРасчетовСКонтрагентом,
    |    ПланируемыеДвиженияОстатки.СтатьяДвиженияДенежныхСредств,
    |    ПланируемыеДвиженияОстатки.Проект,
    |    ПланируемыеДвиженияОстатки.ДокументПланирования КАК ДокументПланирования,
    |    ПланируемыеДвиженияОстатки.ДокументПланирования.СуммаДокумента КАК СуммаДокумента,
    |ВЫРАЗИТЬ
    |    (ВЫБОР
    |        КОГДА НЕ СУММА(ПланируемыеДвиженияОстатки.СуммаПлатежа)=0
    |            ТОГДА СУММА(ПланируемыеДвиженияОстатки.СуммаПлатежа)
    |        КОГДА ПланируемыеДвиженияОстатки.ДоговорКонтрагента.ВалютаВзаиморасчетов=&ВалютаДокумента
    |            ТОГДА СУММА(ПланируемыеДвиженияОстатки.СуммаВзаиморасчетов)
    |        КОГДА СУММА(ПланируемыеДвиженияОстатки.СуммаПлатежа)=0  
    |            И НЕ КурсыДоговоры.Курс=0
    |            И НЕ &КурсДокумента=0
    |            ТОГДА СУММА(ПланируемыеДвиженияОстатки.СуммаВзаиморасчетов)КурсыДоговоры.Курс &КратностьДокумента
    |            / (&КурсДокумента КурсыДоговоры.Кратность)
    |        ИНАЧЕ
    |            0
    |        КОНЕЦ КАК ЧИСЛО (15,2)) КАК СуммаПлатежа,
    |ВЫРАЗИТЬ
    |    (ВЫБОР
    |        КОГДА СУММА(ПланируемыеДвиженияОстатки.СуммаПлатежа)=0
    |            ТОГДА КурсыДоговоры.Курс
    |        КОГДА ПланируемыеДвиженияОстатки.ДоговорКонтрагента.ВалютаВзаиморасчетов=&ВалютаДокумента
    |            ТОГДА &КурсДокумента
    |        КОГДА НЕ СУММА(ПланируемыеДвиженияОстатки.СуммаПлатежа)=0  
    |            И НЕ &КурсДокумента=0
    |            И НЕ СУММА(ПланируемыеДвиженияОстатки.СуммаВзаиморасчетов)= 0
    |            И НЕ &КратностьДокумента=0 Тогда
    |            СУММА(ПланируемыеДвиженияОстатки.СуммаПлатежа)
&КурсДокумента КурсыДоговоры.Кратность
    |                        / (СУММА(ПланируемыеДвиженияОстатки.СуммаВзаиморасчетов)
&КратностьДокумента)
    |        ИНАЧЕ
    |            0
    |        КОНЕЦ КАК ЧИСЛО (10,4)) КАК КурсВзаиморасчетов,
    |ВЫРАЗИТЬ
    |    (ВЫБОР
    |        КОГДА ПланируемыеДвиженияОстатки.ДоговорКонтрагента.ВалютаВзаиморасчетов=ПланируемыеДвиженияОстатки.ДокументПланирования.ВалютаДокумента
    |            ТОГДА ПланируемыеДвиженияОстатки.ДокументПланирования.КурсДокумента
    |        КОГДА НЕ СУММА(ПланируемыеДвиженияОстатки.СуммаПлатежа)=0  
    |            И НЕ ПланируемыеДвиженияОстатки.ДокументПланирования.КурсДокумента=0
    |            И НЕ СУММА(ПланируемыеДвиженияОстатки.СуммаВзаиморасчетов)= 0
    |            И НЕ ПланируемыеДвиженияОстатки.ДокументПланирования.КратностьДокумента=0 Тогда
    |            СУММА(ПланируемыеДвиженияОстатки.СуммаПлатежа) ПланируемыеДвиженияОстатки.ДокументПланирования.КурсДокумента КурсыДоговоры.Кратность
    |                        / (СУММА(ПланируемыеДвиженияОстатки.СуммаВзаиморасчетов) * ПланируемыеДвиженияОстатки.ДокументПланирования.КратностьДокумента)
    |        ИНАЧЕ
    |            0
    |        КОНЕЦ КАК ЧИСЛО (10,4)) КАК КурсВзаиморасчетовПлан,
    |    ПланируемыеДвиженияОстатки.ДоговорКонтрагента.ВалютаВзаиморасчетов КАК ВалютаВзаиморасчетов,
    |    СУММА(ПланируемыеДвиженияОстатки.СуммаВзаиморасчетов) КАК СуммаВзаиморасчетов,
    |    ВЫБОР
    |        КОГДА ПланируемыеДвиженияОстатки.ДоговорКонтрагента.ВалютаВзаиморасчетов=&ВалютаДокумента
    |            ТОГДА &КратностьДокумента
    |        ИНАЧЕ
    |            КурсыДоговоры.Кратность
    |        КОНЕЦ КАК КратностьВзаиморасчетов,
    |    ПланируемыеДвиженияОстатки.ДокументПланирования."
    +?(ДокументПланирования="ЗаявкаНаРасходование","ДатаРасхода","ДатаПоступления")+" КАК ДатаДвижения
    |ИЗ (
    |    ВЫБРАТЬ
    |    ПланируемыеОстатки.ДоговорКонтрагента,
    |    ПланируемыеОстатки.Сделка,
    |    ПланируемыеОстатки.ДокументРасчетовСКонтрагентом,
    |    ПланируемыеОстатки.СтатьяДвиженияДенежныхСредств,
    |    ПланируемыеОстатки.Проект,
    |    ПланируемыеОстатки."+ДокументПланирования+" КАК ДокументПланирования,
    |    ПланируемыеОстатки."+ДокументПланирования+".СуммаДокумента КАК СуммаДокумента,
    |   ПланируемыеОстатки.СуммаОстаток КАК СуммаПлатежа,
    |   ПланируемыеОстатки.СуммаВзаиморасчетовОстаток КАК СуммаВзаиморасчетов
    |ИЗ
    |    РегистрНакопления."+ИмяРегистраПлан+".Остатки(,("+ТекстУсловия+"))КАК ПланируемыеОстатки";        
        
    Если НЕ ДокументСсылка = Неопределено Тогда
        
        Запрос.Текст = Запрос.Текст+"
        |ОБЪЕДИНИТЬ ВСЕ
        |ВЫБРАТЬ
        |    ПланируемыеДвижения.ДоговорКонтрагента,
        |    ПланируемыеДвижения.Сделка,
        |    ПланируемыеДвижения.ДокументРасчетовСКонтрагентом,
        |    ПланируемыеДвижения.СтатьяДвиженияДенежныхСредств,
        |    ПланируемыеДвижения.Проект,
        |    ПланируемыеДвижения."+ДокументПланирования+" КАК ДокументПланирования,
        |    ПланируемыеДвижения."+ДокументПланирования+".СуммаДокумента КАК СуммаДокумента,
        |    ПланируемыеДвижения.Сумма КАК СуммаПлатежа,
        |    ПланируемыеДвижения.СуммаВзаиморасчетов КАК СуммаВзаиморасчетов
        |ИЗ
        |    РегистрНакопления."+ИмяРегистраПлан+" КАК ПланируемыеДвижения
        |ГДЕ
        |    ПланируемыеДвижения.Регистратор = &Регистратор";
        
        Если СтрДлина(ТекстУсловия)>0 Тогда
            
            Запрос.Текст=Запрос.Текст+"
            |И ("+ТекстУсловия+")";
            
        КонецЕсли;
        
    КонецЕсли;
    
    Запрос.Текст=Запрос.Текст+")КАК ПланируемыеДвиженияОстатки    
    |ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&ДатаПлатежа, ) КАК КурсыДоговоры
    |        ПО ПланируемыеДвиженияОстатки.ДоговорКонтрагента.ВалютаВзаиморасчетов = КурсыДоговоры.Валюта
    |СГРУППИРОВАТЬ ПО
    |    ПланируемыеДвиженияОстатки.ДоговорКонтрагента,
    |    ПланируемыеДвиженияОстатки.Сделка,
    |    ПланируемыеДвиженияОстатки.ДокументРасчетовСКонтрагентом,
    |    ПланируемыеДвиженияОстатки.СтатьяДвиженияДенежныхСредств,
    |    ПланируемыеДвиженияОстатки.Проект,
    |    ПланируемыеДвиженияОстатки.ДокументПланирования,
    |    КурсыДоговоры.Курс,
    |    КурсыДоговоры.Кратность";
        
    Запрос.УстановитьПараметр("СуммаДокумента",СуммаДляПодбора);
    Запрос.УстановитьПараметр("Контрагент",Контрагент);
    Запрос.УстановитьПараметр("ПустойВалютаДокумента",Справочники.Валюты.ПустаяСсылка());
    Запрос.УстановитьПараметр("ДатаПлатежа",ДатаДок);
    Запрос.УстановитьПараметр("КурсДокумента",КурсДокумента);
    Запрос.УстановитьПараметр("КратностьДокумента",КратностьДокумента);
    Запрос.УстановитьПараметр("ВалютаДокумента",ВалютаДокумента);
    Если НЕ ДокументСсылка = Неопределено Тогда
        Запрос.УстановитьПараметр("Регистратор",ДокументСсылка.Ссылка);
    КонецЕсли;
Независимо от того, куда вы едете — это в гору и против ветра!