|
Получить номенклатуру не входящую в ТЗ | ☑ | ||
---|---|---|---|---|
0
Emilio
03.10.15
✎
08:05
|
Доброго всем утра!
Я как всегда сюда за подсказкой мозг совсем уж не желает работать( Ситуация следующая: есть ТЗ а в ней номенклатура и характеристика. Нужно выбрать номенклатуру с характеристикой из базы, которых нет в это ТЗ. Проблема заключается в том, что в ТЗ может быть порядка 10000 строк, а характеристик в базе больше 15000, потому любой запрос с временной таблицей отлетает за невозможностью использования. Может кто-то когда-то где-то сталкивался с ситуацией. Я делал через запрос с временной таблицей одинесина падала в ошибку о недостаточности памяти. |
|||
1
Emilio
03.10.15
✎
08:06
|
вот так у меня не получилось:
Запрос = Новый Запрос; Запрос.Текст = ("ВЫБРАТЬ | тзСписать.Номенклатура, | тзСписать.Характеристика |ПОМЕСТИТЬ тзСписать |ИЗ | &тзСписать КАК тзСписать |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ХарактеристикиНоменклатуры.Владелец.Ссылка, | ХарактеристикиНоменклатуры.Ссылка КАК ХарактеристикиНоменклатуры |ИЗ | тзСписать КАК тзСписать | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры | ПО тзСписать.Характеристика <> ХарактеристикиНоменклатуры.Ссылка |ГДЕ | ТИПЗНАЧЕНИЯ(ХарактеристикиНоменклатуры.Владелец) = ТИП(Справочник.Номенклатура)"); Запрос.УстановитьПараметр("тзСписать", тзДляСписания); |
|||
2
jsmith82
03.10.15
✎
08:10
|
Я бы вторую ВТ добавил по условию
ГДЕ ТИПЗНАЧЕНИЯ(ХарактеристикиНоменклатуры.Владелец) = ТИП(Справочник.Номенклатура) |
|||
3
jsmith82
03.10.15
✎
08:12
|
У тебя условие неправильное
|
|||
4
jsmith82
03.10.15
✎
08:12
|
ТЗСписать ЛЕВОЕ ПО <> как раз и будет множить строки
В итоге у тебя таблица разрастается до астрономических масштабов |
|||
5
jsmith82
03.10.15
✎
08:17
|
ВЫБРАТЬ
тзСписать.Номенклатура, тзСписать.Характеристика ПОМЕСТИТЬ тзСписать ИЗ &тзСписать КАК тзСписать ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ХарактеристикиНоменклатуры.Ссылка КАК Характеристика ИЗ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры ПОМЕСТИТЬ тзХарактеристики ГДЕ ТИПЗНАЧЕНИЯ(ХарактеристикиНоменклатуры.Владелец) = ТИП(Справочник.Номенклатура) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Характеристики.Характеристика.Владелец КАК Номенклатура, Характеристики.Характеристика КАК Характеристика ИЗ тзХарактеристики КАК тзХарактеристики ЛЕВОЕ СОЕДИНЕНИЕ тзСписать КАК тзСписать ПО тзХарактеристики.Характеристика = тзСписать.Характеристика ГДЕ тзСписать.Характеристика = NULL |
|||
6
PuhUfa
03.10.15
✎
08:43
|
Почему не просто?
ВЫБРАТЬ ХарактеристикиНоменклатуры.Ссылка, ХарактеристикиНоменклатуры.Владелец ИЗ Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры ГДЕ НЕ ХарактеристикиНоменклатуры.Ссылка В (&тзСписать) |
|||
7
PuhUfa
03.10.15
✎
08:44
|
в тзСписать характиристики
|
|||
8
Emilio
03.10.15
✎
11:09
|
(7) что-то не получилось. А вы уверены что "В" будет работать по отношению в таблице значений?
|
|||
9
jsmith82
03.10.15
✎
11:11
|
(8) Ты слушай умных дяденек 2-5
А будешь тупить, ничего не выйдет У тебя в тзСписать 2 колонки |
|||
10
RomanYS
03.10.15
✎
11:14
|
(8) так передай массив/список
ВыгрузитьКолонку тебе поможет |
|||
11
Emilio
03.10.15
✎
11:25
|
(9) (10) проверяю оба варианта. отпишусь сюда по результату с данными замера.
|
|||
12
PuhUfa
03.10.15
✎
12:05
|
(11) зачем ты в ТЗ изначально загоняешь номенклатуру и характеристику? Характеристика подчинённый справочник. Работай только с ней и используйте владельца для получения номенклатуры
|
|||
13
Emilio
03.10.15
✎
12:25
|
(9) сделал так:
Запрос.Текст = ("ВЫБРАТЬ | тзСписать.Номенклатура, | тзСписать.Характеристика |ПОМЕСТИТЬ тзСписать |ИЗ | &тзСписать КАК тзСписать |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ХарактеристикиНоменклатуры.Ссылка КАК Характеристика |ПОМЕСТИТЬ тзХарактеристики |ИЗ | Справочник.ХарактеристикиНоменклатуры КАК ХарактеристикиНоменклатуры |ГДЕ | ТИПЗНАЧЕНИЯ(ХарактеристикиНоменклатуры.Владелец) = ТИП(Справочник.Номенклатура) |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | тзХарактеристики.Характеристика.Владелец КАК Номенклатура, | тзХарактеристики.Характеристика |ИЗ | тзХарактеристики КАК тзХарактеристики | ЛЕВОЕ СОЕДИНЕНИЕ тзСписать КАК тзСписать | ПО тзХарактеристики.Характеристика = тзСписать.Характеристика |ГДЕ | тзСписать.Характеристика = NULL"); собственно как ты советовал, результат пустой получается. |
|||
14
Emilio
03.10.15
✎
12:28
|
(12) в ТЗ хранится результат чтения файла. вот все чего нет в этой ТЗ мне надо списать
|
|||
15
jsmith82
03.10.15
✎
12:31
|
(13) Напиши ЕСТЬ NULL
|
|||
16
PuhUfa
03.10.15
✎
14:06
|
(14) не важно результат чего у тебя тзСписать. Главное что бы там были ссылки на характеристики (у тебя же там ссылки а не текст?). Колонка Номенклатура в тзСписать лишняя.
|
|||
17
Emilio
03.10.15
✎
14:50
|
(15) (16) Спасибо за помощь! :) вроде заработало в обоих вариантах, теперь буду по замерам проверять, что отработает быстрее. Премного вам благодарен)
|
|||
18
Лефмихалыч
03.10.15
✎
16:34
|
сегодня день решительного отказа от запятых что ли?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |