Владимир: Блог


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



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

 

(с) интернет

1С - Недокументированные возможности

_IdToStr(<?>)
Синтаксис:
_IdToStr(<Ид>)
Назначение:
Возвращает строку - результат преобразования 10-тичного значения в 36-ричное.
Параметры:
<Ид> - выражение со значением типа число.

_StrToID(<?>)
Синтаксис:
_StrToID(<Строка>)
Назначение:
Возвращает число - результат преобразования 36-ричного значения в 10-тичное.
Параметры:
<Строка> - выражение со значением типа строка.

_GetPerformanceCounter()
Синтаксис:
_GetPerformanceCounter()
Назначение:
Возвращает число миллисекунд (1000-чных долей секунды) прошедших с момента включения компьютера.
Замечание:
Разница между значениями двух замеров позволяет определить количество миллисекунд прошедших между замерами.

ЗначениеФункции(<?>) Англоязычный синоним: FunctionValue(<?>)
Синтаксис:
ЗначениеФункции(<НомФункции>)
Назначение:
Метод объекта "Запрос". Возвращает значение функции для текущей группировки.
Параметры:
<НомФункции> - выражение, содержащее порядковый номер функции в запросе.

ЗначениеГруппировки(<?>)
Синтаксис:
ЗначениеГруппировки()
Назначение:
Метод объекта "Запрос". Возвращает значение текущей группировки.
Параметры:
<НазваниеГруппировки> - выражение, содержащее название группировки в запросе.
Пример использования здесь

Атрибут объекта Форма МногострочнаяЧасть. Англоязычный синоним MultyColumn.
Значение атрибута МногострочнаяЧасть представляет собой ссылку на элемент диалога документа - табличную часть. К атрибуту МногострочнаяЧасть применим метод Видимость().
Пример:
Форма.МногострочнаяЧасть.Видимость((Форма.МногострочнаяЧасть.Видимость()+1)%2);

Атрибут контекста модуля формы КонтекстПодбора. Англоязычный синоним ContextOfPermanentChoose.
Значение атрибута КонтекстПодбора содержит контекст формы подбора, открытой последним вызовом метода ОткрытьПодбор(). С помощью значения этого контекста можно произвольно манипулировать формой подбора, пока она открыта. Пока форма открыта, тип значения данного параметра равен 100 (см. ТипЗначения), если закрыта -0.
Пример:
Если ТипЗначения(КонтекстПодбора)=100 Тогда
КонтекстПодбора.Форма.Закрыть();
КонецЕсли;

Метод ВключитьSQL(<?>). Англоязычный синоним EnableSQL(<?>).
Метод можно использовать для объектов типа Регистр и Запрос, созданных функцией СоздатьОбъект. Метод имеет один необязательный параметр

В каждой форме можно задать СВОЮ обработку ожидания, которая будет действовать до тех пор, пока открыта форма. Вызов необходимо осуществлять след. образом:
Форма.ОбработкаОжидания("НужнаяПроцедура",ИнтервалВызова);

 

(с)  интернет