|   |   | 
| 
 | 7.7 как по внутреннему идентификатору документа получить объект? | ☑ | ||
|---|---|---|---|---|
| 0
    
        DenIv 27.02.08✎ 11:51 | 
        Добрый день.
  Есть перечень вв. идент. документов, как ср-вами 1С получить представление объектов?? Заранее признателен | |||
| 1
    
        Конь в пальто 27.02.08✎ 11:55 | 
        значениеизстрокивнутр()     | |||
| 2
    
        Guk 27.02.08✎ 12:00 | 
        Список = СоздатьОбъект("СписокЗначений");
  Список.ДобавитьЗначение("O"); // тип Список.ДобавитьЗначение("0"); // длина Список.ДобавитьЗначение("0"); // точность Список.ДобавитьЗначение("255"); // ИД вида объекта Список.ДобавитьЗначение("0"); // флаг неотр. (?) Список.ДобавитьЗначение("0"); // флаг разделения триад (?) Список.ДобавитьЗначение("9548"); // ИД объекта Зн = ЗначениеИзСтрокиВнутр("{"+Список.ВСтрокуСРазделителями()+"}") <cообщил АЛьФ> | |||
| 3
    
        dk 27.02.08✎ 12:01 | 
        (1)+
  _IdToStr() и _StrToId могут пригодиться | |||
| 4
    
        Sadovnikov 27.02.08✎ 12:02 | 
        ЗначениеИзСтрокиБД(..)
  ЗначениеИзДлиннойСтрокиБД(..) | |||
| 5
    
        Конь в пальто 27.02.08✎ 12:03 | 
        (4) не штатно     | |||
| 6
    
        Sadovnikov 27.02.08✎ 12:06 | 
        (5) И что? (0) штатно ID-ки получил?     | |||
| 7
    
        ВторНик 27.02.08✎ 12:06 | 
        +4 забыл добавить про 1С++     | |||
| 8
    
        ВторНик 27.02.08✎ 12:07 | 
        (0) покажи свой 
  > перечень вв. идент. документов | |||
| 9
    
        Конь в пальто 27.02.08✎ 12:07 | 
        (6) а что? значениевстрокувнутр()     | |||
| 10
    
        Sadovnikov 27.02.08✎ 12:08 | 
        (9) Тогда бы он не спрашивал, как обратно объекты получить...     | |||
| 11
    
        DenIv 27.02.08✎ 12:17 | 
        на сам деле ошибся нужно представление справочника, идея в том, что в Переф. базе админ сделал удаление объектов, мне нужно в центре оценить что он сцукко удалил, в файле обмена есть узел где удаляемые объекты перечислены в сл. виде:
  {"Deleted References", {13905, {"200|МС0"}, т.е. 13905 - видимо справочник SC13905 а вот вн. ИД не пойму в каком виде | |||
| 12
    
        DenIv 27.02.08✎ 12:25 | 
        (2) тип справочник какое значение ?     | |||
| 13
    
        Guk 27.02.08✎ 12:32 | 
        (12) "В"...     | |||
| 14
    
        DenIv 27.02.08✎ 12:36 | 
        а как насчет вн. кода 200|МС0 как преобразовывать?     | |||
| 15
    
        Конь в пальто 27.02.08✎ 12:40 | 
        "200"     | |||
| 16
    
        Cap_1977 27.02.08✎ 12:55 | 
        (11) "200|МС0" - здесь "200" - внутренний ИД; "МС0" - префикс БД     | |||
| 17
    
        ВторНик 27.02.08✎ 12:56 | 
        рассказать в (0) то что пишешь в (11) не судьба...?     | |||
| 18
    
        Cap_1977 27.02.08✎ 12:58 | 
        Функция глВернутьСсылкуНаЭлементПоЕгоИД(пИД, пИдентификаторОбъектаВСКЛ ,пТипОбъекта) Экспорт
  // пИД - это ID элемента в SQL // пИдентификаторОбъектаВСКЛ - это строковое выражение, идентификатор вида объека в SQL // пТипОбъекта - это строковое выражение описывающее тип объекта ("Документ", "Справочник", "Регистр" и т.д.) НайденныйОбъект = ""; Если (ПустоеЗначение(пИД) = 1) Или (ПустоеЗначение(пТипОбъекта) = 1) Тогда Возврат НайденныйОбъект; КонецЕсли; КодБазы = Прав(пИД, 3); ПустойОбъектВида = ЗначениеВСтрокуВнутр(ПолучитьПустоеЗначение(пТипОбъекта)); ПустойОбъектВида = Лев(ПустойОбъектВида, 14) + СокрЛП(пИдентификаторОбъектаВСКЛ) + Сред(ПустойОбъектВида, 16, 11) + Прав(ПустойОбъектВида, 15); ОбъектВнутреннегоФормата = Строка(_StrToId(Лев(пИД,6))) + КодБазы; Пока СтрДлина(ОбъектВнутреннегоФормата) < 13 Цикл ОбъектВнутреннегоФормата = " " + ОбъектВнутреннегоФормата; КонецЦикла; НайденныйОбъект = ЗначениеИзСтрокиВнутр(Лев(ПустойОбъектВида, СтрДлина(ПустойОбъектВида) - 16) + """" + ОбъектВнутреннегоФормата + """}"); Возврат НайденныйОбъект; КонецФункции глВернутьСсылкуНаЭлементПоЕгоИД("200|МС0", 13905, "Справочник") | |||
| 19
    
        DenIv 27.02.08✎ 13:48 | 
        (18) не ищет :(     | |||
| 20
    
        Конь в пальто 27.02.08✎ 13:49 | 
        а он у тя есть в базе-то?     | |||
| 21
    
        dk 27.02.08✎ 13:51 | 
        (19) Ты его так-то (вручную) не пробовал найти? База дбф или скл?     | |||
| 22
    
        DenIv 27.02.08✎ 13:52 | 
        у меня вопрос
  ОбъектВнутреннегоФормата = Строка(_StrToId(Лев(пИД,6))) + КодБазы Лев(пИД,6) ведь пИД то различной длины будет | |||
| 23
    
        DenIv 27.02.08✎ 13:55 | 
        и разве _StrToId нужно использовать ведь, в нашем случае 200 это 10-тиричное представление 36-тишестиричного?     | |||
| 24
    
        DenIv 27.02.08✎ 13:56 | 
        скл запросом находит без проблем     | |||
| 25
    
        dk 27.02.08✎ 13:58 | 
        (24) Значит в 36-ричное уже не надо преобразовывать     | |||
| 26
    
        Конь в пальто 27.02.08✎ 13:58 | 
        (23) нужно
  (22) почему? | |||
| 27
    
        DenIv 27.02.08✎ 14:08 | 
        и почему
  СтрДлина(ОбъектВнутреннегоФормата) < 13 у меня id - varchar(9) | |||
| 28
    
        Cap_1977 27.02.08✎ 14:14 | 
        (27) - 13 - это 9 + 4, 4 в данном случае идентификатор типа объекта     | |||
| 29
    
        DenIv 27.02.08✎ 14:18 | 
        а почему чать объектов не находт, хотя в скуле точно селектом отбирает     | |||
| 30
    
        DenIv 27.02.08✎ 14:21 | 
        (29)
  select * from sc13905 where id = ' 89БАР' 293 89БАР 7GOЦИБ 0 0 0 AQ5 а вот ЗначениеИзСтрокиВнутр("{"B","0","0","13905","0","0"," 89БАР"}") пишет что объект не найден ??? | |||
| 31
    
        dk 27.02.08✎ 14:30 | 
        ЗначениеИзСтрокиВнутр("{"B","0","0","13905","0","0","   297БАР"}")
  ? | |||
| 32
    
        DenIv 27.02.08✎ 14:33 | 
        (31) не понял почему 297     | |||
| 33
    
        dk 27.02.08✎ 14:34 | 
        трудно попробовать?
  Это "89" из 36-й в 10-ю систему | |||
| 34
    
        DenIv 27.02.08✎ 14:44 | 
        дык в ЗначениеИзСтрокиВнутр 
  мы должны передавать именно 36-тиричное значение а не 10 | |||
| 35
    
        dk 27.02.08✎ 14:44 | 
        кто тебе такое сказал? :)     | |||
| 36
    
        DenIv 27.02.08✎ 14:52 | 
        ну так скажите что в итоге передавать в качестве параметра в ЗначениеИзСтрокиВнутр? 10 или 36 значение?     | |||
| 37
    
        Конь в пальто 27.02.08✎ 14:52 | 
        10     | |||
| 38
    
        dk 27.02.08✎ 14:53 | 
        (36) 10-е + код периферийки, (31) попробовал?     | |||
| 39
    
        DenIv 27.02.08✎ 14:56 | 
        ТОГДА ОБЪЯСНИТЕ ПОЖ. ЗАЧЕМ П Ф-ЦИИ ИЗ (18)
  ОбъектВнутреннегоФормата = Строка(_StrToId(Лев(пИД,6))) + КодБазы; ПРЕОБРАЗОВАНИЕ | |||
| 40
    
        Ёпрст2 27.02.08✎ 15:14 | 
        (39) 
  ID документа в 36-ричной системе счисления. Тип - Строка(9). # 9 символов – определен тип и вид объекта (например «Справочник.Клиенты»), в ID включается только порядковый номер в 36-ричной системе исчисления. Под порядковый номер отводятся первые 6 символов, последние 3 символа зарезервированы под код базы УРБД. Соответственно, для ЗначениеИзСтрокиВнутр передаешь 10-ое, отсюда и _StrToId | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |