Имя: Пароль:
1C
1С v8
Как прописать в запросе, чтобы строки с 0 не выводил.
0 JaZDik
 
04.06.14
15:02
Значение поля для которого нужно сделать "СКК"
1 JaZDik
 
04.06.14
15:02
Функция ВыполнитьНаСервере()
    МассивКонтр = Новый Массив;
    Для Каждого Стр из Отчет.Контрагенты Цикл
        МассивКонтр.Добавить(Стр.Контрагенты);    
    КонецЦикла;    

    Если Отчет.Дебиторская = Истина Тогда
        ТипЗадолженности = "Дебиторская";
    КонецЕсли;
    Если Отчет.Кредиторская = Истина Тогда
        ТипЗадолженности = "Кредиторская";
    КонецЕсли;

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


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

        //////
        ОстатокНаКонец = ?(ИСКД = Неопределено, 0, ИСКД) - ?(ИСКК = Неопределено, 0, ИСКК);
        РезультатыСверки = "на " + Формат(ДатаКон, "ДФ=dd.MM.yyyy") + " задолженность ";
            
           Если ОстатокНаКонец > 0 Тогда
            РезультатыСверки = РезультатыСверки + "в пользу " + Отчет.Организация + " "
                                + Формат(ОстатокНаКонец, "ЧЦ=21; ЧДЦ=2") + " "
                                + строка(мВалютаРегламентированногоУчета)
                                //+" ("+УчетДенежныхСредствБП.ФорматироватьСуммуПрописьюПлатежногоДокумента(ОстатокНаКонец, мВалютаРегламентированногоУчета,Ложь)+")" ;
                                //+" ("+УчетДенежныхСредствБП.ФорматироватьСуммуПрописьюПлатежногоДокумента(ОстатокНаКонец, мВалютаРегламентированногоУчета,Ложь)+")" ;

        +" ("+ ЧислоПрописью(ОстатокНаКонец, ФорматнаяСтрока, ПараметрыПредметаИсчесления)+")" ;        
          
           ИначеЕсли ОстатокНаКонец < 0 Тогда
            РезультатыСверки = РезультатыСверки + "в пользу " + Отчет.Контрагент.НаименованиеПолное + " "
                                + Формат(-ОстатокНаКонец, "ЧЦ=21; ЧДЦ=2") + " "
                                + строка(мВалютаРегламентированногоУчета)
                                //+" ("+УчетДенежныхСредствБП.ФорматироватьСуммуПрописьюПлатежногоДокумента(-ОстатокНаКонец, мВалютаРегламентированногоУчета,Ложь)+")" ;
                                +" ("+ ЧислоПрописью(-ОстатокНаКонец, ФорматнаяСтрока, ПараметрыПредметаИсчесления)+")" ;
           Иначе
               РезультатыСверки = РезультатыСверки + "отсутствует.";
        КонецЕсли;
    
    Иначе
        РезультатыСверки = "";
    КонецЕсли;
    ОбластьПодписи.Параметры.Организация = Отчет.Организация; //
    ОбластьПодписи.Параметры.РезультатСверки = РезультатыСверки;
    ОбластьПодписи.Параметры.Контрагент = ?(ЗначениеЗаполнено(Отчет.Контрагент), Отчет.Контрагент.НаименованиеПолное,"");
    ОбластьПодписи.Параметры.ДолжностьРук = ДолжностьГлавногоБухгалтера;
    ОбластьПодписи.Параметры.ФИОРук = ГлавныйБухгалтер;
    Если ЗначениеЗаполнено(Отчет.Контрагент) Тогда
        ОбластьПодписи.Параметры.ДолжностьКонтрагента = Отчет.Контрагент.ОсновноеКонтактноеЛицо.Должность;
        //ОбластьПодписи.Параметры.ФИОКонтрагента = ОбщегоНазначения.ПолучитьФамилиюИмяОтчество(Отчет.Контрагент.ОсновноеКонтактноеЛицо.Фамилия, Отчет.Контрагент.ОсновноеКонтактноеЛицо.Имя, Отчет.Контрагент.ОсновноеКонтактноеЛицо.Отчество, Истина);
    КонецЕсли;
    
    Если ЗначениеЗаполнено(Отчет.Контрагент) Тогда
    //Если ЗначениеЗаполнено(Отчет.Контрагент) И ТипЗадолженности = 3 Тогда    
        ДокРезультат.Вывести(ОбластьПодписи);
    КонецЕсли;    
    
    ДокРезультат.АвтоМасштаб = Истина;
    ДокРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
    
    //Элементы.Панель1.ТекущаяСтраница = Элементы.Панель1.Страницы[0];
    Возврат ДокРезультат;
2 Enders
 
04.06.14
15:06
(0) Если я правильно понял, то строки в которых "СКК" = 0 не нужны?
Тогда чем условия в запросе не угодили?
3 Franchiser
 
гуру
04.06.14
15:09
Имеющие сумма(хозрасчетныйостаткииобороты.суммаконечныйразвернутыйостатоккт)<>0