Имя: Пароль:
1C
1С v8
Запросы: Соединение с таблицей Перечисления. Зачем?
0 fedbka
 
13.01.12
00:48
Доброй ночи, уважаемые коллеги.

Мучает меня один вопрос, хочу у вас спросить совета - может есть какой тайный смысл, который мне неизвестен в следующей ситуации

Есть оборотный регистр накопления к примеру "Продажи" -  у него имеется несколько измерений, к примеру два - Контрагент (тип "СправочникСсылка.Контрагенты") и ДоговорКонтрагентов (тип "СправочникСсылка.ДоговорыКонтрагентов"). У Справочника "Договоры контрагентов" есть реквизит "Периодичность" с типом "Перечисление.Периодичность"
Какой тайный смысл может быть вот в таком запросе:

ВЫБРАТЬ
   Периодичность.Ссылка КАК Периодичность,
   Продажи.Контрагент,
   Продажи.ДоговорКонтрагента,
   СУММА(Продажи.СуммаОборот) КАК СуммаПродажи,
ИЗ
   РегистрНакопления.Продажи.Обороты КАК Продажи
       ЛЕВОЕ СОЕДИНЕНИЕ Перечисление.Переодичность КАК Периодичность
       ПО Продажи.ДоговорКонтрагента.Периодичность = Периодичность.Ссылка
СГРУППИРОВАТЬ ПО
   Периодичность.Ссылка,
   АР_ВзаиморасчетыПоАренде.ДоговорКонтрагента,
   АР_ВзаиморасчетыПоАренде.Контрагент


Для чего разработчик делает соединение с таблицей перечисления?
1 Total Commander
 
13.01.12
01:06
Если в договоре не установлена периодичность тогда Периодичность.Ссылка в результате запроса выдаст NULL, если же не делать левого соединения будет пустая ссылка.

Перечисление.Пер_е_одичность КАК Пер_и_одичность // насмешил чертяка
2 fedbka
 
13.01.12
01:16
(1) Да, мне тут уже подсказали что разность в поведение будет такая.
Ну так можно же
ВЫБОР
       КОГДА Продажи.ДоговорКонтрагента.Периодичность = Значение(#ПустаяСсылка)
               ТОГДА NULL
       ИНАЧЕ Продажи.ДоговорКонтрагента.Периодичность
КОНЕЦ

Соединение то зачем делать? Да и по тексту запроса далее вроде как это не роляет (NULL там будет или пустая ссылка).

Если различие только в этом, тогда спасибо за ответ! :)
3 Total Commander
 
13.01.12
01:26
Так будет дольше, а результат тот же. Кроме того, хотя и есть возможность, не следует писать везде Продажи.ДоговорКонтрагента.Периодичность, более того ВЫБОР же потом нужно будет и в группировку засунуть, да еще с такой конструкцией. Соединение делать нужно, в первом посте правильный запрос.
> Да и по тексту запроса далее вроде как это не роляет (NULL там будет или пустая ссылка).
А по алгоритму дальше что? Нужет был там NULL или нет телепата вызывать нужно.