8.х Как работать с результатом запроса? Обход группировок

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем notaSS, 10 авг 2015.

  1. TopicStarter Overlay
    notaSS
    Offline

    notaSS Опытный в 1С

    Регистрация:
    22 ноя 2014
    Сообщения:
    73
    Симпатии:
    0
    Баллы:
    26
    Здравствуйте!
    Создаю печатную форму для документа списание мз.
    Поля материалы должны выводиться одной строкой (каждый материал в отдельной колонке) и под ними соответственно одной строкой количество этих материалов. Итоги под количеством. во вложении пример

    мой запрос такой, просто с группировками не работала
    Код:
    ВЫБРАТЬ
        МЗ_СписаниеМатериалы.Ссылка,
        МЗ_СписаниеМатериалы.Ссылка.ЦМОПолучатель,
        МЗ_СписаниеМатериалы.Номенклатура.Код,
        МЗ_СписаниеМатериалы.Номенклатура.Наименование,
        МЗ_СписаниеМатериалы.Номенклатура.ЕдиницаИзмерения.Наименование,
        МЗ_СписаниеМатериалы.Номенклатура.ЕдиницаИзмерения.Код
    ИЗ
        Документ.МЗ_Списание.Материалы КАК МЗ_СписаниеМатериалы
    ГДЕ
        МЗ_СписаниеМатериалы.Ссылка = &Ссылка

    Вложения:

    • 1111.png
      1111.png
      Размер файла:
      6,7 КБ
      Просмотров:
      4
  2. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    Насколько понимаю, необходимо сделать

    ИТОГИ по МЗ_СписаниеМатериалы.Номенклатура.ЕдиницаИзмерения.Наименование
  3. TopicStarter Overlay
    notaSS
    Offline

    notaSS Опытный в 1С

    Регистрация:
    22 ноя 2014
    Сообщения:
    73
    Симпатии:
    0
    Баллы:
    26
    Я что то неправильно сделала, помогите разобраться. Не судите строго. выводит одну и ту же номенклатуру в одну колонку, а мне нужно,чтобы каждая в отдельной колонке выводилась
    Код:
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    колонкаН = табдокумент.получитьобласть("R39C8:R42C12");
    ТабДокумент.НачатьАвтогруппировкуКолонок();
    колонкаН.Область("R39C8:R42C12").Текст = "наменование";
    ТабДокумент.Вывести(колонкаН,1,"Группа 1",Ложь);
    // Для н = 1 по 10 Цикл
    колонкаН = ТабДокумент.ПолучитьОбласть("R39C8:R42C12");
    колонкаН.Область().Текст = "А"+ВыборкаДетальныеЗаписи.наименование;
    колонкаН.Область().ГоризонтальноеПоложение = ГоризонтальноеПоложение.Право;
    ТабДокумент.Присоединить(колонкаН,2,"Группа 2",Истина);
    // КонецЦикла;
    // ОбластьТаблица.параметры.Наименование = ВыборкаДетальныеЗаписи.Наименование;
    
    КонецЦикла;
    --- Объединение сообщений, 10 авг 2015 ---
    В отладчике смотрю - проходится по всей выборке, а потом как будто затирает и в итоге выводит самую первую несколько раз
  4. TopicStarter Overlay
    notaSS
    Offline

    notaSS Опытный в 1С

    Регистрация:
    22 ноя 2014
    Сообщения:
    73
    Симпатии:
    0
    Баллы:
    26
    Объясните, почему выводит одно и то же наименование 5 раз в колонку и 4раза в строку? и так для каждой номенклатуры?
    Код:
        Запрос.Текст =
            "ВЫБРАТЬ
            |    МЗ_СписаниеМатериалы.Ссылка,
            |    МЗ_СписаниеМатериалы.Ссылка.ЦМОПолучатель,
            |    МЗ_СписаниеМатериалы.Номенклатура.Код,
            |    МЗ_СписаниеМатериалы.Номенклатура.Наименование КАК Наименование,
            |    МЗ_СписаниеМатериалы.Номенклатура.ЕдиницаИзмерения.Наименование,
            |    МЗ_СписаниеМатериалы.Номенклатура.ЕдиницаИзмерения.Код
            |ИЗ
            |    Документ.МЗ_Списание.Материалы КАК МЗ_СписаниеМатериалы
            |ГДЕ
            |    МЗ_СписаниеМатериалы.Ссылка = &Ссылка";
       
            Запрос.УстановитьПараметр("Ссылка", Ссылка);
       
            РезультатЗапроса = Запрос.Выполнить().Выгрузить();
                       
                колонкаН = табдокумент.получитьобласть("R49C2:R53C5");
                ТабДокумент.НачатьАвтогруппировкуКолонок();
                колонкаН.Область("R49C2:R53C5").Текст = "наменование";
                ТабДокумент.Вывести(колонкаН,1,"Группа 1",Ложь);
                        Для каждого текстрока из РезультатЗапроса Цикл
                    колонкаН = ТабДокумент.ПолучитьОбласть("R49C2:R53C5");
                    колонкаН.Область().Текст = текстрока.Наименование;
                    колонкаН.Область().ГоризонтальноеПоложение = ГоризонтальноеПоложение.Право;
                    ТабДокумент.Присоединить(колонкаН,2,"Группа 2",Истина);
            КонецЦикла;
        //    ОбластьТаблица.параметры.Наименование = ВыборкаДетальныеЗаписи.Наименование;
    
           
        //КонецЦикла;
    //табдокумент.вывести(областьтаблица);
    // ФормированиеПечатныхФорм.ПечатьВедомостиВыдачи210(ТабДокумент, СтруктураДанных, Дата);
       
        Возврат ТабДокумент;
    
  5. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    Координаты получаемой области в ПолучитьОбласть("R49C2:R53C5") менять нужно, иначе так и будем в одну и ту же область записывать значение.
  6. ppkmlite
    Offline

    ppkmlite Опытный в 1С

    Регистрация:
    28 окт 2014
    Сообщения:
    70
    Симпатии:
    0
    Баллы:
    26
    Поменяла область результат не изменился
    Код:
     РезультатЗапроса = Запрос.Выполнить().Выгрузить();
    
                            колонкаН = табдокумент.получитьобласть("R49C2:R53C5");
                            ТабДокумент.НачатьАвтогруппировкуКолонок();
                            колонкаН.Область("R48C1:R50C4").Текст = "наменование";
                            ТабДокумент.Вывести(колонкаН,1,"Группа 1",Ложь);
                                            Для каждого текстрока из РезультатЗапроса Цикл
                                    колонкат = ТабДокумент.ПолучитьОбласть("R48C6:R50C10");
                                    колонкат.Область().Текст = текстрока.Наименование;
                                    колонкат.Область().ГоризонтальноеПоложение = ГоризонтальноеПоложение.Право;
                                    ТабДокумент.Присоединить(колонкат,2,"Группа 2",Истина);
                    КонецЦикла;
    
    --- Объединение сообщений, 11 авг 2015 ---
    Вывод номенклатуру пять раз одну и ту же и вообще не в ту область!!
  7. ppkmlite
    Offline

    ppkmlite Опытный в 1С

    Регистрация:
    28 окт 2014
    Сообщения:
    70
    Симпатии:
    0
    Баллы:
    26
    Может кто посоветует материалы по этой теме, совсем запуталась
  8. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    Я бы вам посоветовал начать с начала, а именно с понимания того, что возвращает результат запроса и как с этим работать.
    У вас запрос одинаковую номенклатуру по разным документам выводит - все логично.
    Почему вы пытаетесь в цикле записать значение разной номенклатуры в одну и ту же ячейку - мне до сих пор категорически не понятно.

    Можно попробовать почитать такую книгу.
  9. ppkmlite
    Offline

    ppkmlite Опытный в 1С

    Регистрация:
    28 окт 2014
    Сообщения:
    70
    Симпатии:
    0
    Баллы:
    26
    у меня отбор по ссылке - у меня только по одному документу выводится
    Запрос.УстановитьПараметр("Ссылка", Ссылка);
  10. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.548
    Симпатии:
    716
    Баллы:
    204
    Значит несколько строк в ТЧ документа с одинаковой номенклатурой.

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