|
Помогите разобраться с соединением в запросе | ☑ | ||
---|---|---|---|---|
0
Конфигуратор1с
27.09.11
✎
16:02
|
Есть Регистр сведений - измерение Склад и номенклатура, ресурс - статус(перечисление). Есть такая таблица значений с такой же структурой. В пакетном запросе выбираю все записи из таблицы значений, далее мне нужно получить все записи из таблицы у которых отличны значения статуса от регистра или такой записи в регистре нет. Написал такой текст - выводит все записи из таблицы.
Запрос = Новый Запрос; Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц; Запрос.УстановитьПараметр("Склад",СкладОтбора); Запрос.УстановитьПараметр("ВнешнийИсточник",ТаблицаДляЗапроса); Запрос.Текст = "ВЫБРАТЬ | ВнешнийИсточник.Номенклатура, | ВнешнийИсточник.КатегорияАВС, | ВнешнийИсточник.Склад |ПОМЕСТИТЬ ВТ |ИЗ | &ВнешнийИсточник КАК ВнешнийИсточник"; //|ГДЕ //| ВнешнийИсточник.Номенклатура.ЭтоГруппа = ЛОЖЬ //| И ВнешнийИсточник.КатегорияАВС <> ЗНАЧЕНИЕ(Перечисление.КатегорииАВС.ПустаяСсылка)"; Запрос.Выполнить(); Запрос.Текст = "ВЫБРАТЬ | ВТ.КатегорияАВС, | ВТ.Номенклатура |ИЗ | ВТ КАК ВТ | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КатегорииАВСНоменклатуры КАК КатегорииАВСНоменклатуры | ПО ВТ.Номенклатура = КатегорииАВСНоменклатуры.Номенклатура | И ВТ.Склад = КатегорииАВСНоменклатуры.Склад | И ВТ.КатегорияАВС <> КатегорииАВСНоменклатуры.КатегорияАВС"; |
|||
1
shuhard
27.09.11
✎
16:02
|
(0)ЛЕВОЕ СОЕДИНЕНИЕ
не а, зачем левое |
|||
2
butterbean
27.09.11
✎
16:04
|
И ВТ.КатегорияАВС = КатегорииАВСНоменклатуры.КатегорияАВС
ГДЕ КатегорииАВСНоменклатуры.Номенклатура ЕСТЬ NULL |
|||
3
catena
27.09.11
✎
16:07
|
(2)Ему ж надо где не равно и где пусто.
(0)Регистр не периодический случайно? |
|||
4
Конфигуратор1с
27.09.11
✎
16:13
|
(3) нет. Независимый, непериодический
|
|||
5
Жан Пердежон
27.09.11
✎
16:14
|
(0) так левое соединение для того и предназначено, чтобы выбрать все записи из одной таблицы+некоторые из другой
|
|||
6
Конфигуратор1с
27.09.11
✎
16:14
|
(5) хорошо, какое тогда?
|
|||
7
Жан Пердежон
27.09.11
✎
16:17
|
полное и условия в где
|
|||
8
butterbean
27.09.11
✎
16:17
|
(6) ты сделал как в (2)??
|
|||
9
Конфигуратор1с
27.09.11
✎
16:18
|
(8) мне нужно где не равны категории и пустые значения
|
|||
10
butterbean
27.09.11
✎
16:18
|
(9) это как раз (2)
|
|||
11
Жан Пердежон
27.09.11
✎
16:20
|
кстати, (2) тоже вроде подойдет
|
|||
12
Конфигуратор1с
27.09.11
✎
16:26
|
ВЫБРАТЬ
| ВТ.КатегорияАВС, | ВТ.Номенклатура |ИЗ | ВТ КАК ВТ | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КатегорииАВСНоменклатуры КАК КатегорииАВСНоменклатуры | ПО ВТ.Номенклатура = КатегорииАВСНоменклатуры.Номенклатура | И ВТ.Склад = КатегорииАВСНоменклатуры.Склад | И ВТ.КатегорияАВС = КатегорииАВСНоменклатуры.КатегорияАВС ГДЕ КатегорииАВСНоменклатуры.Номенклатура ЕСТЬ NULL ===так? |
|||
13
butterbean
27.09.11
✎
16:27
|
да, проверил бы уже давно
|
|||
14
Конфигуратор1с
27.09.11
✎
16:29
|
так проверил - вытягивает все записи таблицы
|
|||
15
Конфигуратор1с
27.09.11
✎
16:31
|
точнее через раз - первый раз формирую - пустой. второй раз формирую - все записи
|
|||
16
Конфигуратор1с
27.09.11
✎
16:34
|
Я выбираю записи запросом вывожу в таблицу. Дальше пользователи их правят, Сравнить какие изменились и только их записать в регистр. Не получается отобрать измененные(((
|
|||
17
Конфигуратор1с
27.09.11
✎
17:14
|
получилось так
Запрос.Текст = "ВЫБРАТЬ | Вложенный.Номенклатура, | Вложенный.КатегорияАВС, | Вложенный.Склад, | Вложенный.КатегорияАВС1 |ИЗ | (ВЫБРАТЬ | ВТ.КатегорияАВС КАК КатегорияАВС, | ВТ.Номенклатура КАК Номенклатура, | ЕСТЬNULL(КатегорииАВСНоменклатуры.КатегорияАВС, ЗНАЧЕНИЕ(Перечисление.КатегорииАВС.ПУстаяССылка)) КАК КатегорияАВС1, | ВТ.Склад КАК Склад | ИЗ | ВТ КАК ВТ | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КатегорииАВСНоменклатуры КАК КатегорииАВСНоменклатуры | ПО ВТ.Номенклатура = КатегорииАВСНоменклатуры.Номенклатура | И ВТ.Склад = КатегорииАВСНоменклатуры.Склад) КАК Вложенный |ГДЕ | Вложенный.КатегорияАВС <> Вложенный.КатегорияАВС1"; |
|||
18
Жан Пердежон
27.09.11
✎
17:22
|
(16) а просто набор записей регистра с отбором вывести не судьба?
|
|||
19
Конфигуратор1с
27.09.11
✎
17:26
|
нет. Так как я категорию вывожу запросом по алгоритму в зависимости от объема продаж. Далее пользователи корректируют ее, в случае необходимости и записываем в регистр сведений для текущей работы с документами.
|
|||
20
Конфигуратор1с
27.09.11
✎
17:26
|
Теперь как это все в регистр впихнуть красиво?
|
|||
21
БибиГон
27.09.11
✎
17:32
|
(20) Впихнул в регистр? Тоже интересно.
|
|||
22
Конфигуратор1с
27.09.11
✎
17:39
|
НаборЗаписей = РегистрыСведений.КатегорииАВСНоменклатуры.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Склад.Установить(СкладОтбора); НаборЗаписей.Прочитать(); В таком случае я отбираю все записи с данным складом. Получается, я не могу просто добавить записи, так как в случае существования записи с одинаковой номенклатурой он ругается, в то же время не могу задать отбор по списку номенклатуры. Получается нужно отбирать для каждой строки из результирующей таблицы? |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |