Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > 1C: Предприятие, SAP, ERP и учётные системы > Проблема с запросом


Автор: max1985 18.11.2007, 08:59

Здравствуйте!
Как модифицировать запрос таким образом, чтобы он производил выборку  данных только из текущего документа.

Код

Запрос=Новый Запрос;
Запрос.Текст=
"ВЫБРАТЬ
|    СУММА(Стат.Мат) КАК Вид,//повторяется в строках
|    СУММА(Стат.Кол) КАК Кол
|        
|ИЗ
|    Документ.СтатМ.Стат КАК Стат
|        СГРУППИРОВАТЬ ПО
|    Стат.Мат,
|    Стат.Кол
|    
| ИТОГИ СУММА(Кол) ПО Вид";//промежуточные итоги по Вид
Результат=Запрос.Выполнить();
ТабРез=Результат.Выгрузить() ;
СтатМат.Загрузить(ТабРез);


Автор: konstantin84 18.11.2007, 10:44
Как я понимаю, запрос выполняется в форме или модуле текущего документа. Достаточно поставить условие типа:
"ГДЕ
|    СтатМ.Ссылка = &Ссылка"


И перед выполнением запроса установить параметр:

Запрос.УстановитьПараметры("Ссылка", Ссылка);

Автор: max1985 19.11.2007, 11:00
Спасибо

Автор: Norv 10.12.2007, 11:58
Тоже проблема с запросом. 

Из самоучителя вот этот пример взял.
 
Пытаюсь запрограммировать.
 
 
ПРОБЛЕМА ТАКАЯ:
 
Формирует многострочный отчет с двумя колонками: Выручка и Услуга
Но если колонка Услуга заполнена, то Выручка нет.
А должны стоять суммы согласно оказанных услуг.
 
В чем тут дело? Самостоятельно не получилось решить. Помогите, плиз.
 
Вот сам код:
 
Код

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

Автор: stil 12.12.2007, 15:22
Попробуй ИТОГИ по Номенклатура (если я правильно поняла проблему)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)