|
v7: извлечь и типизировать вид справочника в прямом запросе | ☑ | ||
---|---|---|---|---|
0
Zakarum
19.03.13
✎
16:49
|
База dbf.
Использую подключение через объект OLEDB. Произвожу выборку некоторго справочника (например "контрагенты"). У него есть реквизит с типом "Справочник неопределенного вида" (например "ЮрФизЛицо") Возникла задача установить, какие были использованы виды справочников в этом реквизите. Типизация в прямом запросе по первым четырем символам почему-то не работает. Итоговый текст запроса такой SELECT Род5 as [Род5_1c_type_Справочник_Контрагенты], Род4 as [Род4_1c_type_Справочник_Контрагенты], Род3 as [Род3_1c_type_Справочник_Контрагенты], Род2 as [Род2_1c_type_Справочник_Контрагенты], Род1 as [Род1_1c_type_Справочник_Контрагенты], Элем as [Элем_1c_type_Справочник_Контрагенты], Спр.Id, Спр.Code as Код, Спр.Descr as Наименование, Спр.sp521 as [ЮрФизЛицо_1c_type_Справочник], Substr(Спр.sp521, 1, 4) as [ВидСпр_ЮрФизЛицо_1c_type_ВидСправочника] FROM Tmp1 LEFT JOIN sc172 Спр ON Спр.Id = Элем Подскажите, пожалуйста, как исправить строку substr, чтобы она типизировала сам вид справочника, если это возможно. |
|||
1
Ёпрст
19.03.13
✎
16:55
|
left($Спр.ЮрФизЛицо,4) as [Вид $ВидСправочника]
|
|||
2
Zakarum
19.03.13
✎
17:05
|
(1) тоже не работает :(
у меня такая строка: left($Спр.ЮрФизЛицо, 4) as [ВидСпрЮрФизЛицо $ВидСправочника] хотя предыдущая колонка с полной типизацией юрфизлица выдает непустой результат |
|||
3
Ёпрст
19.03.13
✎
17:08
|
Ну, попробуй так что ли:
left($Спр.ЮрФизЛицо, 4) as [ВидСпрЮрФизЛицо $ВидСправочникаПредставление] ЗЫ: ну или тупо через icase |
|||
4
Zakarum
19.03.13
✎
17:20
|
$ВидСправочникаПредставление тоже выдает пустоту.
case не хотелось бы использовать, т.к. предполагаю делать выгрузку, в которой можно выбирать любой справочник и выгружать реквизиты его реквизитов, если эти реквизиты сами являются справочниками. Я так понимаю, $ВидСправочника и ВидСправочникаПредставление обязаны работать? |
|||
5
Ёпрст
19.03.13
✎
17:25
|
(4) для скуля - да, для оледб не гарантированно, скорее всего нет.
Только сравнение через case будет работать, типизация врят ли. ЗЫ: можно и через 1sqlite написать запрос. Да и.. у тебя всего то там 2 вида справочника, тупо iif/icase и привет |
|||
6
Zakarum
19.03.13
✎
17:33
|
(5)
печально. Видимо так и есть, в описании к OLEDB эти варианты типизации не приводятся. >>Да и.. у тебя всего то там 2 вида справочника, тупо iif/icase и привет для ЮрФизЛица в Справочнике Контрагенты -- да. Но этот вариант я взял для примера, а так-то мне надо написать выгрузку в некую внешнюю приблуду для любых справочников и их выбираемых реквизитов, а если этреквизиты справочники, то еще и выбирать реквизиты тех справочников. Ну то есть Контрагенты.ЮрфизЛицо.Адрес с 1sqlite не сложились у меня отношения. |
|||
7
Ёпрст
19.03.13
✎
17:35
|
(6) если выбирать реквизиты в рамках одного запроса - то это соединение.. опять же, вид не нужен будет - ручонками же юнион собирать будешь, из всевозможных видов справочников.
|
|||
8
Ёпрст
19.03.13
✎
17:39
|
В твоём случае, можно сделать так (как делают с перечислениями) - лепишь временную табличку, в которую заносишь Id вида справочника и его представление в текстовом виде.
С ней и соединяешься в тексте запроса для получения представления. |
|||
9
Zakarum
19.03.13
✎
17:41
|
(8) гениально!
так и сделаю, спасибо :) П.С. (7) в рамках одного запроса нельзя. Надо выдать список реквизитов тех справочников с таблицу значений на форму, чтобы можно было выбрать нужные. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |