Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Условие в ms sql

Условие в ms sql
Я
   gosn1ck
 
17.01.18 - 10:21
Всем привет!
подскажите, как в ms sql сделать аналог следующего условия?

ГДЕ
ТоварыНаСкладах.Регистратор ССЫЛКА Документ.ПоступлениеТоваровИзПереработки

а именно преобразовать вид сравнение "ССЫЛКА"
   Asakra
 
1 - 17.01.18 - 10:34
(0) как-то так: where tab.Регистратор = 0x000000DB
   Ненавижу 1С
 
2 - 17.01.18 - 10:43
where _RecorderTRef=0x0000227A
   gosn1ck
 
3 - 17.01.18 - 10:52
спасибо, а что такое 0x0000227A? это же не строке верно? как указать это значение?
подключаюсь к базе как к внешнему источнику
   Asakra
 
4 - 17.01.18 - 11:02
   AlfaDog
 
5 - 17.01.18 - 11:06
Where tab.Регистратор in (select guid from таблица документа)
   MrStomak
 
6 - 17.01.18 - 11:09
(5)
Ты воистину опасный человек!
   Ёпрст
 
7 - 17.01.18 - 11:10
(0)
_RecorderRRef - регистратор
RecorderTRef - тип ссылки регистратора,
длина 4 байта, хранит идентификатор типа документа-регистратора в шестнадцатеричном виде.
например, 0x0000008F - это 143 в десятичной, т.е тип документа_Document143
т.е тебе нужно найти имя таблички нужного типа и перевести его название (цифровую часть) в 16-ое число. Усё

ЗЫ: Имя таблички  получаешь из получаешь ПолучитьСтруктуруХраненияБазыДанных
   бомболюк
 
8 - 17.01.18 - 11:23
(7) проще в условии писать
where cast(RecorderTRef as int) = 143 ;-)
   MrStomak
 
9 - 17.01.18 - 11:25
(8)
Проще.
Но совсем не факт, что MS SQL при этом сможет использовать индекс ByRecorder.
А вот в варианте (7) проблем с этим не будет точно.
   бомболюк
 
10 - 17.01.18 - 11:28
(9) ну тогда так
where RecorderTRef = cast(143 as binary(4))
   MrStomak
 
11 - 17.01.18 - 11:35
(10)
Щас посмотрел, да, так работает.
Только не забывать еще условие по разделителю всегда ставить.
   gosn1ck
 
12 - 17.01.18 - 11:47
всем спасибо, но у меня чёртов внешний источник данных. и как применить к нему функцию cast я пока не сообразил :(

видимо сбил вас с толку заголовком с ms sql
   бомболюк
 
13 - 17.01.18 - 11:52
(12) попробуй, может и без cast проканать. просто
where RecorderTRef = 143
   arsik
 
14 - 17.01.18 - 11:59
(13) Можно прямо так записать "where RecorderTRef = 0x0000008F"
Только перед этим нужно 143 в 16ричный превратить
   бомболюк
 
15 - 17.01.18 - 12:02
(14) вариант в (13) в ms sql работает, ничего переводить не надо

Список тем форума
Рекламное место пустует  Рекламное место пустует
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Фредерик Брукс-младший
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.