![]() |
![]() |
![]() |
|
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 |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |