Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1544/)
-   -   Сложная связь в запросе (http://forums.kuban.ru/f1544/slozhnaya_svyaz-_v_zaprose-5173232.html)

Vel 18.12.2013 12:40

Сложная связь в запросе
 
Есть регистр сведений с измерением типа Номенклатура и ресурсом типа число (Процент)
По некоторым товарам есть записи со значениями и есть запись для пустой ссылки.
Надо сформировать запрос где будет выдаваться соответствующие значения для товаров, по которым есть записи. А если нет, то процент для пустой ссылки.
Сделал запрос:


ВЫБРАТЬ
Номенклатура.Ссылка,
Номенклатура.Представление,
ПроцентыСрезПоследних.Процент
ИЗ
Справочник.Номенклатура КАК Номенклатура
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Проценты.СрезПоследних КАК ПроцентыСрезПоследних
ПО (ВЫБОР КОГДА Номенклатура.Ссылка В (ВЫБРАТЬ РегистрСведений.Проценты.СрезПоследних.Товар ИЗ РегистрСведений.Проценты.СрезПоследних)
ТОГДА ПроцентыСрезПоследних.Товар = Номенклатура.Ссылка
ИНАЧЕ ПроцентыСрезПоследних.Товар = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
КОНЕЦ)

Всё работает. Но мне вообще не нравиться так как это часть огромного запроса, и он будет тормозить весь запрос.

Как то можно оптимизировать?

Uho 18.12.2013 12:44

интересно, как в выборке результа этого запроса получится пустая ссылка?

Vel 18.12.2013 12:46

Не пустая ссылка, а процент для пустой ссылки.
"ПроцентыСрезПоследних.Товар = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)"

Uho 18.12.2013 12:54

в выборке не будет пустой ссылки, соответственно, и не будет процента для пустой ссылки

Uho 18.12.2013 12:56

а... тебе нужно для ВСЕХ ссылок, отсутствующих в РС, вывести этот "общий" процент

Vel 18.12.2013 12:58

2 Uho
Ну ты хоть глянь запрос разок...

VZ 18.12.2013 13:06

Отвлекаясь от самой идеи иметь регистр отсутствующим ресурсом: как можно использовать [b]список[/b] таких записей?

Эта консерватория точно правильно построена?

Uho 18.12.2013 13:10

5-Vel > дык глянул, справочник с левым соединением никогда не даст пустой ссылки, объясняться надо яснее :)

по теме: сделай пакетный запрос

Vel 18.12.2013 13:12

2 VZ
"Есть регистр сведений с измерением типа Номенклатура и ресурсом типа число (Процент)"
Где отсутствует ресурс???
Типа так
Товар | Процент
------------------
Ручка | 23
Пенал | 16
| 10

Что не так?

Uho 18.12.2013 13:12

6-VZ > как например счета учета номенклатуры (см. 4)
ЗЫ. это только мои догадки, автор объяснить не может

EarlyBird 18.12.2013 13:17

а зачем надо было из левого соединения делать какой-то шутовской балаган?
по-нормальному нельзя было написать запрос?

VZ 18.12.2013 13:21

8-Vel > Вопрос (6) точно прочитал? Или прочитал удобное?
А вопрос был конкретным: вот запрсс вывел кучу ссылок записей регистра, где есть [b]только[/b] измерение. Как ты эту кучу процентов используешь, и что они будут представлять? Вот получилась всего 146%. Далее что?
Ты Чуров?

Vel 18.12.2013 13:25

2(10) по нормальному- это как?
Потому сюда и пишу, что не нравится

2(9) Что ещё объяснить?

Есть справочник Номенклатура. Есть регистр сведений, где для НЕКОТОРЫХ товаров указан ПРОЦЕНТ.
Но задача стоит, чтобы для остальных товаров , по которым не введены записи в регистре проставлялся ОПРЕДЕЛЁННЫЙ процент, который со временем может меняться. Что ты предлагаешь? Мне константу под это дело заводить чтоль???

EarlyBird 18.12.2013 13:26

ВЫБРАТЬ
Номенклатура.Ссылка,
Номенклатура.Представление,
ПроцентыСрезПоследних.Процент
ИЗ
Справочник.Номенклатура КАК Номенклатура
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Проценты.СрезПоследних КАК ПроцентыСрезПоследних
ПО Номенклатура.Ссылка = ПроцентыСрезПоследних.Товар

ОБЪЕДИНИТЬ

ВЫБРАТЬ
ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка),
"",
ПроцентыСрезПоследних.Процент
ИЗ
РегистрСведений.Проценты.СрезПоследних КАК ПроцентыСрезПоследних
ГДЕ
ПроцентыСрезПоследних.Товар = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)

VZ 18.12.2013 13:29

12-Vel > Я понял: через жопу - это позиция. Возвышающая...

Uho 18.12.2013 13:31

[quote=Vel;33383263]Что ты предлагаешь? Мне константу под это дело заводить чтоль??? [/quote]
ты читать умеешь? я предложил пакетный запрос.

13-Ирли Бёрд > ему не это надо, он таки объяснил в (12), что хочет

Vel 18.12.2013 13:32

2(13) И что я получу?
Таблицу в которой будут идти товары со своими процентами, товары с пустыми значениями процентов
и в конце строка со значением по-умолчанию . Оно мне надо?
Приведу пример:
1. В регистре
Товар|Процент
---------------
Ручка| 23
Пенал| 17
_____| 10
При отборе в запросе по товарам :Ручка, Пенал, Шкаф, Диван он должен выдать

Ручка|23
Пенал|17
Шкаф |10
Диван|10

Так понятно?

VZ 18.12.2013 14:13

16-Vel > ВЫБОР. Ежели нашли, то оно, иначе назначеное число.
И не надо беспокоить бабушку эротическими пассами.

VZ 18.12.2013 14:22

А вообще давно придуманы механизмы для подобного. Например, Цены.

bma1 18.12.2013 15:04

ВЫБРАТЬ
Номенклатура.Ссылка,
Номенклатура.Представление,
ВЫБОР КОГДА ПроцентыСрезПоследних.Процент НЕ ЕСТЬ NULL
ТОГДА ПроцентыСрезПоследних.Процент
ИНАЧЕ ПроцентыСрезПоследнихПусто.Процент КОНЕЦ КАК Процент

ИЗ
Справочник.Номенклатура КАК Номенклатура
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Проценты.СрезПоследних КАК ПроцентыСрезПоследних
ПО ПроцентыСрезПоследних.Товар = Номенклатура.Ссылка
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Проценты.СрезПоследних КАК ПроцентыСрезПоследнихПусто
ПО ПроцентыСрезПоследнихПусто.Товар = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)

Uho 18.12.2013 15:14

19-bma1 > в пакетном, имхо, было бы лучше
18-VZ > цены для номенклатуры не устанавливаются "по умолчанию"

bma1 18.12.2013 16:29

2(20) Цена задается для Товара с характеристиками и "по умолчанию" для Товара с пустой характеристикой. А потом в запросе ищется по аналогии с (0)

Uho 18.12.2013 16:37

(21) в бухгалтерии такого нет :)

Reaper 18.12.2013 20:44

20-Uho > +1.

Vel 19.12.2013 13:05

2(20) сделал как в 19. Лучше
А чем лучше пакетом? (я серьёзно не понимаю)Если можно в двух словах.

Vel 19.12.2013 13:18

2(20)имеется ввиду, что не надо много раз получать значение процента для пустой ссылки?

VZ 19.12.2013 13:23

24-Vel >Вообще-то, в данном случае (сабж) запись с дефолтным значением должна быть единственной, и нЕфиг ее искать каждый раз по новому. Даже если SQL умнее разработчика, и сам сохранит в буфере требуемое значение.
Нехорошо это: надеяться на реализацию.

VZ 19.12.2013 13:27

+23 уточню: [em]...быть единственной для [b]данного документа[/b][/em]


Текущее время: 11:57. Часовой пояс GMT +3.