ВЫРАЗИТЬ() по нескольким типам в запросе. #595285


#0 by H A D G E H O G s
Ночи доброй. Как говорит мой младший брат про меня: "Брат старый стал - не помнит нихера" © Брат-2 Хочу странного: Выразить(ТоварыНаСкладах.Регистратор как (Документ.ПоступлениеТоваровУслуг, Документ.ВозвраТоваровПокупателем). Как сделать?
#0 by H A D G E H O G s
Ночи доброй. Как говорит мой младший брат про меня: "Брат старый стал - не помнит нихера" © Брат-2 Хочу странного: Выразить(ТоварыНаСкладах.Регистратор как (Документ.ПоступлениеТоваровУслуг, Документ.ВозвраТоваровПокупателем). Как сделать?
#1 by zyto
...а зачем регистратор выражать? Мож тебе отбор по типу надо? ...ССЫЛКА...
#2 by БибиГон
через выбор?
#3 by H A D G E H O G s
Мне надо номера приходных документов получить.
#4 by H A D G E H O G s
Тоесть, я точно знаю, что в выборке не будут номера реализаций, отчетов ККМ, и.т.д., чтобы sql по ним не шарился.
#5 by acsent
ручками левое соединение
#6 by H A D G E H O G s
Бррррр., по другому никак?
#7 by acsent
нет
#8 by Rie
Так а если тебе нужны только номера - почему не написать ТоварыНаСкладах.Регистратор.Номер
#9 by H A D G E H O G s
Регистратор - составное поле, будет лазать по всем таблицам, если тип не ограничишь.
#10 by alxbzm
ну это для затравки - а потом сие либо во вложенный запрос, либо во временную таблицу и уже оттуда номер не? не то?
#11 by alxbzm
+ ой пардон - как сложно написал... ГДЕ   ТоварыНаСкладах.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг
#12 by Inform
Выразить(ТоварыНаСкладах.Регистратор как Документ.ПоступлениеТоваровУслуг) ИЛИ Выразить(ТоварыНаСкладах.Регистратор как Документ.ВозвраТоваровПокупателем) ?
#13 by Inform
вроде как sql все равно клеит со всеми таблицами составного типа, если задано условие по "ССЫЛКА"
#14 by H A D G E H O G s
Гхмм, счаст посмотрим.
#15 by H A D G E H O G s
нет
#16 by H A D G E H O G s
Не, не катит
#17 by H A D G E H O G s
Вот как то так: ВЫБОР    КОГДА ТоварыНаСкладах.Регистратор ССЫЛКА Документ.ПоступлениеТоваров        ТОГДА ВЫРАЗИТЬ(ТоварыНаСкладах.Регистратор КАК Документ.ПоступлениеТоваров)    КОГДА ТоварыНаСкладах.Регистратор ССЫЛКА Документ.КорректировкаЗаписейРегистров        ТОГДА ВЫРАЗИТЬ(ТоварыНаСкладах.Регистратор КАК Документ.КорректировкаЗаписейРегистров) КОНЕЦ
#18 by H A D G E H O G s
Счаст в SQL схожу, посмотрю
#19 by Immortal
это плохо
#20 by Immortal
или это обработка разовая?
#21 by mirosh
поддерживаю
#22 by H A D G E H O G s
Почему плохо?
#23 by H A D G E H O G s
Нет, на разовая, объемы данных могут быть большие, все достаточно критично по времени.
#24 by Immortal
конструкция ВЫБОР КОГДА ТОГДА как правило сильно снижает скорость выполнения запроса
#25 by mirosh
почему?
#26 by H A D G E H O G s
Проверить 3 поля одной таблицы - это гораздо легче, чем потом Левым соединением по этим полям соединяться к куче других таблиц.
#27 by Immortal
по кочану ну пиши номер документов прихода в реквизит регистра и усе
#28 by H A D G E H O G s
Не могу писать номер.
#29 by H A D G E H O G s
Почему?
#30 by H A D G E H O G s
:-)
#31 by mirosh
то есть ты просто не знаешь. все с тобой ясно.
#32 by Immortal
тогда объединением как в (только без ТИПЗНАЧЕНИЯ)
#33 by Immortal
то есть не имею желания тебе объяснять
#34 by Asmody
у меня баттхёрт или я чего-то не понимаю: ты фактически написал "если А имеет тип Б, то привести А к типу Б"
#35 by mirosh
а зачем грубить, товарищ инженер знаний?
#36 by Дикообразко
ВЫРАЗИТЬ(ТоварыНаСкладах.Регистратор КАК Документ.ПоступлениеТоваров).Номер не?
#37 by H A D G E H O G s
Ты все правильно понял.
#38 by H A D G E H O G s
Да, но не только ПоступлениеТоваров, но и КорректировкаЗаписейРегистра , к примеру.
#39 by Immortal
сплю я, не обращай внимания
#40 by Дикообразко
естьnull?
#41 by Asmody
зачем приводить к типу, если оно и так уже такого типа?
#42 by Дикообразко
естьnull(ВЫРАЗИТЬ(ТоварыНаСкладах.Регистратор КАК Документ.ПоступлениеТоваров).Номер,ВЫРАЗИТЬ(ТоварыНаСкладах.Регистратор КАК Документ.КорректировкаЗаписейРегистра ).Номер  )
#43 by Дикообразко
1c тупая скотина
#44 by Asmody
а чем ССЫЛКА(...) ИЛИ ССЫЛКА(...) в ГДЕ не угодило?
#45 by H A D G E H O G s
Счаст попробую
#46 by mirosh
не факт, что оно такого типа. Тут два варианта. 1. Выбрать сначала с одним типом (в разделе ГДЕ слово ССЫЛКА) и объединить с другим типом. 2. Либо проверять сразу в полях через "выбор когда Ссылка тогда выразить"
#47 by H A D G E H O G s
Это меняет результат запроса, теоретически, но практически мне подходит.
#48 by H A D G E H O G s
Тоже вариант
#49 by H A D G E H O G s
Балин, забросали.
#50 by H A D G E H O G s
Все, погодьте, пойду тестить быстродействие
#51 by Дикообразко
работай давай, а то расслабился ))
#52 by H A D G E H O G s
Везет быдлокодерам - как напишут - так и работает и не парься.
#53 by Immortal
да) хорошо быть вредненцем)
#54 by Дикообразко
+1
#55 by Immortal
правда, я не очень понимаю, почему бы просто не выбрать ВЫБРАТЬ Т.Номер ИЗ Документ.ПоступлениеТоваровУслуг КАК Т ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ Т.Номер ИЗ Документ.Блабла КАК Т, но это видно так надо - из ТоваровНаСкладах?
#56 by Дикообразко
а ВЫБОР КОГДА везде тормоза дает? я думал только в соединениях :(
#57 by H A D G E H O G s
2 раза запрос к регистру делать?
#58 by Дикообразко
*в условиях соединений
#59 by H A D G E H O G s
Я вот тоже не уверен
#60 by Дикообразко
так если в индексе, то может быть и быстрее получиться
#61 by mirosh
ключевое слово "если". проще наверно сначала во временную таблицу, там проиндексировать
#62 by Immortal
не тормоза, но ему(движку БД) это тоже надо посчитать два чтения  - надо смотреть, что быстрее будет почему к таблицам документов нельзя напрямую обратится? это конечно хорошо..когда темп дб резиновая
#63 by Asmody
регистр по регистратору должен быть проиндексирован по-идее.
#64 by Asmody
я так и не понял, почему не подходит ССЫЛКА в ГДЕ
#65 by H A D G E H O G s
Подходит. Мне подходит, но в других случаях - нет.
#66 by H A D G E H O G s
Потому что она обрежет движения регистра, у которых регистратор не Поступление и не Корректировка
#67 by H A D G E H O G s
Вы погодите, я сейчас
#68 by BOZKURT
При всем уважении как к человеку, НО, как к модеру, некорректно.. Лучше сдай свой пост/должность..
#69 by Дядя Васька
А я и не очень понял... Если использовать приведение типов результат запроса разве как-то изменится? Что ТоварыНаСкладах.Регистратор.Номер что через выразить - количество строк одинаково, а значит через две точки продет как раз по тем ссылкам что есть в результатах запроса ТоварыНаСкладах.Регистратор с выразить или без. Не?
#70 by Asmody
чтобы не обрезало правильнее использовать левое соединение
#71 by Дикообразко
правильно, модер не должен извиняться, на .уй должен посылать
#72 by Immortal
да я её и не просил количество соединений различно-)
#73 by Дикообразко
без явного указания типа 1с сделает соединения ко всет таблицам типов регистратора
#74 by mirosh
да, это так
#75 by Armando
Во все не вчитывался. Что в итоге-то? В ИТСах пишут, что надо как . Только если номера нужны, то вот так: ВЫБОР    КОГДА ТоварыНаСкладах.Регистратор ССЫЛКА Документ.ПоступлениеТоваров        ТОГДА ВЫРАЗИТЬ(ТоварыНаСкладах.Регистратор КАК Документ.ПоступлениеТоваров).Номер    КОГДА ТоварыНаСкладах.Регистратор ССЫЛКА Документ.КорректировкаЗаписейРегистров        ТОГДА ВЫРАЗИТЬ(ТоварыНаСкладах.Регистратор КАК Документ.КорректировкаЗаписейРегистров).Номер КОНЕЦ
#76 by Дядя Васька
Так ить какие в ГДЕ наотбирает, к тем и соединиться, не?
#77 by H A D G E H O G s
В Итоге - я счаст замеры делаю, запросы SQL смотрю. Но я рад, что не читая ИТС (и как у вас на них время есть?) я пришел к тому же.
#78 by HIDDEN MESSAGE
#79 by H A D G E H O G s
exec sp_executesql N'SELECT TOP 10 CASE WHEN (T1._RecorderTRef = 0x000001B7) THEN T2._Number WHEN (T1._RecorderTRef = 0x00000154) THEN T3._Number END, T1._Period FROM _AccumRg19347 T1 WITH(NOLOCK) LEFT OUTER JOIN _Document439 T2 WITH(NOLOCK) ON T1._RecorderTRef = AND T1._RecorderRRef = T2._IDRRef LEFT OUTER JOIN _Document340 T3 WITH(NOLOCK) ON T1._RecorderTRef = @P2 AND T1._RecorderRRef = T3._IDRRef WHERE (T1._RecordKind = @P3)',N' varbinary,@P2 varbinary,@P3 numeric',0x000001B7,0x00000154,0
#80 by HIDDEN MESSAGE
#81 by Immortal
так я у тебя в посте про ГДЕ ничего не увидел
#82 by H A D G E H O G s
По методу Дикообраза exec sp_executesql N'SELECT TOP 10 ISNULL(CAST(T2._Number AS NCHAR),T3._Number), T1._Period FROM _AccumRg19347 T1 WITH(NOLOCK) LEFT OUTER JOIN _Document439 T2 WITH(NOLOCK) ON T1._RecorderTRef = AND T1._RecorderRRef = T2._IDRRef LEFT OUTER JOIN _Document340 T3 WITH(NOLOCK) ON T1._RecorderTRef = @P2 AND T1._RecorderRRef = T3._IDRRef WHERE (T1._RecordKind = @P3)',N' varbinary,@P2 varbinary,@P3 numeric',0x000001B7,0x00000154,0
#83 by H A D G E H O G s
Счаст ИТС с Дикообразом в скорости мериться будут.
#84 by H A D G E H O G s
Счаст мы им Первые 10 отрежем и посмотрим, как они на 390 тыс. строк запоют.
#85 by BOZKURT
Сам с собой общаешься?!...
#86 by Дядя Васька
А по методу Асмодея?
#87 by Дикообразко
умным рассказывает, мы затаив дыхание слушаем
#88 by Дикообразко
ты думаешь у есть шансы?
#89 by H A D G E H O G s
см
#90 by Чайник Рассела
и де здесь нормальные люди?
#91 by H A D G E H O G s
Потерпите, сервак перезагружается.
#92 by Дядя Васька
, Свернуло, проглядел. А в оригинале это как выглядело?
#93 by Immortal
к : на итс-ах пишут, в первую очередь, что регистр должен быть самодостаточным-)
#94 by Дядя Васька
+ А то чет как-то много всего. Не только соединений, но и WHERE тоже какой-то длиннючий подозрительно.
#95 by H A D G E H O G s
Скажи это базовой конфе.
#96 by H A D G E H O G s
Метод ИТС дал Reads 6142 Duration 678
#97 by Дикообразко
см
#98 by Дикообразко
->
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С