|   |   | 
| 
 | v7: как получить уид в 7? | ☑ | ||
|---|---|---|---|---|
| 0
    
        Мисти 26.07.19✎ 15:18 | 
        Не могу найти такого волшебного слова!
 Подскажите? | |||
| 1
    
        ДенисЧ 26.07.19✎ 15:22 | 
        А его там нет...
 Максимум значениеВСТрокуВнутр() | |||
| 2
    
        Мисти 26.07.19✎ 15:31 | 
        Как это?? Нет уида??     | |||
| 3
    
        Мисти 26.07.19✎ 15:32 | 
        Реквизиты.ДобавитьЗначение(ЗначениеВстрокуВнутр(Док.Фирма)    , "ФирмаИд"); - похоже, что это то, что мне надо.
 Оно ж вполне уникальное? И повторяемое? | |||
| 4
    
        ptiz 26.07.19✎ 15:32 | 
        Один из примеров:
 Функция ПолучитьID(Ссылка) Перем Стр; Стр=ЗначениеВСтрокуВнутр(Ссылка); СЗ=СоздатьОбъект("СписокЗначений"); СЗ.ИзСтрокиСРазделителями(Сред(Стр,2,СтрДлина(Стр)-2)); Возврат _IdToStr(СЗ.ПолучитьЗначение(СЗ.РазмерСписка())); КонецФункции | |||
| 5
    
        quest 26.07.19✎ 15:33 | 
        (2) Ну вот так - нет. Живи теперь с этим.     | |||
| 6
    
        Мисти 26.07.19✎ 15:38 | 
        _IdToStr - а это что?     | |||
| 7
    
        Мисти 26.07.19✎ 15:39 | 
        опишите, пожалуйста!
 Мне ,наверное, достаточно ЗначениеВстрокуВнутр(Док.Фирма) и использовать эту строку в качестве уникального кода? | |||
| 8
    
        Kigo_Kigo 26.07.19✎ 15:40 | 
        Функция СоздатьGUID()
 TypeLib = CreateObject("Scriptlet.TypeLib"); NewGUID = TypeLib.Guid(); TypeLib = ""; Возврат NewGUID; КонецФункции | |||
| 9
    
        Sserj 26.07.19✎ 15:51 | 
        Ну а если есть стандартная компонента V7Plus то там есть объект V7Sysinfo и у него метод СоздатьGUID()     | |||
| 10
    
        ptiz 26.07.19✎ 15:51 | ||||
| 11
    
        Мисти 26.07.19✎ 16:00 | 
        А мне не надо создать, мне нужно найти.
 Суть в том, что нужно 7 перегрузить в 8, при этом при этом коды "в пределах подчинения", а составной код не проходит по размеру. Или записать составной код в доп. реквизит? | |||
| 12
    
        Kigo_Kigo 26.07.19✎ 16:06 | 
        (11) это чтоле?
 ПолныйКод() Синтаксис: ПолныйКод() Назначение: Возвращает строку, содержащую полный код выбранного элемента справочника со всеми вышестоящими уровнями, разделенными символом /. | |||
| 13
    
        Мисти 26.07.19✎ 16:09 | 
        Полный код в код не встает.
 Хотя в качестве доп. реквизита можно и его, наверное! | |||
| 14
    
        trad 26.07.19✎ 16:15 | 
        ЗначениеВстрокуВнутр - дает уникальный идентификатор в рамках ИБ     | |||
| 15
    
        Kigo_Kigo 26.07.19✎ 16:20 | 
        ПолныйИдентификатор()
 Синтаксис: ПолныйИдентификатор() Назначение: Возвращает полный идентификатор объекта (идентификатор объекта с идентификаторами его родителей через точку). отсекай индетефикаторы родителей и пользуй Уид = Спр.ПолныйИдентификатор() Для А=1 по 10 цикл Если СтрНайти(Уид,".") <> 0 Тогда Уид = Сред(Уид,СтрНайти(Уид,".")); Иначе Возврат Уид; КонецЕсли; КонецЦикла | |||
| 16
    
        Мисти 26.07.19✎ 21:44 | 
        Засада! Для группы есть только "кодДляПоиска", а его длины тоже не хватит.
 Доп. реквизитов-то нет! | |||
| 17
    
        Garykom гуру 26.07.19✎ 21:54 | 
        Составной ключ используй уникальный вместо УИД.     | |||
| 18
    
        Сияющий в темноте 26.07.19✎ 23:35 | 
        тебе коды на кой сдались?
 создай таблицу,где пиши идентификаторы из семерки хоть по полному коду и ему в соответствие гуид из восьмерки,и перегружай ссылки на обьекты по этой таблице. | |||
| 19
    
        Мисти 26.07.19✎ 23:36 | 
        Это я сегодня напишу таблицу, а завтра мы будем заново перегружать...
 Т.е. - во внешнюю таблицу? Ну, это слишком! | |||
| 20
    
        Lazy Stranger 26.07.19✎ 23:40 | 
        может проще поменять в 7-ке все коды на уникальные и потом переставить нумерацию на "по всему справочнику"     | |||
| 21
    
        Мисти 26.07.19✎ 23:48 | 
        в 7 нельзя ничего менять, она на ладан дышит.     | |||
| 22
    
        ДенисЧ 27.07.19✎ 08:15 | 
        Мне бы ваши проблемы...     | |||
| 23
    
        АгентБезопасной Нацио 27.07.19✎ 08:57 | 
        (22) зачем?     | |||
| 24
    
        Cthulhu 27.07.19✎ 09:08 | 
        //------------------------------------------------------------------------------
 // НАЗНАЧЕНИЕ: Получение ID объекта данных (Перечисление,Счет,Справочник,Документ) // ВВЕДЕНИЕ: Перечень ID объекта данных: Тип(1)+Вид(10)+Объект(10)+КодИБ(3) // Полный ID объекта складываетсчя из этих ID в указанном порядке, длина=24 // В случае определенности типа справочника значение имеет только [Объект(10)+КодИБ(3)] // ПАРАМЕТЫ: * тОбъект - объект данных (ВНИМАНИЕ! для выборки - обязательно // "<ВыборкаОбъектов>.Текущий{Счет/Элемент/Документ}()"!) // * тИдСЗ - тип возвращаемого значения (СЗ=0/1/2/3/4, ПолныйИД,ТипИД,ВидИД,ОбъектИД,ИдИБ) // ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ: * Явный возврат: Заданный во втором параметре ID // * Дополнительно: Во втором параметре вызова возвращается СЗ со всеми ID (см.выше) //------------------------------------------------------------------------------ Функция ПолучитьИДыОбъекта(Знач тОбъект,тИдСЗ=0) Экспорт Перем _Ок,тТипВозврата,тСЗ,тТхт; тТхт=ТипЗначенияСтр(тИдСЗ); Если тТхт="СписокЗначений" Тогда тИдСЗ.УдалитьВсе(); тТипВозврата="*"; Иначе Если тТхт="Число" Тогда тТипВозврата=тИдСЗ Иначе тТипВозврата=Число(СокрЛП(тИдСЗ)) КонецЕсли; тИдСЗ=СоздатьОбъект("СписокЗначений"); тТипВозврата=Макс(0,Мин(4,Окр(тТипВозврата,0))); тТипВозврата=?(тТипВозврата=4,"ИдИБ",?(тТипВозврата=3,"ИдОбъекта",?(тТипВозврата=2,"ИдВида",?(тТипВозврата=1,"ИдТипа","*")))); КонецЕсли; тСЗ=СоздатьОбъект("СписокЗначений"); тТхт=ТипЗначения(тОбъект);//ТипЗначенияСтр(тОбъект); Если тТхт=0 Тогда тТхт=ТипЗначенияСтр(тОбъект); ИначеЕсли тТхт=1 Тогда тТхт="Число"; ИначеЕсли тТхт=2 Тогда тТхт="Строка"; ИначеЕсли тТхт=3 Тогда тТхт="Дата"; ИначеЕсли тТхт=10 Тогда тТхт="Перечисление"; ИначеЕсли тТхт=11 Тогда тТхт="Справочник"; ИначеЕсли тТхт=12 Тогда тТхт="Документ"; ИначеЕсли тТхт=13 Тогда тТхт="Календарь"; ИначеЕсли тТхт=14 Тогда тТхт="ВидРасчета"; ИначеЕсли тТхт=15 Тогда тТхт="Счет"; ИначеЕсли тТхт=16 Тогда тТхт="ВидСубконто"; ИначеЕсли тТхт=17 Тогда тТхт="ПланСчетов"; ИначеЕсли тТхт=100 Тогда тТхт=ТипЗначенияСтр(тОбъект) КонецЕсли; Если тТхт="СписокЗначений" Тогда // в Объекте получен СЗ (выдернуть из него ИД-ы) тОбъект.Выгрузить(тСЗ); ИначеЕсли тТхт="Строка" Тогда // в Объекте получено внутреннее представление (=ЗначениеВСТрокуВнутр(<данные>)) тСЗ.ИзСтрокиСРазделителями(Сред(Лев(тОбъект,СтрДлина(тОбъект)-1),2)); ИначеЕсли Найти("СчетПеречислениеСправочникДокумент",тТхт)>0 Тогда // В объекте получен сам обыект данных: тОбъект=ЗначениеВСтрокуВнутр(тОбъект); тСЗ=СоздатьОбъект("СписокЗначений"); тСЗ.ИзСтрокиСРазделителями(Сред(Лев(тОбъект,СтрДлина(тОбъект)-1),2)); Иначе Возврат(""); КонецЕсли; тТхт=СокрЛП(тСЗ.ПолучитьЗначение(1)); // T=счет/O=документ/B=справочник/E=перечисление/U=неопределеннный: Если ПустоеЗначение(тТхт)=1 Тогда тТхт="U" Иначе тТхт=?(Найти("TOBEU",Лев(тТхт,1))=0,"U",Лев(тТхт,1)) КонецЕсли; _Ок=тТхт; тТхт=тСЗ.ПолучитьЗначение(тСЗ.РазмерСписка()); Если СтрДлина(тТхт)=13 Тогда тТхт=Формат(Число(тСЗ.ПолучитьЗначение(4)),"Ч10") Иначе тТхт=Лев(тТхт,10) КонецЕсли; _Ок=_Ок+тТхт; тТхт=тСЗ.ПолучитьЗначение(тСЗ.РазмерСписка()); Если СтрДлина(тТхт)>13 Тогда тТхт=Прав(тТхт,13) КонецЕсли; _Ок=_Ок+Формат(Число(Лев(тТхт,СтрДлина(тТхт)-3)),"Ч10")+Прав(тТхт,3); тИдСЗ.Установить("ИдТипа",Лев(_Ок,1)); тИдСЗ.Установить("ИдВида",Сред(_Ок,2,10)); тИдСЗ.Установить("ИдОбъекта",Сред(_Ок,12,10)); тИдСЗ.Установить("ИдИБ",Прав(_Ок,3)); Если тТипВозврата<>"*" Тогда _Ок=тИдСЗ.Получить(тТипВозврата) КонецЕсли; Возврат(_Ок); КонецФункции //ПолучитьИДыОбъекта //------------------------------------------------------------------------------ // Способы вызова: // - только первый параметр = внутреннее представление // - только первый параметр = Ключ(24) = ИдТипа(1)+ИдВида(10)+ИдОбъекта(10)+ИдИБ(3) // - в параметрах заданы все четре ИД-а Функция ПолучитьОбъектПоИДам(Знач ИдТипа,Знач ИдВида="",Знач ИдОбъекта="",Знач ИдИБ="", Знач тБазаОЛЕ="") Экспорт Перем _Ок; Если ТипЗначенияСтр(ИдТипа)="СписокЗначений" Тогда ИдВида=ИдТипа.Получить("ИдВида"); ИдОбъекта=ИдТипа.Получить("ИдОбъекта"); ИдИБ=ИдТипа.Получить("ИдИБ"); ИдТипа=ИдТипа.Получить("ИдТипа"); Если ТипЗначенияСтр(тБазаОЛЕ)="OLE" Тогда _Ок=тБазаОЛЕ.ValueFromStringInternal("{"""+ИдТипа+""",""0"",""0"",""" +ИдВида+""",""0"",""0"","""+Формат(Число(ИдОбъекта),"Ч10")+Формат(ИдИБ,"С3")+"""}"); Иначе//Если ТипЗначенияСтр(тБазаОЛЕ)<>"OLE" Тогда _Ок=ЗначениеИзСтрокиВнутр("{"""+ИдТипа+""",""0"",""0"",""" +ИдВида+""",""0"",""0"","""+Формат(Число(ИдОбъекта),"Ч10")+Формат(ИдИБ,"С3")+"""}"); КонецЕсли; ИначеЕсли СтрДлина(ИдТипа)=24 Тогда Если Лев(ИдТипа,1)="T" Тогда // Счет - составляется по-другому _Ок="{""T"",""0"",""0"",""0"",""0"",""0"","""+Сред(ИдТипа,2)+"""}"; Иначе//Если Лев(ИдТипа,1)<>"T" Тогда _Ок="{"""+Лев(ИдТипа,1)+""",""0"",""0"","""+Сред(ИдТипа,2,10)+""",""0"",""0"","""+Сред(ИдТипа,12)+"""}"; КонецЕсли; Если ТипЗначенияСтр(тБазаОЛЕ)="OLE" Тогда //_Ок=тБазаОЛЕ.ValueFromStringInternal(_Ок); _Ок=тБазаОЛЕ.EvalExpr("ЗначениеИзСтрокиВнутр("""+СтрЗаменить(_Ок,"""","""""")+""")"); Иначе//Если ТипЗначенияСтр(тБазаОЛЕ)<>"OLE" Тогда _Ок=ЗначениеИзСтрокиВнутр(_Ок); КонецЕсли; ИначеЕсли Лев(ИдТипа,1)="{" Тогда Если ТипЗначенияСтр(тБазаОЛЕ)="OLE" Тогда //_Ок=тБазаОЛЕ.ValueFromStringInternal(ИдТипа); _Ок=тБазаОЛЕ.EvalExpr("ЗначениеИзСтрокиВнутр("""+СтрЗаменить(ИдТипа,"""","""""")+""")"); Иначе//Если ТипЗначенияСтр(тБазаОЛЕ)<>"OLE" Тогда _Ок=ЗначениеИзСтрокиВнутр(ИдТипа); КонецЕсли; КонецЕсли; Возврат(_Ок); КонецФункции //ПолучитьОбъектПоИДам //------------------------------------------------------------------------------ | |||
| 25
    
        АгентБезопасной Нацио 27.07.19✎ 09:10 | 
        И я так и не понял, чем не нравятся преобразования вида и ида с дополнением нулями?     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |