Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) Идентификатор объекта (число прочтений - 5162 )
Vitaliy
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 19
Зарегистрирован: 23. Января 2007
Идентификатор объекта
20. Июля 2007 :: 09:15
Печать  
Господа подскажите как SQL запросом получить "нормальный" идентификатор объекта, те как надо вот этот запрос модифицировать?

Select
Объект.id
FROM
sc172 as объект

Нормальный подразумеваеться число, которое возвращаеться вот так Число ((Left(Right(ValueToStringInternal(obj),15),13)))
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Идентификатор объекта
Ответ #1 - 20. Июля 2007 :: 11:08
Печать  
Чё-т не понял. Например, этот запрос у тебя выводит '  3JR6   '.  А тебе что надо?
  
Наверх
 
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Идентификатор объекта
Ответ #2 - 20. Июля 2007 :: 11:34
Печать  
Это в десятичном что ли? (хелпа нету)
А зачем интересно?
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
DmitrO
1c++ power user
Отсутствует


ex developer

Сообщений: 579
Местоположение: г. Киров
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Идентификатор объекта
Ответ #3 - 20. Июля 2007 :: 17:56
Печать  
"нормальный", Улыбка ну смотри:
Идентификатор объекта состоит из строки 9 символов: первые 6 - 36-ричное представление числа - идентификатора объекта, их можно передать в встроенную функцию _strtoid() и получить значение типа Число - локальный идентификатор объекта (в этой базе); последние 3 символа это идентификатор базы данных (применятся в УРИБ).
  
Наверх
ICQ  
IP записан
 
Vitaliy
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 19
Зарегистрирован: 23. Января 2007
Re: Идентификатор объекта
Ответ #4 - 23. Июля 2007 :: 01:02
Печать  
Цитата:
Это в десятичном что ли? (хелпа нету)
А зачем интересно?


есть интранет сайт, вот в mysql это все выгружаеться, для кажого справочника/документа настроены правила

_strtoid() - встроена я так понимаю в компоненту, а я хочу просто получить ТЗ, и отправить ее в mysql, без каких либо обработок ее в 1С
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Идентификатор объекта
Ответ #5 - 23. Июля 2007 :: 01:20
Печать  
Ну тогда сделай две встроеные функции в SQL или даже одну, и используй её в запросе, пример в инете недавно находил, поиши в яндексе
  
Наверх
ICQ  
IP записан
 
Vitaliy
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 19
Зарегистрирован: 23. Января 2007
Re: Идентификатор объекта
Ответ #6 - 23. Июля 2007 :: 05:25
Печать  
Вроде нашел, пишу вот так:

CREATE PROCEDURE [_1s_StrToId] @Res36 CHAR(9), @Deci INT OUTPUT AS
     SET NOCOUNT ON
     DECLARE @j INT
     DECLARE @Arr36 CHAR(36)
     SELECT @Arr36 = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
     SELECT @Deci = 0
     SELECT @j = 1
     while @j <= LEN(LTRIM(RTRIM(@Res36)))
     begin
           if @j <> 1
           SELECT @Deci = @Deci*36
           SELECT @Deci = @Deci + CHARINDEX(SUBSTRING(LTRIM(RTRIM(@Res36)), @j,1),@Arr36) -1
           SELECT @j = @j+1
     end

Select
     _1s_StrToId(Объект.id)
FROM
     sc172 as Объект

И получаем во такую ошибку "_1s_StrToId не является известным имя встроенной функции."
Сильно пожалуйсто не пинайте, только начинаю на скл писать
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Идентификатор объекта
Ответ #7 - 23. Июля 2007 :: 05:35
Печать  
Правильно пишет, это у тебя процедура Улыбка
попробуй вот это:
Create FUNCTION sp_fromhex(@val char(9)) RETURNS int
AS
begin
declare @n int;
declare @l int;
declare @m int;
declare @i int;
declare @j int;
set @val = rtrim(ltrim(@val));
set @n=0;
set @l=Len(@val);
set @i =1;
while (@i <= @l)
begin
   set @m=1;
   set @j=1;
   while (@j <=@l-@i)
  begin
    set @m=@m*36;
    set @j = @j +1;
  end
   set @n = @n + (charindex(SUBSTRING(@val,@i,1),'0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ')-1)*@m;
   set @i = @i+1;
end;
RETURN(@n)
end
  
Наверх
ICQ  
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Идентификатор объекта
Ответ #8 - 23. Июля 2007 :: 05:38
Печать  
и ещё попробуй в переди писать dbo.имяфункции
  
Наверх
ICQ  
IP записан
 
Vitaliy
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 19
Зарегистрирован: 23. Января 2007
Re: Идентификатор объекта
Ответ #9 - 23. Июля 2007 :: 05:48
Печать  
Ну хорошо, понял ошибку, а вызвать то ее как ?

Select 
sp_fromhex(Объект.id)
FROM
sc172 as объект

Если так то ошибка:

Сообщение 195, уровень 15, состояние 10, строка 29
sp_fromhex не является известным имя встроенной функции.
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Идентификатор объекта
Ответ #10 - 23. Июля 2007 :: 05:58
Печать  
Функцию я надеюсь ты создал?

а так?
Select   
   dbo.sp_fromhex(Объект.id)
FROM 
  sc172 as объект
  
Наверх
ICQ  
IP записан
 
Vitaliy
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 19
Зарегистрирован: 23. Января 2007
Re: Идентификатор объекта
Ответ #11 - 23. Июля 2007 :: 06:01
Печать  
Спасибо, так заработало
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Идентификатор объекта
Ответ #12 - 23. Июля 2007 :: 06:04
Печать  
Vitaliy писал(а) 23. Июля 2007 :: 06:01:
Спасибо, так заработало


Только какая разница в каком формате у тебя идентификатор в MySql? Пусть был бы текстовый
  
Наверх
ICQ  
IP записан
 
Vitaliy
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 19
Зарегистрирован: 23. Января 2007
Re: Идентификатор объекта
Ответ #13 - 23. Июля 2007 :: 06:32
Печать  
Дело в том что данные выгружаются автоматически при записи документа/объекта (пришлось долго помаяться), и основой была функцией для получения ID была - _strtoid(), те число

сейчас разработка интранет сайта в самом разгаре, мне иногда необходимо просто взять все данные и перевыгрузить (добавляются поля в mysql, переписываются правила), сам понимаешь если выгружать каждый объект - это очень долго.

допустим выгружается документ реализация, по пути к нему выгружаем контрагента из документа, номенклатуру перечисления и тд в общем 3 вида документа - выгружаеться целый день
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Идентификатор объекта
Ответ #14 - 23. Июля 2007 :: 06:37
Печать  
Непонял при чём тут цифровой идентификатор? Как он влияет на скорость Озадачен
  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать