Имя: Пароль:
1C
 
Соединения таблиц в запросе
,
0 Альбатрос
 
30.12.15
10:06
Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    ПартииТоваровНаСкладахВрезервеОбороты.Регистратор КАК Резерв,
                   |    ПартииТоваровНаСкладахВрезервеОбороты.Склад,
                   |    ПартииТоваровНаСкладахВрезервеОбороты.Партия,
                   |    1 КАК Отм,
                   |    РезервированиеТоваров.Ссылка КАК СнятиеСРезерва
                   |ИЗ
                   |    РегистрНакопления.ПартииТоваровНаСкладахВрезерве.Обороты(
                   |            &НачДата,
                   |            &КонДата,
                   |            Регистратор,
                   |            Организация = &Организация
                   |                И ВидРезервирования = &ВидРезервирования) КАК ПартииТоваровНаСкладахВрезервеОбороты
                   |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.РезервированиеТоваров КАК РезервированиеТоваров
                   |        ПО ПартииТоваровНаСкладахВрезервеОбороты.Партия = РезервированиеТоваров.Партия
                   |            И ПартииТоваровНаСкладахВрезервеОбороты.Склад = РезервированиеТоваров.Склад
                   |            И ПартииТоваровНаСкладахВрезервеОбороты.Организация = РезервированиеТоваров.Организация
                   |            И ПартииТоваровНаСкладахВрезервеОбороты.ВидРезервирования = РезервированиеТоваров.ВидРезервирования
                   |            И (РезервированиеТоваров.Проведен)
                   |            И (РезервированиеТоваров.ВидОперации = &ВидОперацииСнятиеСРезерва)
                   |            И (ПартииТоваровНаСкладахВрезервеОбороты.Регистратор.ВидОперации = &ВидОперацииРезервирование)
                   |";

Не срабатывает последнее условие. Выводит документы со всеми видами операций. Почему?
1 Альбатрос
 
30.12.15
10:08
Запрос.УстановитьПараметр("НачДата", Новый Граница(НачалоДня(?(ЗначениеЗаполнено(НачПериода), НачПериода, '00010101')), ВидГраницы.Включая)) ;
    Запрос.УстановитьПараметр("КонДата", Новый Граница(КонецДня(?(ЗначениеЗаполнено(КонПериода), КонПериода, ТекущаяДата())),ВидГраницы.Включая)) ;
    Запрос.УстановитьПараметр("Организация", ОрганизацияРазБлокировки);
    Запрос.УстановитьПараметр("ВидРезервирования", ВидРезервированияРазблокировки);
    Запрос.УстановитьПараметр("ВидОперацииСнятиеСРезерва"      , Перечисления.ВидыОперацийРезервированиеТоваров.СнятиеРезерва);
    Запрос.УстановитьПараметр("ВидОперацииРезервирование"      , Перечисления.ВидыОперацийРезервированиеТоваров.Резервирование);
    Результат = Запрос.Выполнить();
2 Stim
 
30.12.15
10:08
>>ПартииТоваровНаСкладахВрезервеОбороты.Регистратор.ВидОперации
3 Альбатрос
 
30.12.15
10:09
(2) Ага, что с ним не так?
4 rabbidX
 
30.12.15
10:10
А что удивляет? Поле снятие с резерва для остальных доков не заполняется же?
5 Альбатрос
 
30.12.15
10:11
(4) Там один вид документа учавствует. Для всех все заполнено.
6 rabbidX
 
30.12.15
10:11
Может, отбор по виду операции в условиях подразумевался?
7 mpei
 
30.12.15
10:12
И (ПартииТоваровНаСкладахВрезервеОбороты.Партия.ВидОперации = &ВидОперацииРезервирование) Может так?
8 Альбатрос
 
30.12.15
10:14
Поясню: Есть документ РезервированиеТовара с 2-мя видами операций: Резервирование и снятиеРезерва. Двигают регситр ПартииТоваровНаСкладахВрезерве.
Я хочу выбрать за период из регистра все документы с видом операции Резервирование и попытаться получить к нему документ с видом операции снятиеРезерва.
9 Альбатрос
 
30.12.15
10:15
(7) Нее... это реквизит документа.
10 Альбатрос
 
30.12.15
10:16
+ (8) По результату запроса из (0) в резерв попадают документы с обоими видами операций.
11 Альбатрос
 
30.12.15
10:16
+(10) в поле резерв.
12 mpei
 
30.12.15
10:17
А зачем ты отбор через параметр делаешь?Через перечисления нельзя?
13 Альбатрос
 
30.12.15
10:17
ВОт так тоже не работает:

|            И (ПартииТоваровНаСкладахВрезервеОбороты.КоличествоОборот > 0)";
14 Альбатрос
 
30.12.15
10:17
(12) Можно. Суть это поменяет?
15 mpei
 
30.12.15
10:19
попробуй.Если последнее условие убрать запрос не пустой?
16 Альбатрос
 
30.12.15
10:20
(15) Не пустой. По сути такой же, как и с условием, только сортировка почему-то не такая...
17 rabbidX
 
30.12.15
10:22
Отбор только по виду резервирования в регистре, а нужно по виду операции в регистраторе. Нужно условие прописать.
18 Альбатрос
 
30.12.15
10:24
(17) А это не превратит мое левое соединение во внутреннее?
19 Альбатрос
 
30.12.15
10:31
(17) Не превратило =)))
Я чот путаю? Помнится, была такая фишка, что использование конструкции "ГДЕ" при соединении таблиц трансформирует это соединение во внутреннее, не?
20 rabbidX
 
30.12.15
10:33
(19) Это если на правую таблицу условия накладывать.
21 Альбатрос
 
30.12.15
10:33
(20) Точняк! Спасибо!
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.