Имя: Пароль:
1C
1С v8
Установить отбор
,
0 fanatic1
 
22.08.13
11:48
Ребята есть запрос Построенный в СКД, вывожу его в Табличный документ... как мне установить отбор по Номенклатуре....
Мне нужно видеть и весь результат и Отдельно по каждой номенклатуре либо в группе...
Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
Не подходит, т.к. обязательно нужно вводить Номенклатуру...
1 Wobland
 
22.08.13
11:49
чо?
2 Андрюха
 
22.08.13
11:49
(1) +1
3 fanatic1
 
22.08.13
11:53
Есть запрос
&НаСервере
Функция СформироватьТабДокумент()
    
     Запрос = Новый Запрос;
     Запрос.Текст =
     "ВЫБРАТЬ
     |    РеализацияТоваровУслугТовары.Ссылка КАК Реализация,
     |    РеализацияТоваровУслугТовары.Номенклатура КАК Номенклатура,
     |    РеализацияТоваровУслугТовары.Количество КАК Количество,
     |    РеализацияТоваровУслугТовары.хлысты,
     |    РеализацияТоваровУслугТовары.Коэффициент,
     |    РеализацияТоваровУслугТовары.Характеристика
     |ИЗ
     |    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
     |ГДЕ
     |    РеализацияТоваровУслугТовары.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
     |    И РеализацияТоваровУслугТовары.хлысты <> 0
     |
     |СГРУППИРОВАТЬ ПО
     |    РеализацияТоваровУслугТовары.Количество,
     |    РеализацияТоваровУслугТовары.Ссылка,
     |    РеализацияТоваровУслугТовары.Номенклатура,
     |    РеализацияТоваровУслугТовары.хлысты,
     |    РеализацияТоваровУслугТовары.Коэффициент,
     |    РеализацияТоваровУслугТовары.Характеристика";
    // |    И РеализацияТоваровУслугТовары.Номенклатура В ИЕРАРХИИ(&Номенклатура)";
     ДатаНачала = ПериодОтчета.ДатаНачала;
     ДатаОкончания = ПериодОтчета.ДатаОкончания;
     //Номенклатура = Номенклатура;
         Табло=Новый ТабличныйДокумент;

        
    
     Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала);
     Запрос.УстановитьПараметр("ДатаОкончания", ДатаОкончания);
          //Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
     табРезультат = Запрос.Выполнить().Выгрузить();
     табРезультат.Колонки.Добавить("Разница");
     Для Каждого СтрокаТаб Из табРезультат Цикл
         Если Не СтрокаТаб.Количество = ВернутьДлинуПоСтроке(СтрокаТаб.Характеристика)*СтрокаТаб.Коэффициент*СтрокаТаб.хлысты Тогда
              СтрокаТаб.Разница =  СтрокаТаб.Количество -  (ВернутьДлинуПоСтроке(СтрокаТаб.Характеристика)*СтрокаТаб.Коэффициент*СтрокаТаб.хлысты)/1000;
            //Сообщить(СтрокаТаб.Ссылка);
            
         КонецЕсли;
     КонецЦикла;
      

            
    
    Построитель=Новый ПостроительОтчета;
    Построитель.ИсточникДанных=Новый ОписаниеИсточникаДанных(ТабРезультат);
    Построитель.Вывести(Табло);
    Табло.Показать();
        
    
    
    КонецФункции


мне нужно установить отбор по номенклатуре, что бы в Табличный документ выводились не все документы, а лишь по определенной номенклатуре
4 Wobland
 
22.08.13
11:55
(3) ну.. хлысты ты же как-то сумел отфильтровать
5 Андрюха
 
22.08.13
11:56
ГДЕ
РеализацияТоваровУслугТовары.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
И РеализацияТоваровУслугТовары.хлысты <> 0
И РеализацияТоваровУслугТовары.Номенклатура В ИЕРАРХИИ(&Номенклатура)
6 fanatic1
 
22.08.13
12:01
неа.... если Вписать
И РеализацияТоваровУслугТовары.хлысты <> 0
РеализацияТоваровУслугТовары.Номенклатура В ИЕРАРХИИ(&Номенклатура)
ТО он меня обязывает выбрать Номенклатуру, а как быть если я хочу все увидеть??? либо группу номенклатуры???
7 Андрюха
 
22.08.13
12:02
Если хочешь всё, то не пиши это условие, если группу - то указывай конкретную группу.
8 lebar
 
22.08.13
12:02
(0) ты точно СКД используешь?
Если да, то в запросе можно не задавать ничего. Потом в списке выводи весь результат, также создай еще список в котором наложишь отбор необходимый и будет тебе счастье в двух списках (таблицах) с произвольным отбором
9 fanatic1
 
22.08.13
12:03
Если хочешь всё, то не пиши это условие, если группу - то указывай конкретную группу.

По подробнее????  яж не знаю Как у меня руководство захочет смотреть....
10 fanatic1
 
22.08.13
12:03
Если да, то в запросе можно не задавать ничего. Потом в списке выводи весь результат, также создай еще список в котором наложишь отбор необходимый и будет тебе счастье в двух списках (таблицах) с произвольным отбором

Это как?
11 Wobland
 
22.08.13
12:04
(6) дело в том, что язык запросов - это узкоспециализированный язык программирования. необходимо чётко и формально описать свои желания на нём. тебе придётся отказаться от таких вот потоков мысли и научиться излагать связно, для начала хотя бы по-человечески
12 Андрюха
 
22.08.13
12:06
(9) Если Номенклатура <> Справочники.Номенклатура.ПустаяСсылка() Тогда
ТекстЗапроса = ТекстЗапроса + "И РеализацияТоваровУслугТовары.Номенклатура В ИЕРАРХИИ(&Номенклатура)";
КонецЕсли;
13 fanatic1
 
22.08.13
12:08
Хорошо убедили, как мне указать отбор по группе
Запрос.УстановитьПараметр("Номенклатура", Номенклатура);
Это по одной позиции, а как по Группе можно задать?
14 Wobland
 
22.08.13
12:08
(13) неужели в иерархии?
15 Андрюха
 
22.08.13
12:08
(13) Так же
16 Wobland
 
22.08.13
12:09
(12) если не номенклатура.пустая()
17 Андрюха
 
22.08.13
12:10
или так
18 fanatic1
 
22.08.13
12:12
Ставлю
ГДЕ
     |    РеализацияТоваровУслугТовары.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
     |    И РеализацияТоваровУслугТовары.хлысты <> 0
     |    И РеализацияТоваровУслугТовары.Номенклатура В ИЕРАРХИИ(&Номенклатура)

не выводит в Иерархии(((
19 Андрюха
 
22.08.13
12:16
(18) Параметр запроса Номенклатура устанавливаешь?
20 lebar
 
22.08.13
12:33
Эх... Зачем в СКД задавать параметры в запросе и вообще париться с отбором на уровне запроса, если нужно получить результат как с отбором так и без отбора?
Получаем результат весь (отбор в запросе нигде не задаем, ни в параметрах ни в условии), а отбор, если он нужен, делается в настройках (в случае если надо одновременно 2 таблицы: и всю и с отбором, то отбор устанавливается только на той таблице где надо).
21 lebar
 
22.08.13
13:07
И если охота сократить время формирования отчета путем установки отбора в запросе, то это делается на вкладке "Компановка данных" в запросе. Тогда если заполнен данный параметр отбора, то отбор работает, иначе выбирается все без отбора.
22 fanatic1
 
22.08.13
13:14
ясно!..по все равно не понял как выбирать Группу Номенклатуры ??
23 lebar
 
22.08.13
13:17
(22) Если тебе надо выбрать именно:
* номенклатурную группу - тогда Номенклатура.НоменклатурнаяГруппа = ХХХ
* папку в которой лежит номенклатура - тогда Номенклатура В ПапкаНоменклатуры
24 lebar
 
22.08.13
13:23
(23) Это как в настройках выбирать, если ты спрашиваешь как в запросе прописать такое условие, то

...
{ГДЕ
    (РеализацияТоваровУслугТовары.хлысты <> 0),
    (РеализацияТоваровУслугТовары.Номенклатура В ИЕРАРХИИ(&ГруппаНоменклатуры)
}
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.