Имя: Пароль:
1C
1C 7.7
v7: получение справочника по ID, поправьте функцию
0 Холст
 
16.01.12
13:47
Функция ПолучитьОбъект(ИД, Вид)
   тСпр = СоздатьОбъект("Справочник."+Вид);
   Сообщить(ЗначениеВСтрокуВнутр(тСпр));
   СЗопора = ЗначениеИзСтрокиВнутр("{""VL"",{}}");//СЗ
   СЗопора.ИзСтрокиСРазделителями(ЗначениеВСтрокуВнутр(тСпр));
   ИДтипа = СЗопора.ПолучитьЗначение(1);
   ИДвида = СЗопора.ПолучитьЗначение(4);
   Список = СоздатьОбъект("СписокЗначений");
   Список.ДобавитьЗначение(ИДтипа); // тип
   Список.ДобавитьЗначение("0"); // длина
   Список.ДобавитьЗначение("0"); // точность
   Список.ДобавитьЗначение(ИДвида); // ИД вида объекта
   Список.ДобавитьЗначение("0"); // флаг неотр. (?)
   Список.ДобавитьЗначение("0"); // флаг разделения триад (?)
   Список.ДобавитьЗначение(СокрЛП(ИД)); // ИД объекта
   Зн = ЗначениеИзСтрокиВнутр("{"+Список.ВСтрокуСРазделителями()+"}");
   Сообщить(СокрЛП(Зн));
   Сообщить(Зн.Код);
   Возврат(Зн);
КонецФункции //ПолучитьОбъет
1 Холст
 
16.01.12
13:47
решение где то рядом, но чтото не дается
2 Shaman100M
 
16.01.12
13:51
Функция ПолучитьОбъектПоИД(ИД,ВидСпр)
   ПустЗнач = ЗначениеВСтрокуВнутр(ПолучитьПустоеЗначение("Справочник." + ВидСпр));
   Возврат ЗначениеИзСтрокиВнутр(Лев(ПустЗнач,СтрДлина(ПустЗнач) - 15)) + ИД + """}";
КонецФункции //
3 Ёпрст
 
гуру
16.01.12
13:53
(0) в ИДтипа и ИДвида  - у тебя мусор
4 Shaman100M
 
16.01.12
13:54
+ (2) скобочку, конечно же, в конец строки :

Возврат    ЗначениеИзСтрокиВнутр(Лев(ПустЗнач,СтрДлина(ПустЗнач) - 15) + ИД + """}");
5 Mikeware
 
16.01.12
13:58
этта... а ид в 36-ричный вид преобразовывать ужо не надо? Ну и т.д.
6 Ёпрст
 
гуру
16.01.12
13:58
гораздо проще так:
мд.ЗначениеИзСтрокиБД
7 Mikeware
 
16.01.12
14:03
(6) А вдруг у него 1с++ нет, и религия не позволяет..
8 Rie
 
16.01.12
14:05
Для полноты картины есть _StrToId и _IdToStr.
9 Ёпрст
 
гуру
16.01.12
14:07
(7) тогда не ясно, зачем ему вообще могут понадобится унутренние идентификаторы объектов.
10 Shaman100M
 
16.01.12
14:17
(5) в (0) про это не сказано, и, судя по коду, может и не надо. )) А так (8).
(9) ну, может, хранить где-нить ссылку на объект в текстовом виде, для синхронизации, например.
11 Mikeware
 
16.01.12
14:40
(10) 1. Не сказано, но "классически" id подразумевается в 36-ричном виде
кроме того, в (8) нет указаний на ид базы создания. а он тоже входи в ид объекта.
2. Ну ведь как-то он должен ее получить....
12 Холст
 
16.01.12
15:04
Спасибо помогли,
ИД брался из файла обмена УРИБ, там ИД в виде "12043|PEC",
поэтому код несколько изменился

Функция ПолучитьОбъектПоИД(ИД,ВидСпр)
   сИД = СтрЗаменить(СокрЛП(ИД),"|",РазделительСтрок);
   резИД = Формат(СтрПолучитьСтроку(сИД,1),"С10")+СтрПолучитьСтроку(сИД,2);
   
   ПустЗнач = ЗначениеВСтрокуВнутр(ПолучитьПустоеЗначение("Справочник." + ВидСпр));
   Зн = ЗначениеИзСтрокиВнутр(Лев(ПустЗнач,СтрДлина(ПустЗнач) - 15) + резИД + """}");
   //Сообщить(СокрЛП(Зн));
   //Сообщить(Зн.Код);
   Возврат Зн;
КонецФункции
13 Холст
 
16.01.12
15:06
на выходе это делается некий "просмотрщик" объектов, присланных по УРБД
14 Mikeware
 
16.01.12
15:07
(12)анапуркуа
сИД = СтрЗаменить(СокрЛП(ИД),"|",РазделительСтрок);
 резИД = Формат(СтрПолучитьСтроку(сИД,1),"С10")+СтрПолучитьСтроку(сИД,2)
??????????????

СтрЗаменить(СокрЛП(ИД),"|","") - не проще?
15 Ёпрст
 
гуру
16.01.12
15:07
(12) на нимфостарте валяется готовая поделка пдля просмотра файлов уриба - что прилетело в файле обмена.
16 Mikeware
 
16.01.12
15:09
(13) таких "порсмотрщиков" если и не дофига, то с пяток будет....
месье - любитель велосипедов?
17 filh
 
16.01.12
15:09
(13) есть готовая поделка, только не помню название.
18 Холст
 
16.01.12
15:11
(14) СтрЗаменить(СокрЛП(ИД),"|","") - не взлетело
(15) не нашел ((
19 Холст
 
16.01.12
15:17
20 dk
 
16.01.12
15:25
делал такую фигню
но как-то попроще
1. создавал пустую ссылку через ПолучитьПустоеЗначение("Справочник.ххх");
2. получал ЗначениеВстрокуВнутр(ПустаяСсылка);
3. подменял пустую ссылку на нужную
и тут варианты - смотря в каком виде у тебя внутренний приходит
варианты с отделением правых 3-х символов и преобразованием оставшейчся части через _StrToId или _IdToStr
21 Shaman100M
 
16.01.12
15:30
(11) Видишь, все же не понадобилось. ;)
Проблемы невозможно решaть нa том же уровне компетентности, нa котором они возникaют. Альберт Эйнштейн