Имя: Пароль:
1C
1C 7.7
v7: GUID в 7
0 dan4ik
 
22.04.13
06:19
Приветствую, как получить Уникальный идентификатор объекта в 1с 7.7?
1 dan4ik
 
22.04.13
06:20
Подобие 8, Выборка.Ссылка.УникальныйИдентификатор()
2 Wobland
 
22.04.13
06:23
ты ветку завёл, чтобы удобней было красную Я нажимать?
http://help1c.com/faq/view/552.html
3 el-gamberro
 
22.04.13
06:26
ЗначениеВСтрокуВнутр()
где-то в строке ИД-шник есть
4 dan4ik
 
22.04.13
06:30
Получается так ЗначениеВСтрокуВнутр(Документ.ТекущийДокумент())??
5 Wobland
 
22.04.13
06:31
(4) выходит, где-то там
6 dan4ik
 
22.04.13
06:33
Мда...) Спасибо за помощь)
7 el-gamberro
 
22.04.13
06:37
(6) там не вся строка УИД, а только кусок, точнее самый последний параметр в строке.
8 Рэйв
 
22.04.13
06:57
Функция ПолучитьИД(Нечто)
   Перем Стр;
   Если ПустоеЗначение(Нечто)=1 Тогда
       Возврат "не выбран объект";
   КонецЕсли;    
   
   Ид=СтрЗаменить(СтрЗаменить(ЗначениеВСтрокуВнутр(Нечто),",",РазделительСтрок),"""","");
   Ид=СтрЗаменить(Ид,"{","");
   Ид=СтрЗаменить(Ид,"}","");
   ТбКод=Прав(СтрПолучитьСтроку(Ид,7),3);
   ТбИд=_IdToStr(СтрПолучитьСтроку(Ид,7));
   ТбИдЧисло=ТбИд+ТбКод;
   IDD=СокрЛП(ТбИдЧисло);
   Возврат IDD;
КонецФункции
9 Aleksey
 
22.04.13
07:36
(8) Так короче


Функция ПолучитьID(Объект) Экспорт
   Перем Стр;
   Стр=ЗначениеВСтрокуВнутр(Объект);
   СЗ=СоздатьОбъект("СписокЗначений");
   СЗ.ИзСтрокиСРазделителями(Сред(Стр,2,СтрДлина(Стр)-2));
   Возврат  сокрЛП(_IdToStr(СЗ.ПолучитьЗначение(СЗ.РазмерСписка())));
КонецФункции
10 ЧеловекДуши
 
22.04.13
07:45
Короче, так

Функция ПолучитьДокументПоИдДок(РеквВидИдДок)
   Перем Мета;
   Перем Рез;

   Мета=СоздатьОбъект("MetaDataWork");
   Рез = Мета.ЗначениеИзДлиннойСтрокиБД("Документ",СтрЗаменить(Лев(РеквВидИдДок,13),"%"," "));
   
   Возврат Рез;
КонецФункции    // ПолучитьДокументПоИдДок(РеквВидИдДок)



Функция ПолучитьID_1СПП(ТекЭлем,ЧислоБукв)
   Перем Рез;
   Перем Мета;
   
   Рез = "";
   
   Мета = СоздатьОбъект("MetaDataWork");
   Если ЧислоБукв = 9 Тогда
       Рез = Мета.ЗначениеВСтрокуБД(ТекЭлем);
   ИначеЕсли ЧислоБукв = 13 Тогда
       Рез = Мета.ЗначениеВДлиннуюСтрокуБД(ТекЭлем);
   ИначеЕсли ЧислоБукв = 23 Тогда
       Рез = Мета.ЗначениеВСамуюДлиннуюСтрокуБД(ТекЭлем);
   ИначеЕсли ЧислоБукв = 3 Тогда
       Рез = Прав(Мета.ЗначениеВСтрокуБД(ТекЭлем),3);
   ИначеЕсли ЧислоБукв = 6 Тогда
       Рез = Лев(Мета.ЗначениеВСтрокуБД(ТекЭлем),6);
   КонецЕсли;
   
   Рез = СтрЗаменить(Рез," ","%");
   
   Возврат Рез;
КонецФункции    // ПолучитьID_1СПП(ТекЭлем,13)
11 Aleksey
 
22.04.13
07:55
(10) В каком место твоя портянка требующая наличия дополнительных не штатных ВК короче?
12 ЧеловекДуши
 
22.04.13
07:58
(11) Чего? Сам ты партянка, это халявный 1С++
И неважно, что база будет ДБФ и не будет использоваться интерфейсный механизм запросов.
Просто по скорости получения ИД, этот самый быстрый :)
13 Aleksey
 
22.04.13
08:01
(12) Еще раз это штатная ВК? Нет? Тогда до свидание
14 Rie
 
22.04.13
08:07
(13) А что, можно пользоваться только штатными ВК? Сама концепция ВК как бы намекает, что их могут писать и другие люди.
15 ЧеловекДуши
 
22.04.13
08:15
(13) Да и не смотри... я твои штатные Шатал.
Не для тебя пишу :)
16 Рэйв
 
22.04.13
08:15
(14)Так не факт что у ТС эта вк подключена.
17 Rie
 
22.04.13
08:21
(16) Тут два момента:
1. Кто мешает подключить?
2. Если нужен уникальный ID - то что с ним ТС собирается делать? "Штатные" средства 1С им пользуются невидимо для программиста.
18 Aleksey
 
22.04.13
08:27
(14) Другие <> не все. У некоторых по разным причинам их может и не быть
19 vde69
 
22.04.13
08:29
(17) представь справочник огромный, нужно найти 1 элемент зная его ID, делается это заменой строки и потом СтрокаВнутрВЗначение() работает на ура быстрее любых прямых запросов....
20 Aleksey
 
22.04.13
08:29
(17)
1. Причин много, начина от религии и заканчивая параноей у руководства/админа
2. ТОже что и 1С с ним делает, т.е. для идентификации объекта. Внезапно да?
21 Rie
 
22.04.13
08:36
(19) С этим согласен. Но это уже предполагает знание того, как построить аргумент для ЗначениеИзСтрокиВнутр - а в таком случае вопрос (0) просто не возникнет.
22 Rie
 
22.04.13
08:43
(20) Ну, религия - это дело личное. Но если паранойя у руководства - тут, согласен, действительно могут возникнуть проблемы. (Что не повод априори всем "нештатным" ВК говорить "до свиданья". Как пример - АТОЛовские ВК считать штатными или нет? Или Штриховские?).
23 ЧеловекДуши
 
22.04.13
08:47
(16) Это уже решать ТС, может он одумается и пристрастится к прекрасному :)

А вот ему (0) Еще и обработочка для удобной регистрации ВК:
http://yadi.sk/d/aR0fed5Y4EpN9

Там же и ВК лежат :)
24 Ковычки
 
22.04.13
09:02
СтрокаДействийФормы=Объект;
Сообщить(СтрокаДействийФормы);
25 Ковычки
 
22.04.13
09:05
(9)

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

//-------------------------------------------------------------------------
Функция глПолучитьВидИД(Объект="") Экспорт
// Функция получает ИД вида объекта
// Объект - объект метаданных
   Перем Сп,Тип;
   Тип=ТипЗначения(Объект);
   Если Тип=2 Тогда
       Тмп=ПолучитьПустоеЗначение(Объект);
   ИначеЕсли Тип=12 Тогда
       Тмп=ПолучитьПустоеЗначение("Документ."+Объект.Вид());
   ИначеЕсли Тип=11 Тогда
       Тмп=ПолучитьПустоеЗначение("Справочник."+Объект.Вид());
   ИначеЕсли Тип=10 Тогда
       Тмп=ПолучитьПустоеЗначение("Справочник."+Объект.Вид());
   ИначеЕсли Тип=15 Тогда
       Тмп=ПолучитьПустоеЗначение("Счет."+Объект.Вид());
   ИначеЕсли Тип=1 Тогда
       Возврат Объект;
   КонецЕсли;
   Сп=СоздатьОбъект("СписокЗначений");
   Сп.ИзСтрокиСРазделителями(ЗначениеВСтрокуВнутр(Тмп));
   Возврат Число(Сп.ПолучитьЗначение(4));
КонецФункции    // глПлучитьВидИД(Объект)
26 Mikeware
 
22.04.13
09:32
(19) а зачем тут прямой запрос?
собственно, действия системы будут аналогичны что при ЗначениеИзСтрокиБД, что при формировании из внутреннего представления ЗначениеИзСтрокиВнутр()
-----
а вообще, к ТС - ТрадиционныйКитайскийВопрос™
Ошибка? Это не ошибка, это системная функция.