|
v7: Как определить вид справочника в прямом запросе. | ☑ | ||
---|---|---|---|---|
0
Adecvator
16.11.12
✎
15:36
|
Как определить вид справочника в прямом запросе. Что-то вроде:
(Атребут.Вид() = "Контрагенты") И (ТипЗначенияСтр(Атребут)="Справочник") |
|||
1
Груздь
16.11.12
✎
15:45
|
Атребут - это глагол?
|
|||
2
qw12er
16.11.12
✎
15:46
|
Вот даже интересно, употребление мата так сильно оказывает влияние на ошибки?=)
|
|||
3
viktor_vv
16.11.12
✎
15:50
|
Откуда выбираешь ссылку на элемент справочника ?
Из реквизита с типом значения "Справочник" общего вида ? Тогда Left(ПолеСсылки,4) = $ВидСправочника36.Контраегнты |
|||
4
Adecvator
16.11.12
✎
15:56
|
(3)ссылку на справочник выбираю из документа, тип реквизита "Справочник"
|
|||
5
viktor_vv
16.11.12
✎
15:59
|
(4) Ну тогда (3).
|
|||
6
ПиН
16.11.12
✎
16:00
|
это колонка в таблице, что сложного-то?
|
|||
7
antoneus
16.11.12
✎
16:09
|
select
$Док.Атрибут [Атрибут $Справочник] |
|||
8
Adecvator
16.11.12
✎
17:02
|
кто знает, substring работает для реквизитов документов типа справочник. Типа: substring($Таб.АналитикаДт3,1,4) = '10.6'???
|
|||
9
Mikeware
16.11.12
✎
17:05
|
(8) а что такое у тебя $Таб.АналитикаДт3 ?
если строка, то сработает |
|||
10
Adecvator
16.11.12
✎
17:05
|
есть предположение, что в функцию substring возвращается не типизированное поле и поэтому обрезать проверять на что-то нельзя
|
|||
11
Adecvator
16.11.12
✎
17:06
|
(9) реквизит типа "Справочник".
|
|||
12
viktor_vv
16.11.12
✎
17:31
|
(8) (10) Внутри запроса там ничего не типизируется.
Типизация идет уже постобработкой результатов полученных из запроса. (8) Судя по результату, у тебя в реквизите совсем не тип Справочник. |
|||
13
Mikeware
16.11.12
✎
17:35
|
(10)а счего оно должно типизироваться? и как ты себе это представляешь - субстринг от элемента справочника?
(11) джойни с этим справочником, и субстринг от его наименования (12) "судя по", ошибка у него там же, где и всегда. |
|||
14
viktor_vv
16.11.12
✎
17:40
|
И уже б не стеснялся, выложил бы текст запроса и что ты от него хочешь полуить.
|
|||
15
Adecvator
16.11.12
✎
17:53
|
Код:
case when substring($Таб.АналитикаДт3,1,6) = '10.6.2' then 1 else 0 end |
|||
16
Adecvator
16.11.12
✎
17:54
|
$Таб.АналитикаДт3 - справочник, субстрингом я хочу вытащить первые 6-ть символов из наименования.
|
|||
17
viktor_vv
16.11.12
✎
17:56
|
А '10.6.2' - это что ? Кусок наименования ? Тогда (13) второй пункт.
Так как у тебя в базе в поле $Таб.АналитикаДт3 ссылка на справочник типа CHAR(13). |
|||
18
viktor_vv
16.11.12
✎
17:57
|
(17) Джойнить по Right($Таб.АналитикаДт3,9) .
|
|||
19
Mikeware
16.11.12
✎
17:58
|
(18) ему тип надо знать.
а у него нетипизированный... |
|||
20
viktor_vv
16.11.12
✎
18:01
|
(19) А, точно. Придется джойнить все возможные справочники.
Хотя может ему не по всем справочникам проверять надо, а по конкреному виду, тогда прилепить необходимый только. |
|||
21
viktor_vv
16.11.12
✎
18:02
|
Правда ТС продолжает играть в партизана :).
|
|||
22
Adecvator
16.11.12
✎
18:04
|
(21) почему продолжаю, тебе выложить код на 2 листа со всеми кейсами и условиями, зачем?
|
|||
23
Mikeware
16.11.12
✎
18:07
|
(22) НЕ НАДО!!!!
я его уже заранее боюсь... |
|||
24
Adecvator
16.11.12
✎
18:08
|
(23) издеваешься :)
|
|||
25
Mikeware
16.11.12
✎
18:08
|
(24) не без того...
|
|||
26
Mikeware
16.11.12
✎
18:09
|
+(25) но при этом стараюсь пнуть в нужном направлении...
|
|||
27
viktor_vv
16.11.12
✎
18:09
|
(22) Весь не надо, можно человеческим языком изложить, цель манипуляций.
Например, по всем ли возможным справочникам в $Таб.АналитикаДт3 надо условие проверять ? |
|||
28
Adecvator
16.11.12
✎
18:12
|
(27) да в том то и дело что не типизированный и проблема что надо джойнить все справочники что бы сабстрингом обрубить наименование или код
|
|||
29
Mikeware
16.11.12
✎
18:13
|
(28) ну и джойни. Ты думаещь, 1с по-другому делает?
|
|||
30
Adecvator
16.11.12
✎
18:15
|
а просто
select case when substring($Док.Аналитика2)='10' then 1 else 0 end from $ДокументСтроки.ПриходнаяНакладная as Док нельзя? |
|||
31
Adecvator
16.11.12
✎
18:15
|
к сожалению :(
|
|||
32
Ёпрст
16.11.12
✎
18:16
|
Аналитика2 - у тя че, строка ? или это реквизит агрегатного типа ?
|
|||
33
Adecvator
16.11.12
✎
18:17
|
Аналитика2 - реквизит типа "Справочник"
|
|||
34
Mikeware
16.11.12
✎
18:17
|
(30) тебе неожнократно советовали сменить ник...
|
|||
35
Ёпрст
16.11.12
✎
18:18
|
(33) а чего ты тогда хотел получить этим кодом ?
>>>case when substring($Док.Аналитика2)='10' then |
|||
36
Mikeware
16.11.12
✎
18:19
|
(35) ну, вдруг он идентификаторы генерил в нужной последователности :-)
|
|||
37
Adecvator
16.11.12
✎
18:19
|
(35) есть условие по которому документ с контрактом начинающимся на код 10.6.1 не должен попадать :(
|
|||
38
Ёпрст
16.11.12
✎
18:22
|
>>> начинающимся на код 10.6.1
код , это что ? Наименование поди справочника ? Тебе придё1тся либо лефт джоин все возможные виды справочника + coalesce, либо подзапросом через юнион алл их собрать и уже с ним лефт джоин или селект топ 1 |
|||
39
Adecvator
16.11.12
✎
18:22
|
(35) этим кодом я пытаюсь отсеет элементы справочников, у которых наименование начинается на 10 или код без разницы
|
|||
40
Adecvator
16.11.12
✎
18:24
|
(38) код, но наименование так же начинается как и код
|
|||
41
Adecvator
16.11.12
✎
18:30
|
о Аллах я спасен, кто-то дублирует реквизиты документа в строковом виде :)))
|
|||
42
Adecvator
16.11.12
✎
18:31
|
т.е. для каждого реквизита в документе создан его двойник только с типом значения Строка :)
|
|||
43
viktor_vv
16.11.12
✎
18:33
|
(42) Это кто-то SAP'а или NAV насмотрелся :).
Не помню где про такое читал. |
|||
44
Mikeware
16.11.12
✎
18:33
|
(41) видимо, это кто-то с тем ником, на который тебе советовали сменить твой...
|
|||
45
viktor_vv
16.11.12
✎
18:36
|
(37) Я так подозреваю Контракт, это какой-то один справочник, достаточно было его приджойнить по твоей Аналитика2.
|
|||
46
Adecvator
16.11.12
✎
18:38
|
(45)ага, я как начал типизировать поля, он мне такое выдал, бред :)
|
|||
47
Mikeware
16.11.12
✎
18:40
|
(45) максимум - пара-тройка... Не больше.
|
|||
48
viktor_vv
16.11.12
✎
18:41
|
(46) Ну в поле-то у тебя там могут быть и другие значения, но условие
case when substring($Док.Аналитика2)='10' then тебе ж надо проверять только если в док $Док.Аналитика2 значение из справочника Контракты (или какой он там у вас) ? |
|||
49
Adecvator
16.11.12
✎
18:51
|
(48) ну так это условие можно добавить как ты подсказал (3)
|
|||
50
viktor_vv
16.11.12
✎
18:54
|
(49) Так и я о том же, приджойнил один справочник и
case when substring(ISNULL($Спр.Descr,''))='10' then и без проверки вида. Это в случае если он один будет. |
|||
51
viktor_vv
16.11.12
✎
19:27
|
(50)+ Хотя вид лучше проверить, а то ID могут совпасть у разных справочников.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |