Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   Как в запросе сделать вычисляемое поле ??? Выбрать * Поле1, НекаяФункция(Поле1) из ...??? (http://forums.kuban.ru/f1040/kak_v_zaprose_sdelat-_vychislyaemoe_pole_vybrat-_%2A_pole1_nekayafunkciya_pole1_iz-2061511.html)

nbab 15.01.2012 14:42

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

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



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

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

Billi 15.01.2012 15:19

ВЫБОР
КОГДА ВидОборудования ССЫЛКА Справочник.ТвойСправочник ТОГДА ""ТвойСправочник""
КОГДА ВидОборудования ССЫЛКА Справочник.ДругойСправочник
ТОГДА ""ДругойСправочник""
КОНЕЦ

nbab 15.01.2012 15:50

Спасибо 8-)

nbab 15.01.2012 16:04

А как получить значение реквизита через точку
У меня Регистр ОбщиеПодключения (Измерения - ОбъектИСПДн (справочник), ПодключаемыйОбъект (справочник); Ресурс - Подключено(булево))

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

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

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

Почему-то в поле "ВидУстройства" значение Null, хотя у любого ПодключаемогоОбъекта, когда он имеет тип ("Оборудование") реквизит ВидУстройства имеет строго определённое значение

Reaper 15.01.2012 16:38

(2) У тебя ТИПЗНАЧЕНИЯ отобрали???

Billi 15.01.2012 17:24

5-Reaper >:)))
Ага, мы не любим лёгких путей :)
Новый год же :)

Reaper 15.01.2012 17:36

[img]https://lh6.googleusercontent.com/-tIi4hWCFloU/Tw9LUs3Ei8I/AAAAAAAAPW4/NE8cVNSMuyU/w370/anigifaaa.gif[/img]

Billi 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)

Разницу видишь?

Reaper 15.01.2012 18:42

(8) Разница в том, что я при необходимости еще один тип данных в реквизит добавлю и не будет необходимости запрос переписывать.

Billi 15.01.2012 18:44

9-Reaper >Вот именно!
Смотреть надо по ситуации :)
А топикстартеру это вообще не нужно, судя по (4).


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