К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

Как в запросе сделать вычисляемое поле ??? Выбрать * Поле1, НекаяФункция(Поле1) из ...???

Гость
0 - 15.01.2012 - 14:42
Пробую конструкцию вида

Выбрать
Оборудование, ВидОборудования(Оборудование)
из
РегистрСведений,...



У меня Оборудование - это составной тип и поэтому во втором поле хочется получить Вид справочника, для этого я, скажем должен сделать внешнюю ф-цию, которая будет возвращать вид справочника в зависимости от элемента поля "Оборудование"

Как это можно сделать?



1 - 15.01.2012 - 15:19
ВЫБОР
КОГДА ВидОборудования ССЫЛКА Справочник.ТвойСправочник ТОГДА ""ТвойСправочник""
КОГДА ВидОборудования ССЫЛКА Справочник.ДругойСправочник
ТОГДА ""ДругойСправочник""
КОНЕЦ
Гость
2 - 15.01.2012 - 15:50
Спасибо 8-)
Гость
3 - 15.01.2012 - 16:04
А как получить значение реквизита через точку
У меня Регистр ОбщиеПодключения (Измерения - ОбъектИСПДн (справочник), ПодключаемыйОбъект (справочник); Ресурс - Подключено(булево))

Выбрать
РС.ОбъектИСПДн,
РС.ПодключаемыйОбъект,

ВЫБОР Когда РС.ПодключаемыйОбъект Ссылка Справочник.Оборудование Тогда РС.ПодключаемыйОбъект.ВидУстройства.Наименование
КОНЕЦ Как ВидУстройства

Из
РегистрСведений.ОбщиеПодключения Как РС

Почему-то в поле "ВидУстройства" значение Null, хотя у любого ПодключаемогоОбъекта, когда он имеет тип ("Оборудование") реквизит ВидУстройства имеет строго определённое значение
Гость
4 - 15.01.2012 - 16:38
(2) У тебя ТИПЗНАЧЕНИЯ отобрали???
5 - 15.01.2012 - 17:24
5-Reaper >:)))
Ага, мы не любим лёгких путей :)
Новый год же :)
Гость
6 - 15.01.2012 - 17:36
7 - 15.01.2012 - 18:00
7-Reaper >А если серьёзно, то посмотри на следующие:

Запрос в 1С:

ВЫБРАТЬ ТИПЗНАЧЕНИЯ(РасходнаяНакладная.Заказ) КАК Поле1
ИЗ Документ.РасходнаяНакладная КАК РасходнаяНакладная

На скуль уходит:

SELECT
CASE
WHEN (T1._Fld2378_TYPE) = 0x08 AND (T1._Fld2378_RTRef) = 0x00000054
THEN 0x0800000054
WHEN (T1._Fld2378_TYPE) = 0x08 AND (T1._Fld2378_RTRef) = 0x00000055
THEN 0x0800000055
ELSE 0x00
END
FROM _Document119 T1 WITH(NOLOCK)

Запрос в 1С:

ВЫБРАТЬ
ВЫБОР
КОГДА РасходнаяНакладная.Заказ ССЫЛКА Документ.ЗаказПокупателя
ТОГДА ""ЗаказПокупателя""
КОГДА РасходнаяНакладная.Заказ ССЫЛКА Документ.ЗаказПоставщику
ТОГДА ""ЗаказПоставщику""
ИНАЧЕ ""Неопределено""
КОНЕЦ КАК Поле1
ИЗ Документ.РасходнаяНакладная КАК РасходнаяНакладная

На скуль уходит:

SELECT
CASE
WHEN (T1._Fld2378_TYPE = 0x08 AND T1._Fld2378_RTRef = 0x00000054)
THEN N'ЗаказПокупателя'
WHEN (T1._Fld2378_TYPE = 0x08 AND T1._Fld2378_RTRef = 0x00000055)
THEN N'ЗаказПоставщику'
ELSE N'Неопределено' END
FROM _Document119 T1 WITH(NOLOCK)

Разницу видишь?
Гость
8 - 15.01.2012 - 18:42
(8) Разница в том, что я при необходимости еще один тип данных в реквизит добавлю и не будет необходимости запрос переписывать.
9 - 15.01.2012 - 18:44
9-Reaper >Вот именно!
Смотреть надо по ситуации :)
А топикстартеру это вообще не нужно, судя по (4).


К списку вопросов






Copyright ©, Все права защищены