Вход | Регистрация

1С:Предприятие ::

Метки: 

Условие в 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 человек.
Рекламное место пустует