Имя: Пароль:
1C
1C 7.7
v7: UID объекта в 7.7
0 Алексей777
 
26.04.12
13:02
Всем привет! Подскажите есть ли в 7.7 аналог метода объекта 1С 8 -УникальныйИдентификатор(). Знаю про метод ЗначениеВСтрокуВнутр. Это тоже самое?
1 Злопчинский
 
26.04.12
13:04
v7plus.dll - смотри СП
2 Злопчинский
 
26.04.12
13:05
(0) вот смотри. откуда 7.7-ик будет знать проо УникальныйИдентификатор() из снеговика? я конечно догадываюсь, что это такое - но не увере. Есои просто получить уникальный ГУИД - то см.(1), если ИД объекта - то немножко по другому...
3 NS
 
26.04.12
13:06
(0) Если тебе нужен уникальный код объекта - тогда гугли внутренний код.
4 ДенисЧ
 
26.04.12
13:08
не совсем. Но близко.
5 Алексей777
 
26.04.12
13:11
Спасибо :). Книга знаний: Получение GUID в 1С - вот нашел ссылочку, сейчас почитаем.
6 ДенисЧ
 
26.04.12
13:12
(5) уууууууу......
7 fisher
 
26.04.12
13:13
(4) +1
(0) Скажем так - значение, возвращаемое методом ЗначениеВСтрокуВнутр() содержит в том числе и UID, хоть и в несколько ином виде, нежели он хранится в БД.
(5) Так тебе UID объекта нужен, и произвольный GUID в 7.7 получить?
8 fisher
 
26.04.12
13:13
"или произвольный GUID в 7.7 получить?"
9 Алексей777
 
26.04.12
13:15
(8)нет просто нужен uid, получать новый не нужно :)
10 Алексей777
 
26.04.12
13:16
(7) т.е. метод ЗначениеВСтрокуВнутр() в принципе подходит?
11 Алексей777
 
26.04.12
13:17
(7)имею ввиду для уникальной идентификации объектов.
12 ДенисЧ
 
26.04.12
13:17
(10) MetaDataWork.ЗначениеВСамуюДлиннуюСтрокуБД() - даст тебе полный "uid"
13 NS
 
26.04.12
13:17
(10) Подходит, но с последующей обработкой.
14 fisher
 
26.04.12
13:17
(10) Да посмотри наконец на его значение и всё понятно станет. Это обычная строка, результат сериализации UID и доп-данных.
15 NS
 
26.04.12
13:19
Стр=ЗначениеВСтрокуВнутр(Объект);
СЗ=СоздатьОбъект("СписокЗначений");
СЗ.ИзСтрокиСРазделителями(Сред(Стр,2,СтрДлина(Стр)-2));  
UID=формат(СЗ.ПолучитьЗначение(4),"Ч(0)5")+Формат(сокрлп(СЗ.ПолучитьЗначение(СЗ.РазмерСписка())),"Ч(0)9");
16 NS
 
26.04.12
13:29
Чтоб обратно получить документ по UID -
ВидДок       = Строка(Число(Сред(UID,1,5)));
КодДок       = Строка(Число(Сред(UID,6,9)));
КодДок = ДобавитьСправа(КодДок,СтрДлина(КодДок)+3," ");
КодДок = ДобавитьСлева(КодДок,13," ");
Список = СоздатьОбъект("СписокЗначений");
Список.ДобавитьЗначение("O"); // тип
Список.ДобавитьЗначение("0"); // длина
Список.ДобавитьЗначение("0"); // точность
Список.ДобавитьЗначение(ВидДок); // ИД вида объекта
Список.ДобавитьЗначение("0"); // флаг неотр. (?)
Список.ДобавитьЗначение("0"); // флаг разделения триад (?)
Список.ДобавитьЗначение(КодДок); // ИД объекта
Зн = ЗначениеИзСтрокиВнутр("{"+Список.ВСтрокуСРазделителями()+"}");
17 NS
 
26.04.12
13:30
Функция ДобавитьСлева(ИсходнаяСтрока,Длина,Заполнитель) Экспорт
   // Эта функция дополняет ИсходнаяСтрока до необходимой Длина указанным Заполнитель
   РезультирующаяСтрока=ИсходнаяСтрока;
   Пока СтрДлина(РезультирующаяСтрока)<=Длина Цикл
       РезультирующаяСтрока=Заполнитель+РезультирующаяСтрока;
   КонецЦикла;
   РезультирующаяСтрока=Прав(РезультирующаяСтрока,Длина);
   Возврат РезультирующаяСтрока;
КонецФункции

//-------------------------------------------------------------------------------
Функция ДобавитьСправа(ИсходнаяСтрока,Длина,Заполнитель) Экспорт
   // Эта функция дополняет ИсходнаяСтрока до необходимой Длина указанным Заполнитель
   РезультирующаяСтрока=ИсходнаяСтрока;
   Пока СтрДлина(РезультирующаяСтрока)<=Длина Цикл
       РезультирующаяСтрока=РезультирующаяСтрока+Заполнитель;
   КонецЦикла;
   РезультирующаяСтрока=Лев(РезультирующаяСтрока,Длина);
   Возврат РезультирующаяСтрока;
КонецФункции
18 ДенисЧ
 
26.04.12
13:30
(17) У тебя жена устроилась на бисерную фабрику?
19 Алексей777
 
26.04.12
13:33
Спасибо NS.
20 NS
 
26.04.12
13:49
(18) Специалист по бисеру О_О
Нет, бисер старые клиенты по блату поставляют.