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

Обработка запроса

Автор Dmitrii_VVV, 23 авг 2023, 17:13

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

Dmitrii_VVV

Помогите, люди добрые с обработкой запроса)

Учебная конф-я

Не выводит в шапке дата,номер и контрагенты

В какую строку смотреть



&НаКлиенте
Процедура Печать(Команда)
   
   ТабДок = Новый ТабличныйДокумент;
   ПечатьДок(ТабДок,ДокументСсылка);
   
   ТабДок.Показать();
   
КонецПроцедуры


&НаСервере
Процедура ПечатьДок(ТабДок, Ссылка) Экспорт 
   
   Обработка   =  РеквизитФормыВЗначение("Объект");
   МакетОбработки = Обработка.ПолучитьМакет("ПечатнаяФорма");
   
   ТабДок.ОтображатьСетку     = Ложь;   
   ТабДок.ОтображатьЗаголовки = Ложь;
   ТабДок.АвтоМасштаб         = Истина;   
   ТабДок.Защита              = Истина;
   ТабДок.ОриентацияСтраницы  = ОриентацияСтраницы.Портрет;

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

   
КонецПроцедуры;

LexaK

Dmitrii_VVV,
    //Заполняем шапку
   ОбластьШапка                       = МакетОбработки.ПолучитьОбласть("Шапка"); //здесь только получили область и все...
...
...
   
а дальше в коде, ни где не заполняете и не выводите в ТабДок   :fdbsdfbsd:
если помогло нажмите: Спасибо!

Максим75

Dmitrii_VVV, в запросе все в кучу, кони, люди, мечи, секиры и топоры. просто жуть.

У меня очень устойчивое впечатление, что уже такое недавно было.
Выкладываю примерный код:

Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    ПриходнаяНакладная.Номер КАК Номер,
        |    ПриходнаяНакладная.Дата КАК Дата,
        |    ПриходнаяНакладная.СуммаДокумента КАК СуммаДокумента,
        |    ПриходнаяНакладная.Поставщик.Наименование КАК Поставщик
        |ИЗ
        |    Документ.ПриходнаяНакладная КАК ПриходнаяНакладная
        |ГДЕ
        |    ПриходнаяНакладная.Ссылка = &СсылкаНаДокумент
        |;
        |
        |////////////////////////////////////////////////////////////////////////////////
        |ВЫБРАТЬ
        |    ПриходнаяНакладнаяТМЦ.НомерСтроки КАК НомерСтроки,
        |    ПриходнаяНакладнаяТМЦ.Товар.Наименование КАК Товар,
        |    ПриходнаяНакладнаяТМЦ.Колво КАК Колво,
        |    ПриходнаяНакладнаяТМЦ.Цена КАК Цена,
        |    ПриходнаяНакладнаяТМЦ.Сумма КАК Сумма
        |ИЗ
        |    Документ.ПриходнаяНакладная.ТМЦ КАК ПриходнаяНакладнаяТМЦ
        |ГДЕ
        |    ПриходнаяНакладнаяТМЦ.Ссылка = &СсылкаНаДокумент";
   
    Запрос.УстановитьПараметр("СсылкаНаДокумент", СсылкаНаДокумент);
   
    МассивРезультатовЗапроса = Запрос.ВыполнитьПакет();//выполняется пакет запросов
    //один по шапке документа
    //второй по табличной части
    //получаем массив результатов выполнения запроса
    //обращение к каждому результату как к элементы массива.
   
    ВыборкаШапка = МассивРезультатовЗапроса[0].Выбрать();//выборка по первому элементу массива, т.е. по шапке документа
    ВыборкаТовары = МассивРезультатовЗапроса[1].Выбрать();//выборка по второму элементу массива, т.е. по табличной части товары
   
    ВыборкаШапка.Следующий();//в выборке всего 1 строка, поэтому на ней и позиционируемся
//здесь по шапке выбираем все что надо: номер накладной, дату накладной, покупателя и прочее


//здесь обходим табличную часть
Пока ВыборкаТовары.Следующий() цикл
       
       
    КОнецЦикла;


процедура такая: делаете пакетный запрос (у Вас он уже есть), выполняете именно пакетный запрос, получаете две выборки - одна отвечает за шапку, другая - за строки документа.
а дальше уже вначале выводите на печать все что надо с шапки, потом строки.

п.с. Естественно код запроса переделать под свои данные.

Dmitrii_VVV

Цитата: LexaK от 23 авг 2023, 17:24Dmitrii_VVV,
    //Заполняем шапку
   ОбластьШапка                       = МакетОбработки.ПолучитьОбласть("Шапка"); //здесь только получили область и все...
...
...
   
а дальше в коде, ни где не заполняете и не выводите в ТабДок   :fdbsdfbsd:

Уважаемый, есть и продолжение

   //ОбластьШапка.Параметры.Номер       = Ссылка.Номер;
   //ОбластьШапка.Параметры.Дата        = Формат(Ссылка.Дата, "ДЛФ=DD"); 
   //ОбластьШапка.Параметры.Контрагенты = Ссылка.Контрагенты;

Но, мне поставлена задача сделать тоже самое в запросе и далее обработать

В этом, собственно и вопрос

Я начинающий, не судите строго, мог что то и напутать :dfbsdfbsdf:

LexaK

Цитата: Dmitrii_VVV от 24 авг 2023, 09:23//ОбластьШапка.Параметры.Номер       = Ссылка.Номер;
   //ОбластьШапка.Параметры.Дата        = Формат(Ссылка.Дата, "ДЛФ=DD"); 
   //ОбластьШапка.Параметры.Контрагенты = Ссылка.Контрагенты;
все что стоит с права от двух слэшей "//" считается комментарием и ни как не обрабатывается

получить все данные запросом это одни команды
а вывести данные в ТабДок запрос ни как не может, для этого по любому нужны другие команды
они у вас уже есть (вывод строк) по такому же подобию делайте вывод и другой информации.
если помогло нажмите: Спасибо!

Dmitrii_VVV

Цитата: Максим75 от 23 авг 2023, 17:28Dmitrii_VVV, в запросе все в кучу, кони, люди, мечи, секиры и топоры. просто жуть.

У меня очень устойчивое впечатление, что уже такое недавно было.
Выкладываю примерный код:


Благодарю, у Вас правильное впечатление, это уже было)

Пробую реализовать...

Теги:

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

Рейтинг@Mail.ru

Поиск