8.х Отчет-Цикл

Тема в разделе "Отчеты и обработки для "1С:Предприятие 8"", создана пользователем prog_22, 23 окт 2013.

  1. TopicStarter Overlay
    prog_22
    Offline

    prog_22 Опытный в 1С

    Регистрация:
    31 окт 2012
    Сообщения:
    171
    Симпатии:
    0
    Баллы:
    26
    Здравствуйте! Не получается с циклом. Выводит только одну организацию, причем последнюю из результата отчета.

    Есть запрос:

    Код:
    Запрос.Текст = "
    |ВЫБРАТЬ
    | РеализацияТоваровУслугТовары.Ссылка,
    | РеализацияТоваровУслугТовары.Ссылка.Организация	    КАК Организация,
    | РеализацияТоваровУслугТовары.Ссылка.Контрагент	    КАК Покупатель,
    | РеализацияТоваровУслугТовары.СерияНоменклатуры.алкПроизводитель    КАК Поставщик,
    | РеализацияТоваровУслугТовары.Номенклатура.алкВидПродукции	 КАК Номенклатура,
    | РеализацияТоваровУслугТовары.Номенклатура.алкВидПродукции.ЛокальныйКод  КАК Код,
    | РеализацияТоваровУслугТовары.СерияНоменклатуры.НомерГТД	  КАК ГТД,
    | РеализацияТоваровУслугТовары.СерияНоменклатуры,
    | РеализацияТоваровУслугТовары.Ссылка.алкЛицензияКонтрагента	 КАК Лицензия,
    | СУММА(РеализацияТоваровУслугТовары.Количество * РеализацияТоваровУслугТовары.Номенклатура.алкЕмкость / 10) КАК Количество
    |ИЗ
    | Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
    |ГДЕ РеализацияТоваровУслугТовары.Ссылка.Проведен = ИСТИНА
    | И РеализацияТоваровУслугТовары.Ссылка.Дата МЕЖДУ &НачПер И КОНЕЦПЕРИОДА(&КонПер,ДЕНЬ)
    | И РеализацияТоваровУслугТовары.Номенклатура.ВидНоменклатуры.алкВидЭлементаТМЦ = &алкВидЭлементаТМЦ
    |" + ?(флXLS,"","И РеализацияТоваровУслугТовары.Ссылка.Контрагент = &Контрагент") + "
    |
    |СГРУППИРОВАТЬ ПО
    | РеализацияТоваровУслугТовары.СерияНоменклатуры.алкПроизводитель,
    | РеализацияТоваровУслугТовары.Ссылка.Контрагент,
    | РеализацияТоваровУслугТовары.Номенклатура.алкВидПродукции,
    | РеализацияТоваровУслугТовары.Номенклатура.алкВидПродукции.ЛокальныйКод,
    | РеализацияТоваровУслугТовары.СерияНоменклатуры.НомерГТД,
    | РеализацияТоваровУслугТовары.СерияНоменклатуры,
    | РеализацияТоваровУслугТовары.Ссылка.Дата,
    | РеализацияТоваровУслугТовары.Ссылка
    |
    |УПОРЯДОЧИТЬ ПО
    | Покупатель,
    | Код,
    | Поставщик,
    | Номенклатура
    |ИТОГИ ПО
    | Покупатель,
    | Организация
    |   Код
    |";
    
    Запрос.УстановитьПараметр("КонПер",    конпер);
    Запрос.УстановитьПараметр("НачПер",    начпер);
    Запрос.УстановитьПараметр("Контрагент",   контрагент);
    Запрос.УстановитьПараметр("алкВидЭлементаТМЦ", Перечисления.алкВидыЭлементовТМЦ.Алкоголь);
    
    Далее пишу:

    Код:
    Результат = Запрос.Выполнить();
    ВыборкаПокупатель = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    
    К= 0;
    Пока ВыборкаПокупатель.Следующий() Цикл
    ВыборкаПоорганизациям = ВыборкаПокупатель.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    ОрганизацияПоВыборке = ВыборкаПоОрганизациям.Организация;
    ВыбЗап = ВыборкаПокупатель.Выбрать();
    Текст = Новый ТекстовыйДокумент;
    Код0 = Строка("<?xml version=""1.0""" + "encoding"+"="+"""WINDOWS-1251"""+"?>");
    Текст.ДобавитьСтроку(Код0);
    Код1 = Строка("-<Файл НаимПрог=""VH""" + "ВерсФорм=""4.20""" + "ДатаДок="+ """" +ТекущаяДата()+"""" +">");
    Текст.ДобавитьСтроку(Код1);
    Пока ВыбЗап.Следующий() Цикл
    
    Код2 = Строка("-<Документ>");
    Текст.ДобавитьСтроку(Код2);
    К=К+1;
    Код3 = Строка("-<Оборот П000000000003= "+ СокрЛП(ВыбЗап.Код) + "ПN= " +Число(К) +">");
    Текст.ДобавитьСтроку(Код3);
    Пока ВыборкаПоорганизациям.Следующий() Цикл 
    Код4 = Строка("-<СведПроизвИмпорт KPP= "+ """"+СокрЛП(ВыборкаПоорганизациям.Покупатель.кпп)+ """" +"INN= " + """" + СокрЛП(ВыборкаПоорганизациям.Покупатель.инн)+ """" + "NameOrg= " +  """" + СокрЛП(ВыборкаПоорганизациям.Покупатель.НаименованиеПолное)+ """" +">");
    Текст.ДобавитьСтроку(Код4);
    КонецЦикла;
    
    КонецЦикла;
    КонецЦикла;
    
    Код8 = Строка("</Документ>");
    Текст.ДобавитьСтроку(Код8);
    Код9 = Строка("</Файл>");
    Текст.ДобавитьСтроку(Код9);
    
    
    Текст.Записать("D:\12\ППП.txt");
    
    

    Вот что у меня получается в итоге в txt файле :

    ?xml version="1.0"encoding="WINDOWS-1251"?>
    -<Файл НаимПрог="VH"ВерсФорм="4.20"ДатаДок="23.10.2013 15:22:15">
    -<Документ>
    -<Оборот П000000000003= ПN= 252>
    -<СведПроизвИмпорт KPP= "502701001"INN= "5027171115"NameOrg= "Общество с ограниченной ответственностью "Аквариус-Куб"">
    \\ эта посл. организация из результата вывода отчета. до этого не выводится.

    -<Документ>
    -<Оборот П000000000003= 260ПN= 253>
    -<Документ>
    -<Оборот П000000000003= 260ПN= 254>
    -<Документ>
    -<Оборот П000000000003= 260ПN= 255>
    -<Документ>
    -<Оборот П000000000003= 260ПN= 256>
    -<Документ>
    -<Оборот П000000000003= 500ПN= 257>
    -<Документ>
    -<Оборот П000000000003= 500ПN= 258>
    -<Документ>
    -<Оборот П000000000003= 520ПN= 259>
    -<Документ>
    -<Оборот П000000000003= 520ПN= 260>
    -<Документ>
    -<Оборот П000000000003= 520ПN= 261>
    -<Документ>
    -<Оборот П000000000003= 520ПN= 262>
    -<Документ>
    -<Оборот П000000000003= 520ПN= 263>
    -<Документ>
    -<Оборот П000000000003= 520ПN= 264>
    -<Документ>
    -<Оборот П000000000003= 520ПN= 265>
    </Документ>
    </Файл>

    А должно быть так:

    ?xml version="1.0"encoding="WINDOWS-1251"?>
    -<Файл НаимПрог="VH"ВерсФорм="4.20"ДатаДок="23.10.2013 15:22:15">
    -<Документ>
    -<Оборот П000000000003= тут локальный код ПN= 252>
    -<СведПроизвИмпорт KPP= "502701001"INN= "5027171115"NameOrg= "Орг1"">
    -<СведПроизвИмпорт KPP= "502701001"INN= "5027171115"NameOrg= "Орг2"">
    -<СведПроизвИмпорт KPP= "502701001"INN= "5027171115"NameOrg= "Орг3"">
    -<СведПроизвИмпорт KPP= "502701001"INN= "5027171115"NameOrg= "Орг4"">
    -<Документ>
    -<Оборот П000000000003= 260ПN= 253>
    -<СведПроизвИмпорт KPP= "502701001"INN= "5027171115"NameOrg= "Орг1"">
    -<СведПроизвИмпорт KPP= "502701001"INN= "5027171115"NameOrg= "Орг2"">

    ну и тд.


    Помогите пожалуйста!
  2. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    1. для выгрузки в формате xml существует классный объект ЗаписьXML. то, что у вас получается не распарсит ни один парсер
    2. строчку Текст = Новый ТекстовыйДокумент; и вывод первых строк вынесите до первого цикла
  3. TopicStarter Overlay
    prog_22
    Offline

    prog_22 Опытный в 1С

    Регистрация:
    31 окт 2012
    Сообщения:
    171
    Симпатии:
    0
    Баллы:
    26
    1. Нужно именно в текстовый сначала сохранять, такого задание..

    2. Все сделал, организации появились,но

    <?xml version="1.0"encoding="WINDOWS-1251"?>
    -<Файл НаимПрог="VH"ВерсФорм="4.20"ДатаДок="23.10.2013 16:11:38">
    -<Документ>
    -<Оборот П000000000003= Вот тут нужен номер(например 260 или 520 и по номеру пошли организации, а сейчас выходит организация, а потом список номеров) ПN= 1>
    -<СведПроизвИмпорт KPP= "771801001"INN= "7718721040"NameOrg= "Орг1"">
    -<СведПроизвИмпорт KPP= "771801001"INN= "7718721040"NameOrg= "Орг2"">
    -<Оборот П000000000003= 520 ПN= 2>

    -<СведПроизвИмпорт KPP= "771801001"INN= "7718721040"NameOrg= "Орг1"">
    -<СведПроизвИмпорт KPP= "771801001"INN= "7718721040"NameOrg= "Орг2"">


    а сейчас вот так :


    <Документ>
    -<Оборот П000000000003= тут пусто ПN= 1>
    -<СведПроизвИмпорт KPP= "771801001"INN= "7718721040"NameOrg= "Орг1>
    -<Документ>
    -<Оборот П000000000003= 260ПN= 2>
    -<Документ>
    -<Оборот П000000000003= 260ПN= 3>
    -<Документ>
    -<Оборот П000000000003= 520ПN= 4>
    -<Документ>

    -<СведПроизвИмпорт KPP= "771801001"INN= "7718721040"NameOrg= "Орг2>
    -<Документ>
    -<Оборот П000000000003= 260ПN= 2>
    -<Документ>
    -<Оборот П000000000003= 260ПN= 3>
    -<Документ>
    -<Оборот П000000000003= 520ПN= 4>
    -<Документ>
  4. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    тогда в запросе в итогах поменять местами код и организацию и попробовать так:

    Код:
    Результат = Запрос.Выполнить();
    ВыборкаПокупатель = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    
    Текст = Новый ТекстовыйДокумент;
    Код0 = Строка(""1.0""" + "encoding"+"="+"""WINDOWS-1251"""+"?>");
    Текст.ДобавитьСтроку(Код0);
    Код1 = Строка("-<Файл НаимПрог=""VH""" + "ВерсФорм=""4.20""" + "ДатаДок="+ """" +ТекущаяДата()+"""" +">");
    Текст.ДобавитьСтроку(Код1);
    
    К= 0;
    Пока ВыборкаПокупатель.Следующий() Цикл
    ВыбЗап = ВыборкаПокупатель.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    Пока ВыбЗап.Следующий() Цикл
    Код2 = Строка("-<Документ>");
    Текст.ДобавитьСтроку(Код2);
    К=К+1;
    Код3 = Строка("-<Оборот П000000000003= "+ СокрЛП(ВыбЗап.Код) + "ПN= " +Число(К) +">");
    Текст.ДобавитьСтроку(Код3);
    
    ВыборкаПоорганизациям = ВыбЗап.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    Пока ВыборкаПоорганизациям.Следующий() Цикл
    ОрганизацияПоВыборке = ВыборкаПоОрганизациям.Организация;
    Код4 = Строка("-<СведПроизвИмпорт KPP= "+ """"+СокрЛП(ВыборкаПоорганизациям.Покупатель.кпп)+ """" +"INN= " + """" + СокрЛП(ВыборкаПоорганизациям.Покупатель.инн)+ """" + "NameOrg= " +  """" +
    СокрЛП(ВыборкаПоорганизациям.Покупатель.НаименованиеПолное)+ """" +">");
    Текст.ДобавитьСтроку(Код4);
    КонецЦикла;
    КонецЦикла;
    КонецЦикла;
    
    Код8 = Строка("");
    Текст.ДобавитьСтроку(Код8);
    Код9 = Строка("");
    Текст.ДобавитьСтроку(Код9);
    
    Текст.Записать("D:\12\ППП.txt");
    
  5. TopicStarter Overlay
    prog_22
    Offline

    prog_22 Опытный в 1С

    Регистрация:
    31 окт 2012
    Сообщения:
    171
    Симпатии:
    0
    Баллы:
    26
    Получилось вот так:

    -<Оборот П000000000003= 260 ПN= 1>
    -<СведПроизвИмпорт KPP= "771801001"INN= "7718721040"NameOrg= "Орг1"">
    -<СведПроизвИмпорт KPP= "771801001"INN= "7718721040"NameOrg= "Орг1"">

    -<СведПроизвИмпорт KPP= "771801001"INN= "7718721040"NameOrg= "Орг1">
    -<СведПроизвИмпорт KPP= "771801001"INN= "7718721040"NameOrg= "Орг1"">

    -<Оборот П000000000003= 520 ПN= 1>

    -<СведПроизвИмпорт KPP= "771801001"INN= "7718721040"NameOrg= "Орг2">
    -<СведПроизвИмпорт KPP= "771801001"INN= "7718721040"NameOrg= "Орг2"">

    то есть он по очереди для одной организации выводит номера,потом для второй..получается они повторяются, а не должны.

    то есть

    -<Оборот П000000000003= 260 ПN= 1>

    -<СведПроизвИмпорт KPP= "771801001"INN= "7718721040"NameOrg= "Орг1">
    -<СведПроизвИмпорт KPP= "771801001"INN= "7718721040"NameOrg= "Орг2"">

    -<СведПроизвИмпорт KPP= "771801001"INN= "7718721040"NameOrg= "Орг3">
    -<СведПроизвИмпорт KPP= "771801001"INN= "7718721040"NameOrg= "Орг4"">


    -<Оборот П000000000003= 520 ПN= 1>

    -<СведПроизвИмпорт KPP= "771801001"INN= "7718721040"NameOrg= "Орг1">
    -<СведПроизвИмпорт KPP= "771801001"INN= "7718721040"NameOrg= "Орг2"">

    -<СведПроизвИмпорт KPP= "771801001"INN= "7718721040"NameOrg= "Орг3">
    -<СведПроизвИмпорт KPP= "771801001"INN= "7718721040"NameOrg= "Орг4"">


    Сам сейчас пытаюсь исправить, не пойму как(
  6. TopicStarter Overlay
    prog_22
    Offline

    prog_22 Опытный в 1С

    Регистрация:
    31 окт 2012
    Сообщения:
    171
    Симпатии:
    0
    Баллы:
    26
    Код:
     Код3 = Строка("-<Оборот П000000000003= "+ СокрЛП(ВыбЗап.Код) + "ПN= " +Число(К) +">");
    Текст.ДобавитьСтроку(Код3);
    Вот этот код получается выдает подряд значение номера для организаций,т.е.

    260
    орг 1
    орг 1
    орг 1
    500
    орг 1
    орг1
    орг1
    520
    орг 1
    орг 1


    260
    орг 2
    орг 2
    орг 2
    500
    орг 2
    орг 2

    и тд.. (
  7. nickpugachev
    Offline

    nickpugachev Профессионал в 1С Команда форума

    Регистрация:
    28 май 2012
    Сообщения:
    3.266
    Симпатии:
    131
    Баллы:
    104
    в запросе код и организация местами поменяны?
  8. TopicStarter Overlay
    prog_22
    Offline

    prog_22 Опытный в 1С

    Регистрация:
    31 окт 2012
    Сообщения:
    171
    Симпатии:
    0
    Баллы:
    26
    да, то что я писал выше это с

    Код:
    |ИТОГИ ПО
    | Покупатель,
    | Код,
    |  Организация

    При таком раскладе получается так:
    Код:
    |ИТОГИ ПО
    | Организация,
    | Код,
    |   Покупатель
    |";
    


    -<Оборот П000000000003= 260ПN= 1> \\правильно
    далее идут организации подряд, но дублируются
    <СведПроизвИмпорт KPP= "771801001"INN= "7718721040"NameOrg= "Ощество с ограниченной ответственностью "орг1"">
    -<СведПроизвИмпорт KPP= "771801001"INN= "7718721040"NameOrg= "Ощество с ограниченной ответственностью "орг1"">
    -<СведПроизвИмпорт KPP= "771801001"INN= "7718721040"NameOrg= "Ощество с ограниченной ответственностью "орг1"">
    -<СведПроизвИмпорт KPP= "771801001"INN= "7718721040"NameOrg= "Ощество с ограниченной ответственностью "орг2"">
    -<СведПроизвИмпорт KPP= "771801001"INN= "7718721040"NameOrg= "Ощество с ограниченной ответственностью "орг2"">
    -<СведПроизвИмпорт KPP= "771801001"INN= "7718721040"NameOrg= "Ощество с ограниченной ответственностью "орг2"">

    -<Оборот П000000000003= 500ПN= 1> \\правильно
    <СведПроизвИмпорт KPP= "771801001"INN= "7718721040"NameOrg= "Ощество с ограниченной ответственностью "орг1"">
    -<СведПроизвИмпорт KPP= "771801001"INN= "7718721040"NameOrg= "Ощество с ограниченной ответственностью "орг1"">
    -<СведПроизвИмпорт KPP= "771801001"INN= "7718721040"NameOrg= "Ощество с ограниченной ответственностью "орг1"">
    -<СведПроизвИмпорт KPP= "771801001"INN= "7718721040"NameOrg= "Ощество с ограниченной ответственностью "орг2"">
    -<СведПроизвИмпорт KPP= "771801001"INN= "7718721040"NameOrg= "Ощество с ограниченной ответственностью "орг2"">
    -<СведПроизвИмпорт KPP= "771801001"INN= "7718721040"NameOrg= "Ощество с ограниченной ответственностью "орг2"">

    Вот при таком заработало, перезапустил, может глюк был

    Код:
    |ИТОГИ ПО
    | Организация,
    | Код,
    |   Покупатель
    |";
    
    Спасибо огромное! Сейчас буду тестить

Поделиться этой страницей