Имя: Пароль:
1C
 
Уникальный идентификатор объекта в 1с77
0 gr_83
 
28.11.07
08:21
Проблема синхронизаций при конвертации документов между управленческой 77 и бухгалтерской 80. Есть ли какой нибудь уникальный идентификатор объекта в 1с77. Кто знает отпишите очень нужно
1 ZanderZ
 
28.11.07
08:23
(0) ЗначениеВСтрокуВнутр сделай и посмотри
2 igork1966
 
28.11.07
08:23
3 gr_83
 
28.11.07
08:28
Кто нибудь пробовал таким образом

Инфо = СоздатьОбъект("AddIn.V7SysInfo");
ГлобальноУникальныйИдентификатор = Инфо.СоздатьGUID();
4 igork1966
 
28.11.07
08:33
(3) Поле соответствующее нужно будет создавать и код править.

Ps. Не знаю что у тебя за проблемы, но некоторые юзают для обменов служебную таблицу УРИБД в которой фиксируются измененые объекты... это не исключает (1,2,3)
5 gr_83
 
28.11.07
08:38
Спсаибо тебе  igork1966 за отклик, жалко не могу по адресу обратится керио не пускает, зарубает сразу
6 igork1966
 
28.11.07
08:43
(5) Это ты про (2)?  Могу сюда копи-пасте.
7 igork1966
 
28.11.07
08:44
(6) +

Внутренние идентификаторы объектов
Функция ПолучитьИД_Вариант1(Объект)
   Перем Стр;
   Стр=ЗначениеВСтрокуВнутр(Объект);
   СЗ=СоздатьОбъект("СписокЗначений");
   СЗ.ИзСтрокиСРазделителями(Сред(Стр,2,СтрДлина(Стр)-2));
   Возврат  СЗ.ПолучитьЗначение(СЗ.РазмерСписка());
КонецФункции
//_____________________________________________________________________________

Функция ПолучитьИД_Вариант2(Объект)
   Перем Стр;
   СЗ=СоздатьОбъект("СписокЗначений");
   СЗ.ДобавитьЗначение("",Объект);
   СЗ.ПолучитьЗначение(1,Стр);
   Возврат Стр;
КонецФункции
//_____________________________________________________________________________

Процедура Сформировать()                    
   // Пусть "Объект" - это реквизит формы типа "Справочник"
   Сообщить("Объект: "+Объект.ТекущийЭлемент());
   Сообщить("Вариант 1: "+ПолучитьИД_Вариант1(Объект.ТекущийЭлемент()));
   Сообщить("Вариант 2: "+ПолучитьИД_Вариант2(Объект.ТекущийЭлемент()));
КонецПроцедуры
//_____________________________________________________________________________

Если нужно получить id в том виде, в котором он хранится в таблицах 1С, воспользуйтесь недокументированной функцией _IdToStr(),
н-р: Сообщить("Вариант 1: "+_IdToStr(ПолучитьИД_Вариант1(Объект.ТекущийЭлемент())));
Подробнее о недокументированных возможностях 1С можно посмотреть здесь.

Необходимо добавить, что если база с использованием УРБД, то система не контролирует уникальность этого идентификационного номера.
Необходимо еще к номеру добавлять место создания, т.е. префикс той базы, где был создан объект.
<замечание от Анатолия Лытькова>

Формат строки, полученной с помощью ф-ии ЗначениеВСтрокуВнутр():

Список = СоздатьОбъект("СписокЗначений");
Список.ДобавитьЗначение("O"); // тип
Список.ДобавитьЗначение("0"); // длина
Список.ДобавитьЗначение("0"); // точность
Список.ДобавитьЗначение("255"); // ИД вида объекта
Список.ДобавитьЗначение("0"); // флаг неотр. (?)
Список.ДобавитьЗначение("0"); // флаг разделения триад (?)
Список.ДобавитьЗначение("9548"); // ИД объекта
Зн = ЗначениеИзСтрокиВнутр("{"+Список.ВСтрокуСРазделителями()+"}")
<cообщил АЛьФ>

Седьмой параметр списка - строка 13 символов:
01-10 ИД вида объекта
11-20 ИД объекта
21-23 ИД информационной базы (УРИБ).
В таком виде он будет, если передавать не Объект.ТекущийЭлемент(), а просто Объект.
<сообщил Балбесс>

Типы объектов:
Неопределенный    "U"
Число      "N"
Строка    "S"
Дата    "D"
<<Справочник>>    "B"
<<Документ>>    "O"
<<Счет>>    "T"
<<ПланСчетов>>    "P"
<<ВидСубконто>>    "K"
<<Календарь>>    "C"
<<ВидРасчета>>    "A"
<сообщил mcltd>
Компьютеры — это как велосипед. Только для нашего сознания. Стив Джобс