Имя: Пароль:
1C
1C 7.7
v7: Как скрыть пустые строки в оборотке ?
0 9451523
 
04.08.16
11:09
Привет Всем
Есть отчет Оборотно-Сальдовая Ведомость по счету , в последних двух столбцах выводятся кредитовое (Ит.СКК) и дебетовое (Ит.Скд) сальдо на конец периода , главбух попросил меня не показывать строки в отчете с нулевым значением итогов СКК и СКД, я попробывал поставить условие на ПустоеЗначение:

    Если (ПустоеЗначение(Ит.СКК())=1) и (ПустоеЗначение(Ит.СКД())=1) Тогда
            Продолжить;
           КонецЕсли;
не сработало. все равно выводит пустые строки, вот код процедуры:
Процедура Сформировать(Ручн = 0, ФлагЗакрытияФормы = 0)
    Если Счет.Выбран() = 0 Тогда
        Предупреждение("Не указан счет!");
        Возврат;
    КонецЕсли;
    Если глПроверкаПериода(Дата1, Дата2, Счет) = 0 Тогда

        Возврат;
    КонецЕсли;

    ВидСубконто[1] = ВыбВидСубконто1; Субконто[1] = Субконто1; ОтборСубконто[1] = ?(ВидСубконто[1].Выбран()=1, ОтборСубконто1.ТекущаяСтрока(), 3); ПоГруппам[1] = ПоГруппам1; Номер[1] = 1;
    ВидСубконто[2] = ВыбВидСубконто2; Субконто[2] = Субконто2; ОтборСубконто[2] = ?(ВидСубконто[2].Выбран()=1, ОтборСубконто2.ТекущаяСтрока(), 3); ПоГруппам[2] = ПоГруппам2; Номер[2] = 2;
    ВидСубконто[3] = ВыбВидСубконто3; Субконто[3] = Субконто3; ОтборСубконто[3] = ?(ВидСубконто[3].Выбран()=1, ОтборСубконто3.ТекущаяСтрока(), 3); ПоГруппам[3] = ПоГруппам3; Номер[3] = 3;

    Если (ВидСубконто[1] = ВидСубконто[2]) И (ОтборСубконто[1] <> 3) И (ОтборСубконто[2] <> 3) Или
        (ВидСубконто[2] = ВидСубконто[3]) И (ОтборСубконто[2] <> 3) И (ОтборСубконто[3] <> 3) Или
        (ВидСубконто[3] = ВидСубконто[1]) И (ОтборСубконто[3] <> 3) И (ОтборСубконто[1] <> 3) Тогда
        Предупреждение("Выбраны одинаковые виды субконто!");
        Возврат;
    КонецЕсли;

    Если Ручн = 1 Тогда
       СохранитьЗначение("ОтчРабСчет",Счет);
    КонецЕсли;

    Если ОтборСубконто[1] > ОтборСубконто[2] Тогда
        Поменять(1, 2);
    КонецЕсли;
    Если ОтборСубконто[2] > ОтборСубконто[3] Тогда
        Поменять(2, 3);
        Если ОтборСубконто[1] > ОтборСубконто[2] Тогда
            Поменять(1, 2);
        КонецЕсли;
    КонецЕсли;

    ФлВал = Счет.Валютный;

      Расшифровка = СоздатьОбъект("СписокЗначений");
    Ит = СоздатьОбъект("БухгалтерскиеИтоги");

    Ит.ИспользоватьРазделительУчета(РазделительУчета);
    КолПоСчету = 0;
    Заголовок1 = "";
    Для А=1 По 3 Цикл
  
        Если ОтборСубконто[А] <> 3 Тогда
           Ит.ИспользоватьСубконто(ВидСубконто[А], Субконто[А], ОтборСубконто[А], ПоГруппам[А]);
           Если А <> 1 Тогда
              Заголовок1 = Заголовок1+"; ";
           КонецЕсли;
           Заголовок1 = Заголовок1+ВидСубконто[А];
           Если ОтборСубконто[А] = 2 Тогда
              Заголовок1 = Заголовок1+": "+Субконто[А];
                КолПоСчету = 1;
           КонецЕсли;
        КонецЕсли;
    
    КонецЦикла;
                        
    Ит.ВключатьСубсчета(ДанныеПоСубсчетам);
    Если Ит.ВыполнитьЗапрос(Дата1, Дата2, Счет) = 0 Тогда
        Возврат;
    КонецЕсли;

    Если (ТипЗначенияСтр(Т) <> "Таблица") Или (Обновить = 0) Тогда
          Т = СоздатьОбъект("Таблица");
    Иначе
        Т.Очистить();
    КонецЕсли;
    Т.ИсходнаяТаблица("Таблица");

    Расшифровка.Установить("Отчет", "ОборотноСальдоваяВедомостьПоСчету");
    Расшифровка.Установить("РазделительУчета", РазделительУчета);
      Расшифровка.Установить("Дата1", Дата1);
      Расшифровка.Установить("Дата2", Дата2);
      Расшифровка.Установить("Счет", Счет);
      Расшифровка.Установить("ДанныеПоСубсчетам", ДанныеПоСубсчетам);
    Для А=1 По 3 Цикл
          Расшифровка.Установить("ВидСубконто"+Номер[А], ВидСубконто[А]);
          Расшифровка.Установить("Субконто"+Номер[А], Субконто[А]);
          Расшифровка.Установить("ОтборСубконто"+Номер[А], ОтборСубконто[А]);
          Расшифровка.Установить("ПоГруппам"+Номер[А], ПоГруппам[А]);
    КонецЦикла;
    Т.ВывестиСекцию("Секция_12");
    Т.ВывестиСекцию("Секция_1");
    ФиксСтрок = 5;
    Если ПустоеЗначение(Заголовок1) = 0 Тогда
        Т.ВывестиСекцию("Секция_19");
        ФиксСтрок = ФиксСтрок + 1;
    КонецЕсли;
    Т.ВывестиСекцию("Секция_20");

    Расшифровка.УдалитьВсе();
      Расшифровка.Установить("Отчет", "КарточкаСчета");
    Расшифровка.Установить("РазделительУчета", РазделительУчета);
      Расшифровка.Установить("Дата1", Дата1);
      Расшифровка.Установить("Дата2", Дата2);
      Расшифровка.Установить("Счет", Счет);

    Для А=1 По 3 Цикл
        Если ОтборСубконто[А] <> 3 Тогда
            Расшифровка.Установить("ВидСубконто"+Номер[А], ВидСубконто[А]);
            Если ОтборСубконто[А] = 2 Тогда
                Расшифровка.Установить("ОтборСубконто"+Номер[А], ОтборСубконто[А]);
                Расшифровка.Установить("Субконто"+Номер[А], Субконто[А]);
            КонецЕсли;
        КонецЕсли;
    КонецЦикла;
  
    Если ДанныеПоСубсчетам = 1 Тогда
        Ит.ВыбратьСчета();
        Ит.ПолучитьСчет();
        Пока Ит.ПолучитьСчет() = 1 Цикл
        
            Если (ПустоеЗначение(Ит.СКК())=1) и (ПустоеЗначение(Ит.СКД())=1) Тогда
            Продолжить;
           КонецЕсли;
            Расшифровка.Установить("Счет", Ит.Счет);
            Т.ВывестиСекцию("Секция_14");
            Если КолПоСчету = 1 Тогда
                Т.ВывестиСекцию("Секция_15");
            КонецЕсли;
           Если ФлВал = 1 Тогда
               Ит.ВыбратьВалюты();
               Пока Ит.ПолучитьВалюту()=1 Цикл
                      Расшифровка.Установить("Валюта",Ит.Валюта);
                      Расшифровка.Установить("ПоВалюте",1);
                   Т.ВывестиСекцию("Секция_16");
               КонецЦикла;
                  Расшифровка.Установить("Валюта");
                Расшифровка.Установить("ПоВалюте");
            КонецЕсли;
            ПоСубконто(Ит, Т, ФлВал);
              Расшифровка.Установить("Отчет", "КарточкаСчета");
        
          КонецЦикла;
    Иначе
        ПоСубконто(Ит, Т, ФлВал);
    КонецЕсли;

    Если КолПоСчету = 0 Тогда
        Если ОтборСубконто[1] <> 3 Тогда
            Т.ВывестиСекцию("Секция_8");
        Иначе
          Т.ВывестиСекцию("Секция_17");
        КонецЕсли;
    Иначе
        Если ОтборСубконто[1] <> 3 Тогда
            Т.ВывестиСекцию("Секция_13");
        Иначе
            Т.ВывестиСекцию("Секция_18");
        КонецЕсли;
    КонецЕсли;
    Ит = 0;
    ВерхнийКолонтитул = "Оборотно-сальдовая ведомость по счету "+Счет+" ("+ПериодСтр(Дата1, Дата2)+")"+?(ТипЗначения(РазделительУчета)=0, "", " "+РазделительУчета);
    НижнийКолонтитул = "";
    Т.ТолькоПросмотр(1);
    Т.Опции(0, 0, ФиксСтрок, 1, "ОпцииПечатиОСВПоСчету", "ОСВПоСчету");
    Т.ОбластьПечати(2);
    Т.ПовторятьПриПечатиСтроки(ФиксСтрок-1,ФиксСтрок);
    Т.ПараметрыСтраницы(1,,,,,,,,, 1);
    Т.Показать("Оборотно-сальдовая ведомость по счету "+Счет+?(ПустоеЗначение(Заголовок1)=1, "", ", по субконто "+Заголовок1)+" ("+ПериодСтр(Дата1, Дата2)+")"+?(ТипЗначения(РазделительУчета)=0, "", " "+РазделительУчета), "");
    Если Закрыть = 1 Тогда
        СтрокаДействийФормы = "#Закрыть";
    КонецЕсли;

    Если (ФлагЗакрытияФормы = 1) Или (Обновить = 2) Или (Закрыть = 1) Тогда
         СтрокаДействийФормы = "#Закрыть";
    КонецЕсли;
КонецПроцедуры

есть решение для этой задачи?

С Уважением Дамир
1 Злопчинский
 
04.08.16
20:56
> есть решение для этой задачи?
есть.

но хотелка буха - очень плохая. есть оборотные счета. да и для нееобортных счетов обороты тоже бывают важны. так что есть шанс очень большой - убрав строки - наступить на грабли.
2 breezee
 
04.08.16
21:06
Код плохо читаем, как по мне
3 vladko
 
05.08.16
08:19
(0) зачем пустое значение??? Проверяй сразу на ноль
4 Это_mike
 
05.08.16
08:52
(3) это дамир.