Имя: Пароль:
1C
1C 7.7
v7: Найти объект по идентификатору
,
0 MUXACb
 
30.09.11
13:31
Добрый день.

Как можно найти объект по его заранее полученному идентификатору?

Идентификатор получаю по алгоритму:
   Список = СоздатьОбъект("СписокЗначений");
   Список.ДобавитьЗначение("",Объект);
   Список.ПолучитьЗначение(1,Стр);
   
   ID = _IdToStr(Стр);
1 PR
 
30.09.11
13:32
_StrToId?
2 Эльниньо
 
30.09.11
13:37
ЗначениеВСтроку() и ЗначениеИзСтроки()
3 MUXACb
 
30.09.11
13:47
(1)

Объект = Поступление ТМЦ СТ00000002 (22.02.07)
Стр = "        79   "
_IdToStr(Стр) = "    27"
_StrToId("    27") = 79

(2)

ЗначениеВСтроку(Объект) = "{"Документ","ПоступлениеТМЦ","СТ00000002","22.02.2007"}"
ЗначениеИзСтроки("{"Документ","ПоступлениеТМЦ","СТ00000002","22.02.2007"}")  = Ошибка в выражении!

ЗначениеИзСтроки(ЗначениеВСтроку(Объект) )  = Поступление ТМЦ СТ00000002 (22.02.07)
ЗначениеИзСтроки(СтрЗаменить("{"Документ","ПоступлениеТМЦ","СТ00000002","22.02.2007"}", """, """") = Ошибка в выражении!

Даже если заработает - очень длинная строка. Как быть если поменяют номер или дату документа?
ID объекта записывается в SQL базу.
4 Mikeware
 
30.09.11
13:48
ЗначениеВСтрокуВнутр() и наеборот....
5 MUXACb
 
30.09.11
13:56
(4)

ЗначениеВСтрокуВнутр(Объект) = "{"O","0","0","1582","0","0","        79   "}"
ЗначениеИзСтрокиВнутр("{"O","0","0","1582","0","0","        79   "}") = Ошибка в выражении!
ЗначениеИзСтрокиВнутр("{""O"",""0"",""0"",""1582"",""0"",""0"",""        79   ""}") = Поступление ТМЦ СТ00000002 (22.02.07)
ЗначениеИзСтрокиВнутр(СтрЗаменить("{"O","0","0","1582","0","0","        79   "}", """, """")) = Ошибка в выражении!

Чем добавлять дополнительные кавычки? СтрЗаменить не отрабатывает.
6 Mikeware
 
30.09.11
13:59
(5) Во-первых, все отрабатывает. Во-вторых, что у тебя есть? в третьих,что хочешь получить? в четвертых, ТКВ®
7 1Сергей
 
30.09.11
14:13
(5) """" = "
8 MUXACb
 
30.09.11
14:16
(5) Есть база ТиС
Часть данных нужно передавать в SQL и забирать оттуда(есть набор таблиц). Нужно передавать и получать уникальные идентификаторы объектов(справочники, документы) для синхронизации объектов
9 filh
 
30.09.11
14:18
как то в прошлом поднималась такая тема еще в кв проде занесли...
10 Mikeware
 
30.09.11
14:29
(8) Программист без знания русского языка? :-)
-----------
вообще, уникальный ив - это седьмой параметр. Только учитывай, что для документов онн уникален для всех типов, а для справочников - в пределах вида.
11 MUXACb
 
30.09.11
14:32
(8) Как по значению седьмого параметра можно получить ссылку на объект в базе 7.7?
12 MUXACb
 
30.09.11
14:32
(8) -> (10)
13 Mikeware
 
30.09.11
14:41
(12) Я вроде по-русски написал, что нужно знать еще и тип и вид объекта...
Для агрегатных типов ЗначениеВСтрокуВнутр(Объект) = "{<ТипОбъекта>,"0","0",<ВидОбъекта>","0","0",<ИдОбъекта>}"
Ну и наеборот Объект = ЗначениеИзСтрокиВнутр("{<ТипОбъекта>,"0","0",<ВидОбъекта>","0","0",<ИдОбъекта>}")
14 FN
 
30.09.11
14:56
Если религия не мешает, то можно заюзать 1С++
МетаДатаВорк=СоздатьОбъект("MetaDataWork");
ЗначениеВСтрокуБД(<Object>)
ЗначениеИзСтрокиБД(<TypeKind>,<KindVal>,<strVal>)
15 Mikeware
 
30.09.11
15:00
(14) Все равно нужно знать тип. Даже для ЗначениеВДлиннуюСтрокуБД()-ЗначениеИзДлиннойСтрокиБД()
16 MUXACb
 
30.09.11
15:20
Спаибо за помощь! Буду пробовать предложенные варианты
17 Torquader
 
01.10.11
16:57
(13) Тип объекта - одна буква для хранимых в базе объектов, а ВидОбъекта и ИдОбъекта - просто числа, если не считать трёх символов кода УРБД в конце Ид, который в нераспределённой базе содержит три пробела.
Также можно встретить объекты общего вида (документы и справочники), у которых ВидОбъекта=0, а в записи ИдОбъекта записаны вид и ид объекта просто подряд (10 символов вид, 10 символов Ид и три символа код базы).
18 Torquader
 
01.10.11
16:59
(17)Всё это было написано для того, чтобы объяснить, что для сохранения ссылки на объект достаточно 24 символа (можно меньше, если числа перегнать в строки с помощью IdToStr)
19 smaharbA
 
01.10.11
17:14
(17) не бывает такого когда ИДВида=0
.ТекущийДокумент()
.ТекущийЭлемент()

Рулят !