Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
13 дек 2024, 05:19

Помогите с выгрузкой данных

Автор gbs, 27 ноя 2013, 11:58

0 Пользователей и 1 гость просматривают эту тему.

gbs

Стоит задача выбрать и выгрузить данные из регистра  накопления и записать в .dbf, проблема в следующем при  получении данных запроса и записи строк .dbf таблица выходит в следующем виде:
LS                    USL                    JBO   TBO   JBONP   DATAN           DATAK
л/с №0001   Вывоз ТБО   0,00   2,00   0,00           01.10.2013   31.10.2013
л/с №0001   Вывоз ЖБО     0,00   0,00   3,00           01.10.2013   31.10.2013
л/с №0002   Вывоз ТБО   0,00   6,00   0,00           01.10.2013   31.10.2013
л/с №0009   Вывоз ТБО   0,00   2,00   0,00           01.10.2013   31.10.2013

Нужно вот так:
LS                    USL                    JBO   TBO   JBONP   DATAN           DATAK
л/с №0001   Вывоз ТБО   0,00   2,00   3,00           01.10.2013   31.10.2013
л/с №0002   Вывоз ТБО   0,00   6,00   0,00           01.10.2013   31.10.2013
л/с №0009   Вывоз ТБО   0,00   2,00   0,00           01.10.2013   31.10.2013

wise

если БЕЗ разницы, что писать в поле "USL", то группируй в запросе по "LS, DATAN, DATAK" и суммируй "JBO, TBO"
p.s. у тебя и NIK как поля таблицы ;-)
Представьте себе, какая была бы тишина, если бы люди говорили только то, что знают

gbs

Цитата: wise от 27 ноя 2013, 12:53
если БЕЗ разницы, что писать в поле "USL", то группируй в запросе по "LS, DATAN, DATAK" и суммируй "JBO, TBO"
p.s. у тебя и NIK как поля таблицы ;-)

Поле "USL" действительно не обязательное, но проблема не в этом, значение полей "JBO, TBO, JBONP" это  количественное значение услуги, результат получаем во время цикла, как их обеденить строки выборки?
                   |   УПЖКХ_Начисления.ЛицевойСчет КАК ЛицевойСчет,
              |   УПЖКХ_Начисления.СуммаНачисления,
              |   УПЖКХ_Начисления.ДнейНачислено,
              |   УПЖКХ_Начисления.Период,
              |   УПЖКХ_Начисления.МесяцНачисления,
              |   УПЖКХ_Начисления.Услуга КАК усл,
              |   УПЖКХ_Начисления.Тариф,
              |   УПЖКХ_Начисления.Количество КАК кол,
              |   КВП_ЛицевыеСчета.Ссылка КАК л
              |ИЗ
              |   РегистрНакопления.УПЖКХ_Начисления КАК УПЖКХ_Начисления
              |      ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КВП_ЛицевыеСчета КАК КВП_ЛицевыеСчета
              |      ПО УПЖКХ_Начисления.ЛицевойСчет = КВП_ЛицевыеСчета.Ссылка
              |ГДЕ
              |   УПЖКХ_Начисления.Период МЕЖДУ &начдата И &кондата
              |   И УПЖКХ_Начисления.Количество <> 0
              |
              |СГРУППИРОВАТЬ ПО
              |   КВП_ЛицевыеСчета.Ссылка,
              |   УПЖКХ_Начисления.ЛицевойСчет,
              |   УПЖКХ_Начисления.СуммаНачисления,
              |   УПЖКХ_Начисления.ДнейНачислено,
              |   УПЖКХ_Начисления.Период,
              |   УПЖКХ_Начисления.МесяцНачисления,
              |   УПЖКХ_Начисления.Услуга,
              |   УПЖКХ_Начисления.Тариф,
              |   УПЖКХ_Начисления.Количество
              |
              |УПОРЯДОЧИТЬ ПО
              |   л
              |АВТОУПОРЯДОЧИВАНИЕ";
            //|ИТОГИ ПО
              //|   л"
            Запрос.УстановитьПараметр("КонДата", КонДата);
   Запрос.УстановитьПараметр("НачДата", НачДата);

   Результат = Запрос.Выполнить();
    СпособВыборки = ОбходРезультатаЗапроса.ПоГруппировкам;

   ВыборкаДетальныеЗаписи = Результат.Выбрать(СпособВыборки);
     
   Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
      
                 спр1 = справочники.КВП_Услуги.НайтиПоКоду("000007");
        спр = справочники.КВП_Услуги.НайтиПоКоду("000013");
      спр2 = справочники.КВП_Услуги.НайтиПоКоду("000011");
                 
    Выборка = ВыборкаДетальныеЗаписи;
               
      k = выборка.кол;
        услуга = выборка.усл; 
       ДБФ.Добавить();
         
      ДБФ.УстановитьЗначениеПоля("ls",сокрЛП(выборка.л));
        ДБФ.УстановитьЗначениеПоля("kol",сокрЛП(Выборка.кол));
        ДБФ.УстановитьЗначениеПоля("usl",сокрЛП(Выборка.усл));
        если услуга = спр тогда
          усл1 = услуга;
         сообщить ("ТБО"+" , " + усл1);
         к1 = выборка.кол;
         усл2 = к1;
            ДБФ.УстановитьЗначениеПоля("TBO",сокрЛП(усл2));
         иначе      ДБФ.УстановитьЗначениеПоля("TBO",сокрЛП(""));
               КонецЕсли;   
         если услуга = спр1 тогда
          усл3 = услуга;
         сообщить ("JBO"+" , " +усл3);
         к2 = выборка.кол;
            усл4 = к2;
            ДБФ.УстановитьЗначениеПоля("JBO",сокрЛП(усл4));
         иначе      ДБФ.УстановитьЗначениеПоля("JBO",сокрЛП(""));
         конецесли ;         
                 если услуга = спр2 тогда
          усл5 = услуга;
         сообщить ("JBONP"+" , " +усл5);
         к3 = выборка.кол;
            усл6 = к3;
            ДБФ.УстановитьЗначениеПоля("JBONP",сокрЛП(усл6));
         иначе      ДБФ.УстановитьЗначениеПоля("JBONP",сокрЛП(""));
           КонецЕсли;

wise

              |   УПЖКХ_Начисления.ЛицевойСчет КАК ЛицевойСчет,
              |   УПЖКХ_Начисления.СуммаНачисления,
              |   УПЖКХ_Начисления.ДнейНачислено,
              |   УПЖКХ_Начисления.Период,
              |   УПЖКХ_Начисления.МесяцНачисления,
              |   УПЖКХ_Начисления.Услуга КАК усл,
              |   УПЖКХ_Начисления.Тариф,
             !!! |   Сумма(УПЖКХ_Начисления.Количество) КАК кол,!!
              |   КВП_ЛицевыеСчета.Ссылка КАК л
              |ИЗ
              |   РегистрНакопления.УПЖКХ_Начисления КАК УПЖКХ_Начисления
              |      ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КВП_ЛицевыеСчета КАК КВП_ЛицевыеСчета
              |      ПО УПЖКХ_Начисления.ЛицевойСчет = КВП_ЛицевыеСчета.Ссылка
              |ГДЕ
              |   УПЖКХ_Начисления.Период МЕЖДУ &начдата И &кондата
              |   И УПЖКХ_Начисления.Количество <> 0
              |
              |СГРУППИРОВАТЬ ПО
              |   КВП_ЛицевыеСчета.Ссылка,
              |   УПЖКХ_Начисления.ЛицевойСчет,
              |   УПЖКХ_Начисления.СуммаНачисления,
              |   УПЖКХ_Начисления.ДнейНачислено,
              |   УПЖКХ_Начисления.Период,
              |   УПЖКХ_Начисления.МесяцНачисления,
              |   УПЖКХ_Начисления.Услуга,
              |   УПЖКХ_Начисления.Тариф
              |
              |УПОРЯДОЧИТЬ ПО
              |   л
              |АВТОУПОРЯДОЧИВАНИЕ";
            //|ИТОГИ ПО
              //|   л"

p.s. НЕ понятно ЗАЧЕМ получаешь КУЧУ(СуммаНачисления,ДнейНачислено,Период... и т.д.)данных если они НЕ используются...

переменные ЛУЧШЕ инициализировать ДО цикла! {   
            Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
     
                  спр1 = справочники.КВП_Услуги.НайтиПоКоду("000007");
                  спр = справочники.КВП_Услуги.НайтиПоКоду("000013");
                  спр2 = справочники.КВП_Услуги.НайтиПоКоду("000011");
}
Представьте себе, какая была бы тишина, если бы люди говорили только то, что знают

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск