Каталог решений - 1С — Внутренние идентификаторы объектов

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

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

В наличии

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

Категория:

Описание

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

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

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

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

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

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

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

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

Типы объектов:
Неопределенный «U»
Число «N»
Строка «S»
Дата «D»
<> «B»
<> «O»
<> «T»
<> «P»
<> «K»
<> «C»
<> «A»

(с) интернет

has been added to your cart:
Оформление заказа