Имя: Пароль:
1C
 
метаданные - документ или справочник
0 Stim213
 
26.05.11
15:55
имеется ссылка на док или спр. как из ссылки получить "документ" или "справочник"?
1 Evgenchik
 
26.05.11
15:55
ТипЗнч(<Значение>) не предлагать?
2 Stim213
 
26.05.11
15:57
(1) не предлагать. мне нужна на выходе строка "документ" или "справочник". и только
3 Dmitrii
 
гуру
26.05.11
15:58
Если Документы.ТипВсеСсылки().СодержитТип(ТипЗнч(МояСсылка)) Тогда
    Сообщить("Ура! Это ссылка на документ!");
ИначеЕсли Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(МояСсылка)) Тогда
    Сообщить("Ура! Это ссылка на элемент справочника!");
Иначе
    Сообщить("Хрень какая-то");
КонецЕсли;
4 H A D G E H O G s
 
26.05.11
15:59
(3) Медленнно.
5 zbv
 
26.05.11
15:59
Если Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(ссылка)) Тогда

Сообщить("Справочник");

иначеЕсли ...
6 Dmitrii
 
гуру
26.05.11
15:59
(2) извиняюсь - (3) не подходит.
7 truba
 
26.05.11
15:59
через Ссылка.Метаданные().ПолноеИмя()  ;)
8 Dmitrii
 
гуру
26.05.11
16:00
(4) Через Метаданные быстрее будет?
9 H A D G E H O G s
 
26.05.11
16:01
Строка(ТипЗнч(Ссылка))

Учесть многоязыковость.

Ну или:
ЭтоСправочник=Ложь;
ЭтоДокумент=Ложь;
Попытка
Значение=Ссылка.Метаданные().ДлинаНаименования;
ЭтоСправочник=Истина;
Исключение
ЭтоДокумент=Истина;
КонецПопытки
10 H A D G E H O G s
 
26.05.11
16:01
(8) Да.
11 Рэйв
 
26.05.11
16:02
СокрЛП(Лев(Строка(ТипЗнч(ссылка)),Найти(Строка(ТипЗнч(ссылка))," ")))
12 Stim213
 
26.05.11
16:02
(9)1. - точно не сработает
13 Рэйв
 
26.05.11
16:03
(12)В табло работает:)
14 H A D G E H O G s
 
26.05.11
16:03
(12) Че так?
15 Живой Ископаемый
 
26.05.11
16:04
16 H A D G E H O G s
 
26.05.11
16:04
Стим, как тебя еще с работы то не выгнали?
17 Reset
 
26.05.11
16:04
МетаданныеССылки=Ссылка.Метаданные();
Если Метаданные.Документы.Содержит(МетаданныеССылки) тогда
// документ
ИначеЕсли Метаданные.Справочники.Содержит(МетаданныеССылки) тогда
// справочоник
КонецЕсли;
18 Evgenchik
 
26.05.11
16:04
Если Лев(ТипЗнч(МойОбъект),10) = "Справочник" Тогда
сообщить("Справочник");
ИначеЕсли Лев(ТипЗнч(МойОбъект),8) = "Документ" Тогда
сообщить("Документ");
Иначе
Сообщить("что-то");
КонецЕсли;
19 zbv
 
26.05.11
16:05
(14) в 8.2 что на выходе будет ?
20 H A D G E H O G s
 
26.05.11
16:05
(17) Медленно.
21 Живой Ископаемый
 
26.05.11
16:05
(9) 1 работает только в 8.1... в 8.2 не работает
22 rs_trade
 
26.05.11
16:05
(9) а попытки исключения, это быстро?
23 Stim213
 
26.05.11
16:05
(14) ссылка на элемент спр договоры контрагентов вернет:
Строка(ТипЗнч(Ссылка)) = "Договоры контрагентов"

а это совсем другое
24 Живой Ископаемый
 
26.05.11
16:06
нотариально заверенный:
http://screencast.com/t/5aSwV6esIde
25 H A D G E H O G s
 
26.05.11
16:06
(18) Многоязычность не учтена. Вон, в (15) - правильно. xmlтипзнч(). Забыл про него.
26 Stim213
 
26.05.11
16:06
зы. сабж в 8.2
27 Mitriy
 
26.05.11
16:07
Метаданные.Документы.Содержит(Ссылка.Метаданные())
28 truba
 
26.05.11
16:07
Можно попыткой исключением.
Ссылка.Предопределенный
29 H A D G E H O G s
 
26.05.11
16:08
(21) Хммм, не знал.
30 Живой Ископаемый
 
26.05.11
16:08
Ну а теперь рассказывай, зачем нужно (0)...
31 Stim213
 
26.05.11
16:08
(27) спасибо, так и сделаю
32 Mitriy
 
26.05.11
16:08
(17) пардон... просмотрел..
33 Reset
 
26.05.11
16:09
Вариант, иногда использую, но считаю кривым:

Лев(Ссылка.Метаданные().ПолноеИмя(),5)="Докум"
34 Stim213
 
26.05.11
16:09
(30) имеется ссылка на док или спр, нужно по её уид получить comобъект
35 Живой Ископаемый
 
26.05.11
16:09
2(29) используешь в конфах 9.1? :) собираешься переходить на 8.2? :)
36 Живой Ископаемый
 
26.05.11
16:11
эээ...ОбщегоНазначения.РазложитьСтрокуВМассивПодстрок(XMLТипЗнч(мояссылка).ИмяТипа,".")[0]
сразу вернет расововерный DocumentRef или CatalogRef
37 H A D G E H O G s
 
26.05.11
16:11
(35) Нет.
Использую Попытку
38 Reset
 
26.05.11
16:15
Как-то через попытку не комильфо... У меня вызывает неприятие по аналогии:

Вместо

Цена=Сумма/?(Количество=0,1,Количество)

написать

Попытка
Цена=Сумма/Количество;
Исключение
Цена=Сумма;
КонецПопытки;

Впрочем, кому что.
39 Stim213
 
26.05.11
16:18
а нельзя ли получить из ссылки "Документы.АвансовыйОтчет" или "Справочники.Номенклатура" ? Чтобы не добавлять лишние функции
40 truba
 
26.05.11
16:19
(39) Метаданные.ПолноеИмя() ну йопт
41 Reset
 
26.05.11
16:20
(39) Ссылка.Метаданные().ПолноеИмя()

Только придется вставлять "ы" и "и" :)
42 Stim213
 
26.05.11
16:22
(41) вот и вот-то. а без вставки есть методы у объекта?
43 Mitriy
 
26.05.11
16:22
Если Документ Тогда
"Документы." + Ссылка.Метаданные().Имя;
44 truba
 
26.05.11
16:23
Если ЧтоЭто(Ссылка) = "Справочник" Тогда
   Результат = ВставитьИ(Ссылка.Метаданные().ПолноеИмя());
Иначе
   Результат = ВставитьЫ(Ссылка.Метаданные().ПолноеИмя());
КОнецЕсли;
45 Живой Ископаемый
 
26.05.11
16:23
2(39) СтрЗаменить(XMLТипЗнч(Справочники.Контрагенты.ПустаяССылка()).ИмяТипа,"Ref.","s.")
46 Stim213
 
26.05.11
16:28
(45)спасибо
47 Живой Ископаемый
 
26.05.11
16:29
48 Reset
 
26.05.11
16:31
/bravo
По моему, Ископаемый, если напрягется, весь алгоритм УПП может в одну строку завернуть. Ну, от силы в две-три.
49 Живой Ископаемый
 
26.05.11
16:33
понял, пора поработать...
50 Stim213
 
26.05.11
16:36
что-то не понял..
ОбъектМД = "Catalogs.Контрагенты"
Метаданные[ОбъектМД] - поле объекта не обнаружено (Catalogs.Контрагенты)
51 Stim213
 
26.05.11
16:36
при этом Метаданные.Catalogs.Контрагенты отзываются
52 Живой Ископаемый
 
26.05.11
16:38
мда? а типа если написать
Метаданные["Справочники.Контрагенты"] то поле будет обнаружено?
53 Stim213
 
26.05.11
16:39
(52) неа
54 Mitriy
 
26.05.11
16:40
Метаданные["Справочники"]["Контрагенты"]
55 Stim213
 
26.05.11
16:40
(54) точняк
56 Stim213
 
26.05.11
16:41
только как из (45)это получить
57 truba
 
26.05.11
16:41
(0) давай полную задачу!
58 Reset
 
26.05.11
16:41
(50) Потому что нет в метаданных "Справочники.Контрагенты".
Есть "Справочник.Контрагенты".

Теперь тебе надо вырезать букву "и" /CRY
59 truba
 
26.05.11
16:42
тебе нужно реквизиты все собрать этой ссылки при переносе?
60 Mitriy
 
26.05.11
16:42
(58) не поверишь...
61 Reset
 
26.05.11
16:42
в (58) поторопился)
62 Reset
 
26.05.11
16:43
в (57) истина.
63 Живой Ископаемый
 
26.05.11
16:45
Метаданные["Catalogs"]["Контрагенты"]

ПолноеИмяТипа = XMLТипЗнч(Ссылка).ИмяТипа;
ТипОбъекта = СтрПолучитьСтроку(СтрЗаменить(ПолноеИмяТипа,".",Символы.ПС),1);
ВидОбъекта = СтрПолучитьСтроку(СтрЗаменить(ПолноеИмяТипа,".",Символы.ПС),2);
Метаданные[ТипОбъекта][ВидОбъекта];
64 Живой Ископаемый
 
26.05.11
16:46
тьфу ты господи

ПолноеИмяТипа = СтрЗаменить(XMLТипЗнч(Ссылка).ИмяТипа,"Ref.","s.");
ТипОбъекта = СтрПолучитьСтроку(СтрЗаменить(ПолноеИмяТипа,".",Символы.ПС),1);
ВидОбъекта = СтрПолучитьСтроку(СтрЗаменить(ПолноеИмяТипа,".",Символы.ПС),2);
Метаданные[ТипОбъекта][ВидОбъекта];
65 Stim213
 
26.05.11
16:47
(57) задача:
Для каждого стр ИЗ Остатки Цикл
УИН1 = стр.Субконто1.УникальныйИдентификатор();
УИН1Com = База8.NewObject("УникальныйИдентификатор",СТрока(УИН1))
Субконто1Com = База8.Справочники.Контрагенты.ПолучитьСсылку(УИН1Com)

задача - чтобы вместо "Справочники.Контрагенты" стоял вызов нужного объекта МД, определяемого стр.Субконто1
66 aleks-id
 
26.05.11
16:48
Метаданные.НайтиПоПолномуИмени(СтрЗаменить(XMLТипЗнч(Справочники.Контрагенты.ПустаяССылка()).ИмяТипа,"Ref.","."))
67 Reset
 
26.05.11
16:51
(65) Используя результат из (64):

База8[ТипОбъекта][ВидОбъекта].ПолучитьСсылку(УИН1Com)
68 Живой Ископаемый
 
26.05.11
16:56
2(65)
XMLЗначение(ТипЗнч(ПланыСчетов.Хозрасчетный.Вспомогательный),XMLСтрока(ПланыСчетов.Хозрасчетный.Вспомогательный))
69 Живой Ископаемый
 
26.05.11
16:58
Для каждого стр ИЗ Остатки Цикл
База8.XMLЗначение(ТипЗнч(стр.Субконто1),XMLСтрока(стр.Субконто1));
70 Живой Ископаемый
 
26.05.11
16:59
впрочем не наверняка, но истина где-то рядом, Скалли. :)
71 Stim213
 
26.05.11
17:02
(69) ошибка при вызове метода контекста (XMLЗначение)
72 Живой Ископаемый
 
26.05.11
17:06
это из-за ТипЗнч(стр.Субконто1) -так неправильно, нужно поиграться...
например

База8.XMLЗначение(База8.ИзXMLТипа(XMLТипЗнч(стр.Субконто1)),XMLСтрока(стр.Субконто1));
73 Живой Ископаемый
 
26.05.11
17:06
74 Stim213
 
26.05.11
17:09
(73) работает, только не с сом. странно, методы доступны во внешним соединениях..
75 Mitriy
 
26.05.11
17:10
велосипедисты...
76 Живой Ископаемый
 
26.05.11
17:13
ну а просто База8.ИзXMLТипа(XMLТипЗнч(стр.Субконто1))
работает? может дело в том что так просто неправильно писать:
База8.ИзXMLТипа для ком соединения - если пытаемся вызвать функцию глобального контекста?
я просто с ком не работаю обычно
77 Reset
 
26.05.11
17:17
Без преобразования типов в строки не обойтись тут...

Я в таких случаях как в (67) пишу..
78 Reset
 
26.05.11
17:19
"База8.ИзXMLТипа для ком соединения " писать правильно, но и параметры должны быть "тамошними", втупую только просты типы передать можно.

Могу ошибаться....
79 Живой Ископаемый
 
26.05.11
17:20
да все вроде в строках
80 Живой Ископаемый
 
26.05.11
17:20
а, да...XMLТипЗнч(стр.Субконто1) - не строка...
81 Живой Ископаемый
 
26.05.11
17:21
ладно, уже не интересно... :) перестало получаться. :)
82 Stim213
 
26.05.11
17:23
(81) все равно спасибо! Кладезь полезной информации!
83 Mitriy
 
26.05.11
17:25
гыгы... вот и новый ник...
84 Stim213
 
26.05.11
17:34
все работает, кроме одного) о чем надо было подумать в самом начале) что УИН-то перенеслись, но документы разные - в 1.6 и в 2.0 =)
85 Живой Ископаемый
 
26.05.11
17:38
гы