Имя: Пароль:
1C
 
7.7 как по внутреннему идентификатору документа получить объект?
0 DenIv
 
27.02.08
11:51
Добрый день.
Есть перечень вв. идент. документов, как ср-вами 1С получить представление объектов??

Заранее признателен
1 Конь в пальто
 
27.02.08
11:55
значениеизстрокивнутр()
2 Guk
 
27.02.08
12:00
Список = СоздатьОбъект("СписокЗначений");
Список.ДобавитьЗначение("O"); // тип
Список.ДобавитьЗначение("0"); // длина
Список.ДобавитьЗначение("0"); // точность
Список.ДобавитьЗначение("255"); // ИД вида объекта
Список.ДобавитьЗначение("0"); // флаг неотр. (?)
Список.ДобавитьЗначение("0"); // флаг разделения триад (?)
Список.ДобавитьЗначение("9548"); // ИД объекта
Зн = ЗначениеИзСтрокиВнутр("{"+Список.ВСтрокуСРазделителями()+"}")
<cообщил АЛьФ>
3 dk
 
27.02.08
12:01
(1)+
_IdToStr() и _StrToId могут пригодиться
4 Sadovnikov
 
27.02.08
12:02
ЗначениеИзСтрокиБД(..)
ЗначениеИзДлиннойСтрокиБД(..)
5 Конь в пальто
 
27.02.08
12:03
(4) не штатно
6 Sadovnikov
 
27.02.08
12:06
(5) И что? (0) штатно ID-ки получил?
7 ВторНик
 
27.02.08
12:06
+4 забыл добавить про 1С++
8 ВторНик
 
27.02.08
12:07
(0) покажи свой
> перечень вв. идент. документов
9 Конь в пальто
 
27.02.08
12:07
(6) а что? значениевстрокувнутр()
10 Sadovnikov
 
27.02.08
12:08
(9) Тогда бы он не спрашивал, как обратно объекты получить...
11 DenIv
 
27.02.08
12:17
на сам деле ошибся нужно представление справочника, идея в том, что в Переф. базе админ сделал удаление объектов, мне нужно в центре оценить что он сцукко удалил, в файле обмена есть узел где удаляемые объекты перечислены в сл. виде:
{"Deleted References",
{13905,
{"200|МС0"},

т.е. 13905 - видимо справочник SC13905 а вот вн. ИД не пойму в каком виде
12 DenIv
 
27.02.08
12:25
(2) тип справочник какое значение ?
13 Guk
 
27.02.08
12:32
(12) "В"...
14 DenIv
 
27.02.08
12:36
а как насчет вн. кода 200|МС0 как преобразовывать?
15 Конь в пальто
 
27.02.08
12:40
"200"
16 Cap_1977
 
27.02.08
12:55
(11) "200|МС0" - здесь "200" - внутренний ИД; "МС0" - префикс БД
17 ВторНик
 
27.02.08
12:56
рассказать в (0) то что пишешь в (11) не судьба...?
18 Cap_1977
 
27.02.08
12:58
Функция глВернутьСсылкуНаЭлементПоЕгоИД(пИД, пИдентификаторОбъектаВСКЛ ,пТипОбъекта) Экспорт
   
    // пИД - это ID элемента в SQL
    // пИдентификаторОбъектаВСКЛ - это строковое выражение, идентификатор вида объека в SQL
    // пТипОбъекта - это строковое выражение описывающее тип объекта ("Документ", "Справочник", "Регистр" и т.д.)
   
    НайденныйОбъект = "";
   
    Если    (ПустоеЗначение(пИД)            = 1)
    Или    (ПустоеЗначение(пТипОбъекта)    = 1)
    Тогда
         
         Возврат НайденныйОбъект;
         
    КонецЕсли;
   
    КодБазы                    = Прав(пИД, 3);      
    ПустойОбъектВида            = ЗначениеВСтрокуВнутр(ПолучитьПустоеЗначение(пТипОбъекта));
    ПустойОбъектВида            = Лев(ПустойОбъектВида, 14) + СокрЛП(пИдентификаторОбъектаВСКЛ) + Сред(ПустойОбъектВида, 16, 11) + Прав(ПустойОбъектВида, 15);
    ОбъектВнутреннегоФормата    = Строка(_StrToId(Лев(пИД,6))) + КодБазы;
   
    Пока СтрДлина(ОбъектВнутреннегоФормата) < 13 Цикл
         
         ОбъектВнутреннегоФормата = " " + ОбъектВнутреннегоФормата;
         
    КонецЦикла;        
   
    НайденныйОбъект = ЗначениеИзСтрокиВнутр(Лев(ПустойОбъектВида, СтрДлина(ПустойОбъектВида) - 16) + """" + ОбъектВнутреннегоФормата + """}");
   
    Возврат НайденныйОбъект;
   
КонецФункции


глВернутьСсылкуНаЭлементПоЕгоИД("200|МС0", 13905, "Справочник")
19 DenIv
 
27.02.08
13:48
(18) не ищет :(
20 Конь в пальто
 
27.02.08
13:49
а он у тя есть в базе-то?
21 dk
 
27.02.08
13:51
(19) Ты его так-то (вручную) не пробовал найти? База дбф или скл?
22 DenIv
 
27.02.08
13:52
у меня вопрос
ОбъектВнутреннегоФормата    = Строка(_StrToId(Лев(пИД,6))) + КодБазы
Лев(пИД,6)
ведь пИД то различной длины будет
23 DenIv
 
27.02.08
13:55
и разве _StrToId нужно использовать ведь, в нашем случае 200 это 10-тиричное представление 36-тишестиричного?
24 DenIv
 
27.02.08
13:56
скл запросом находит без проблем
25 dk
 
27.02.08
13:58
(24) Значит в 36-ричное уже не надо преобразовывать
26 Конь в пальто
 
27.02.08
13:58
(23) нужно
(22) почему?
27 DenIv
 
27.02.08
14:08
и почему
СтрДлина(ОбъектВнутреннегоФормата) < 13
у меня id - varchar(9)
28 Cap_1977
 
27.02.08
14:14
(27) - 13 - это 9 + 4, 4 в данном случае идентификатор типа объекта
29 DenIv
 
27.02.08
14:18
а почему чать объектов не находт, хотя в скуле точно селектом отбирает
30 DenIv
 
27.02.08
14:21
(29)
select * from sc13905 where id = '    89БАР'
293        89БАР       7GOЦИБ    0    0         0    AQ5  
а вот
ЗначениеИзСтрокиВнутр("{"B","0","0","13905","0","0","    89БАР"}")
пишет что объект не найден ???
31 dk
 
27.02.08
14:30
ЗначениеИзСтрокиВнутр("{"B","0","0","13905","0","0","   297БАР"}")
?
32 DenIv
 
27.02.08
14:33
(31) не понял почему 297
33 dk
 
27.02.08
14:34
трудно попробовать?
Это "89" из 36-й в 10-ю систему
34 DenIv
 
27.02.08
14:44
дык в ЗначениеИзСтрокиВнутр
мы должны передавать именно 36-тиричное значение а не 10
35 dk
 
27.02.08
14:44
кто тебе такое сказал? :)
36 DenIv
 
27.02.08
14:52
ну так скажите что в итоге передавать в качестве параметра в ЗначениеИзСтрокиВнутр? 10 или 36 значение?
37 Конь в пальто
 
27.02.08
14:52
10
38 dk
 
27.02.08
14:53
(36) 10-е + код периферийки, (31) попробовал?
39 DenIv
 
27.02.08
14:56
ТОГДА ОБЪЯСНИТЕ ПОЖ. ЗАЧЕМ П Ф-ЦИИ ИЗ (18)
ОбъектВнутреннегоФормата    = Строка(_StrToId(Лев(пИД,6))) + КодБазы;
ПРЕОБРАЗОВАНИЕ
40 Ёпрст2
 
27.02.08
15:14
(39)
ID документа в 36-ричной системе счисления. Тип - Строка(9).
# 9 символов – определен тип и вид объекта (например «Справочник.Клиенты»), в ID включается только порядковый номер в 36-ричной системе исчисления. Под порядковый номер отводятся первые 6 символов, последние 3 символа зарезервированы под код базы УРБД.

Соответственно, для ЗначениеИзСтрокиВнутр передаешь 10-ое, отсюда и _StrToId