8.х Печатная форма с запросом из регистра

Тема в разделе "Общие вопросы "1С:Предприятие 8"", создана пользователем Sova123, 29 фев 2008.

  1. TopicStarter Overlay
    Sova123
    Offline

    Sova123

    Регистрация:
    24 фев 2008
    Сообщения:
    42
    Симпатии:
    0
    Баллы:
    1
    Создаю печатную форму, нужно подсчитать сумму стоимсоти, комиссии.

    Суммаперечисление

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


    Если делать так

    СуММА(Стоимость) как ИтогСт,

    Область.Параметры.СуммСт = Запрос.ИтогСт;

    то выдается ошибка
    {Документ.ОтчетАгента.Форма.ФормаДокумента(75)}: Ошибка при вызове метода контекста (Выполнить): {(17, 2)}: Невозможно определить поле для записи результата

    <<?>>СУММА(Стоимость) как ИтогСт,
    Запрос= Запрос.Выполнить().Выгрузить();
    по причине:
    {(17, 2)}: Невозможно определить поле для записи результата
    <<?>>СУММА(Стоимость) как ИтогСт,

    Или как-тоо по-другому можено найти сумму?

    Используйте тэг
    Код:
    [/color]
  2. Эмин
    Offline

    Эмин Руководитель проектов

    Регистрация:
    25 май 2007
    Сообщения:
    1.178
    Симпатии:
    1
    Баллы:
    26
    Не напрягайтесь так с запросом, вам нужно или использовать Итоги или сделать так:


    Код:
    
    НакопленнаяСумма = 0;
    
    Область = Макет.ПолучитьОбласть("ТурпродуктШапка");    ТабДок.Вывести(Область);        
    Для Каждого ТекСтрокаТурпродукт Из Запрос Цикл
    Область = Макет.ПолучитьОбласть("Турпродукт");
    Область.Параметры.Стоимость = ТекСтрокаТурпродукт.Стоимость;
    
    НакопленнаяСумма = НакопленнаяСумма + ТекСтрокаТурпродукт.Стоимость;
    // Здесь ваш остальной код
    КонецЦикла;  
    
    // Теперь в переменной НакопленнаяСтоимость - итоговая сумма
    // Выводите ее в макете где надо
    
    
    Либо можете поиграться с запросом. Но тогда выборку надо осуществлять по группировкам, а вы же выгружаете в таблицу значений еще и не очень красиво делаете это - лучше назовите переменную как-нибудт хотя бы ТЗ или ТаблицаЗначений. А то сам же Запрос и переприсваиваете.

    Код:
    Запрос= Запрос.Выполнить().Выгрузить();
    

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