Имя: Пароль:
1C
1С v8
Вложенный запрос
0 il
 
05.12.12
01:28
Есть справочник, есть регистр остатков в котором для него указаны остатки. Как сделать сложный запрос, в котором будут выбираться все элементы, за исключением, тех, для которых остаток меньше определенного значения. Данный запрос берет только те у которых значение больше 0 (и которые есть в регистре)
   ТекстЗапроса = "ВЫБРАТЬ
                  |    СпрВопросы.Владелец КАК ОбъектТестирования,
                  |    СпрВопросы.ДатаТеста КАК ДатаТеста,
                  |    СпрВопросы.Вопрос КАК Вопрос,
                  |    СпрВопросы.Ответ1,
                  |    СпрВопросы.Ответ2,
                  |    СпрВопросы.Ответ3,
                  |    СпрВопросы.Ответ4,
                  |    СпрВопросы.Ответ5,
                  |    СпрВопросы.Ответ6,
                  |    СпрВопросы.ПравильныйВариантОтвета,
                  |    СпрВопросы.Код,
                  |    СпрВопросы.Картинка,
                  |    СпрВопросы.Раздел
                  |ИЗ
                  | Справочник.Вопросы КАК СпрВопросы
                  | ПРАВОЕ СОЕДИНЕНИЕ
                  |(ВЫБРАТЬ
                  |     РезультатытестированияВопросы.Вопрос,
                  |     РезультатытестированияВопросы.Пользователь КАК Пользователь,
                  |     РезультатытестированияВопросы.КоличествоОтветовОстаток КАК Кол
                  |   ИЗ
                  |     РегистрНАкопления.Результатытестирования.Остатки(&ДатаОтчета,)
                  |     КАК РезультатытестированияВопросы
                  |   ГДЕ
                  |     Пользователь=&ТекПользователь
                  |     И РезультатытестированияВопросы.КоличествоОтветовОстаток<=0
                  |) КАК Рег
                  |ПО  СпрВопросы.Вопрос=Рег.Вопрос
                  |ГДЕ
                  |    СпрВопросы.Владелец = &ОбъектТестирования
                  |    И СпрВопросы.ДатаТеста МЕЖДУ &ДатаНач И &ДатаКон
                  |    И СпрВопросы.ПометкаУдаления = ЛОЖЬ";
1 il
 
05.12.12
01:29
вернее меньше 1
2 БАМБР2013
 
05.12.12
01:33
никак
3 БАМБР2013
 
05.12.12
01:34
кури ИМЕЮЩИЕ
4 БАМБР2013
 
05.12.12
01:36
пипец, стаж на мисте 7 лет и такой глюпый вопрос
5 il
 
05.12.12
01:36
7 всю дорогу занимаюсь не бейте больно
6 БАМБР2013
 
05.12.12
01:37
(0) 7 лет играл в танчики, а тут вспомнил, что надо поработать?
7 БАМБР2013
 
05.12.12
01:38
(5) На фига ты со справочником соединяешься, если тебе нужны чисто остатки?
8 Smallrat
 
05.12.12
01:40
я что-то не понял:
1) написано "Данный запрос берет только те у которых значение больше 0 (и которые есть в регистре), вернее меньше 1" - в запросе написано: "ГДЕ РезультатытестированияВопросы.КоличествоОтветовОстаток<=0"
2) "в котором будут выбираться все элементы, за исключением, тех, для которых остаток меньше определенного значения"
значит нужны элементы для которых есть остаток больше определенного значения ?
вроде бы уже все написано, только надо исправить "ГДЕ КоличествоОтветовОстаток<=0" на "ГДЕ КоличествоОтветовОстаток>&НужноеЗначение"
3) ПРАВОЕ СОЕДИНЕНИЕ..........
9 БАМБР2013
 
05.12.12
01:44
(8) > вроде бы уже все написано, только надо исправить "ГДЕ КоличествоОтветовОстаток<=0" на "ГДЕ

Ты всегда в виртуальной таблице остатка сравниваешь остаток по условию ГДЕ?
10 il
 
05.12.12
01:45
(7) мне не нужны число остатки, сначала сделал запрос, потом понял, что он не пойдет, т.к. те элемены которые вообще в регистре не учавствуют в него не попадают, а нужно как бы исключить то, что в правом соединении
(8) немного напутал, нужны все элемены справочника кроме тех что дает второй подзапрос
11 БАМБР2013
 
05.12.12
01:47
(10) ВНУТРЕННЕЕ СОЕДИНЕНИЕ
12 Smallrat
 
05.12.12
01:52
(9) а что тут криминального ? где его сравнивать ?
(10) ПРАВОЕ СОЕДИНЕНИЕ поменять на ЛЕВОЕ
и в конце условие ГДЕ Рег.Кол ЕСТЬ NULL
правда я уже сплю почти, поэтому голова плохо думает.
13 il
 
05.12.12
01:58
Да действительно вопрос на редкость тупой, нужно было Левое соединение, всем спасибо.
AdBlock убивает бесплатный контент. 1Сергей