Имя: Пароль:
1C
1С v8
Помогите с запросом
0 Andy_Man
 
14.06.12
14:33
Запрос = новый Запрос;
   Запрос.Текст = "ВЫБРАТЬ
                  |    ЕстьNULL(ТоварыОрганизацийОстатки.КоличествоОстаток,0) КАК ОстатокОрг,
                  |    ПартииТоваровНаСкладахОстатки.КоличествоОстаток КАК ОстатокПар,
                  |    ТоварыОрганизацийОстатки.Номенклатура,
                  |    ТоварыОрганизацийОстатки.ХарактеристикаНоменклатуры,
                  |    ТоварыОрганизацийОстатки.СерияНоменклатуры,
                  |    ТоварыОрганизацийОстатки.Качество,
                  |    ПартииТоваровНаСкладахОстатки.СтоимостьОстаток КАК Стоимость,
                  |    ЕстьNULL(ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток,0) КАК ОстатокРез
                  |ИЗ
                  |    РегистрНакопления.ТоварыОрганизаций.Остатки(
                  |            &ДатаОстатков,
                  |            &УсловиеОрг
                  |                И &УсловиеСклад) КАК ТоварыОрганизацийОстатки
                  |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладах.Остатки(&ДатаОстатков, &УсловиеОрг) КАК ПартииТоваровНаСкладахОстатки
                  |        ПО ТоварыОрганизацийОстатки.Номенклатура = ПартииТоваровНаСкладахОстатки.Номенклатура
                  |            И ТоварыОрганизацийОстатки.ХарактеристикаНоменклатуры = ПартииТоваровНаСкладахОстатки.ХарактеристикаНоменклатуры
                  |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&ДатаОстатков, &УсловиеСклад) КАК ТоварыВРезервеНаСкладахОстатки
                  |        ПО ТоварыОрганизацийОстатки.Номенклатура = ТоварыВРезервеНаСкладахОстатки.Номенклатура
                  |            И ТоварыОрганизацийОстатки.ХарактеристикаНоменклатуры = ТоварыВРезервеНаСкладахОстатки.ХарактеристикаНоменклатуры
                  |ГДЕ
                  |    ТоварыОрганизацийОстатки.КоличествоОстаток > 0
                  |    И ТоварыВРезервеНаСкладахОстатки.ДокументРезерва.Номер В(&МассивСделок)
                  |    И ТоварыВРезервеНаСкладахОстатки.ДокументРезерва.Организация = &Организация";
                 
   Если ЗначениеЗаполнено(ДатаОстатков) тогда              
       Запрос.УстановитьПараметр("ДатаОстатков",ДатаОстатков);
   Иначе
       Запрос.УстановитьПараметр("ДатаОстатков",ТекущаяДата());
   КонецЕсли;
                 
   Если НЕ ЗначениеЗаполнено(Склад) тогда
       Запрос.Текст=СтрЗаменить(Запрос.Текст, "&УсловиеСклад", "ИСТИНА");
   Иначе
       Запрос.Текст=СтрЗаменить(Запрос.Текст, "&УсловиеСклад", "(Склад = (&Склад))");
       Запрос.Параметры.Вставить("Склад",Склад);
   КонецЕсли;

   Если НЕ ЗначениеЗаполнено(Организация) тогда
       Запрос.Текст=СтрЗаменить(Запрос.Текст, "&УсловиеОрг", "ИСТИНА");
   Иначе
       Запрос.Текст=СтрЗаменить(Запрос.Текст, "&УсловиеОрг", "(Организация = (&Организация))");
       Запрос.Параметры.Вставить("Организация",Организация);
   КонецЕсли;
   
   Запрос.УстановитьПараметр("МассивСделок",МассивСделок);


Запрос почему то выбирает не все остатки ( . Не пойму почему?
1 butterbean
 
14.06.12
14:34
(0) у тебя же 100500 отборов, конечно будут не все остатки
2 Coldboy
 
14.06.12
14:37
Запрос.Текст=СтрЗаменить(Запрос.Текст, "&УсловиеСклад", "ИСТИНА");
 Запрос.Текст=СтрЗаменить(Запрос.Текст, "&УсловиеОрг", "ИСТИНА");

что это такое, если нет организации то брать по всем, вроде бы просто "" должно быть, мое ИМХО, у меня лично так конструктор дает.
3 Andy_Man
 
14.06.12
14:38
Мне надо выбрать все остатки за минусом резервов по некоторому списку заказов.
4 Andy_Man
 
14.06.12
14:47
(2) поподробней можно?
5 Ololoshka
 
14.06.12
15:36
(2)он имеет ввиду попробовать написать так:
Запрос.Текст=СтрЗаменить(Запрос.Текст, "&УсловиеСклад", "");
Запрос.Текст=СтрЗаменить(Запрос.Текст, "&УсловиеОрг", "");
6 Buster007
 
14.06.12
15:39
(0) не слушай их (2)(5)
7 cViper
 
14.06.12
15:40
(0) ГДЕ
                  |    ТоварыОрганизацийОстатки.КоличествоОстаток > 0
                  |    И ТоварыВРезервеНаСкладахОстатки.ДокументРезерва.Номер В(&МассивСделок)
                  |    И ТоварыВРезервеНаСкладахОстатки.ДокументРезерва.Организация = &Организация";

Вот это в параметры виртуальной таблицы кинь.
8 Buster007
 
14.06.12
15:41
у тебя из-за                 |    И ТоварыВРезервеНаСкладахОстатки.ДокументРезерва.Номер В(&МассивСделок)
                  |    И ТоварыВРезервеНаСкладахОстатки.ДокументРезерва.Организация = &Организация";
внутреннее соединение получается
9 cViper
 
14.06.12
15:48
(0) Почему по серии не соединяешь?
(8) Все правильно написал.
10 Buster007
 
14.06.12
15:50
(9) окау
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс