Здравствуйте форумчане, я только начинаю разбираться в этих кодах и поэтому возникли вопросы, в частности в моменте про приоритет складов в ОУ. Не могли бы вы разжевать мне следующие участки кода:
ЕСТЬNULL(ОстаткиНоменклатурыОстатки.Склад, ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)) КАК Склад
и
| ВЫБОР
| КОГДА Остатки.Склад = &Склад
| ТОГДА -99 // Зачем здесь заменяем на -99?
| ИНАЧЕ ЕСТЬNULL(РейтингСкладовСрезПоследних.Порядок, 0)
| КОНЕЦ КАК Порядок
Безобразные куски кода (особенно первый), да собственно и второй не лучше. Сперва послушай курсы Чистова, Гилева или кого нить еще
P.S. Все зависит от контекста
хм... решение TUBORG14 четвертого билета (с предыд. страницы):
| ВЫБОР
| КОГДА ТЧИСклады.Склад = &Склад
| ТОГДА -1
| ИНАЧЕ ЕСТЬNULL(ПриоритетыСкладовСрезПоследних.Приоритет, 0)
| КОНЕЦ КАК Приоритет
зачем же такие безобразные куски кода в своем решении-то использовать?
nazirovramzil, зачем менять приоритет, можно понять, прочитав условие списания в задаче для расходной накладной
Ладно, сам нарвался, придется оправдываться (хотя как и все не люблю этого). Дело в том, что мой код
уж точно не идеальный, более того, каждый раз пересматривая собственные решения хочется чо нить переделать, но по опыту знаю если работает и
всех устраивает лучше не трогать как бы не свербило сделать лучше.
Все это в полной мере относится и к выложенным мной решениям.
По поводу конкретно этого куска кода думаю лучше было бы написать так:
| ВЫБОР
| КОГДА ТЧИСклады.Склад = &Склад
| ТОГДА -1
| КОГДА ПриоритетыСкладовСрезПоследних.Приоритет ЕСТЬ NULL
| ТОГДА 0
| ИНАЧЕ ПриоритетыСкладовСрезПоследних.Приоритет
| КОНЕЦ КАК Приоритет
ИМХО функция ЕСТЬNULL проиграет оператору ЕСТЬ NULL на больших выборках, хотя нужно посмотреть как запрос транслируется для конкретной СУБД.
P.S. Вообще мне и этот код не нравится, но нет идей как обойтись без сравнения на Null (недетская операция)