PORTA.ru - on-line магазин ПОРТАтивной техники.PORTA.ru - on-line магазин ПОРТАтивной техники.

Новости
Мои разработки
FAQ
Ссылки
Форум

Внутренние идентификаторы объектов

Функция ПолучитьИД_Вариант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>

- Наверх -

В качестве благодарности за решение проблемы, щелкните здесь.
Поддержите развитие сайта.
Спасибо!
Автор и разработчик: Кайгородов Андрей aka mszsuz. mszsuz@online.sinor.ru ICQ#33993114. Дата последнего обновления страницы: Tuesday 18.05.2004 9:22
1C:TOP-100 Рейтинг ресурсов 1С
Hosted by uCoz