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