|
Строковое представление типа реквизита | ☑ | ||
---|---|---|---|---|
0
Pakestanez
08.09.14
✎
16:45
|
И снова здрасти! Возможно ли в восьмерке получить строковое представление типа данных? К примеру, у реквизита тип СправочникСсылка.Контрагенты. Нужно получить строку "СправочникСсылка.Контрагент".
|
|||
1
Fish
08.09.14
✎
16:49
|
Возможно
|
|||
2
КонецЦикла
08.09.14
✎
16:50
|
У Дениса купить СП
|
|||
3
Pakestanez
08.09.14
✎
16:57
|
А по делу сказать?
|
|||
4
ДенисЧ
08.09.14
✎
16:58
|
.Метаданные().ПолноеИмя()
(3) с тебя 1000 рублей |
|||
5
Maxus43
08.09.14
✎
17:02
|
переходите на 8.1, там реализовано)
|
|||
6
Pakestanez
08.09.14
✎
17:03
|
(4) это не то, нужно так, как я в первом посте писал.
|
|||
7
Ёпрст
08.09.14
✎
17:03
|
(5) а если у него 8.3 ? даунгрейд ?
|
|||
8
ДенисЧ
08.09.14
✎
17:03
|
(6) Уже проверил?
|
|||
9
Maxus43
08.09.14
✎
17:04
|
(6) тогда (5)
(7) ага... в (0) - стандартное 8.1. Скорей всего у автора код, анализирующий это, пережиток 8.1, и чтоб не разбираться в овнокоде хотит получить представление 8.1... |
|||
10
Pakestanez
08.09.14
✎
17:04
|
(8) проверил, значение "Документ.РеализацияТоваровУслуг.Реквизит.Контрагент"
|
|||
11
Ёпрст
08.09.14
✎
17:07
|
(9) аа... наверное
|
|||
12
Pakestanez
08.09.14
✎
17:12
|
(9) Я объясню, зачем это нужно. Я хочу написать обработку, которая выгружает в XML документы РеализацияТоваровУслуг. Когда она проходит по реквизитам и встречает сыложный тип, например, ссылку на справочник, берет из него тоже все данные и выгружает.
Например, есть документ, в нем используется контрагент, договор контрагента, номенклатура, ну и так далее. Обработка доходит до реквизита, получает тип в том виде, в котором я написал, соответственно, можно будет обратиться к справочнику, выбрать этого контрагента по наименованию, выгрузить все его реквизиты таким же образом. |
|||
13
hhhh
08.09.14
✎
17:17
|
(12) пользуйся КД
|
|||
14
Maxus43
08.09.14
✎
17:17
|
(12) зачем тут вид как в (0)? и зачем искать что-либо по наименованию? У тебя уже есть ссылка на справочник, обходи его реквизиты, выгружай
|
|||
15
Pakestanez
08.09.14
✎
17:17
|
РеализацияТоваровУслуг
... -Контрагент --> ведет в СправочникСсылка.Контрагенты --начинаем выгружать все реквизиты этого контрагента --ОсновнойБанковскийСчет ---начинаем выгружать все реквизиты из справочника БанковскиеСчета Ну и так далее, то есть выгружается все, что как-то связано с этим документом РеализацияТоваровУслуг |
|||
16
Pakestanez
08.09.14
✎
17:18
|
(13) Если бы мне нужно было КД, я бы взял и воспользовался. Про существование КД я знаю, но мне не нужно КД.
|
|||
17
Pakestanez
08.09.14
✎
17:21
|
(14) Не получится так. Нужна унификация. Код пишется, исходя из полной автоматизации. Ты не знаешь, в какой момент у тебя какой реквизит выгружается, ты можешь оперировать только абстрактным понятием "Реквизит".
|
|||
18
hhhh
08.09.14
✎
17:21
|
(16) тогда читай (4)
|
|||
19
hhhh
08.09.14
✎
17:22
|
(16) берешь метаданные не у реквизита, а у ссылки.
|
|||
20
Maxus43
08.09.14
✎
17:23
|
(17) я не понимаю почему ты привязался именно к "СправочникСсылка.Контрагент", когда тот же (4) ничем не отличается по сути. Теже йайца, только в профиль
|
|||
21
Pakestanez
08.09.14
✎
17:25
|
Вот, грубо говоря, в таком виде я представлял:
РТУ = Документы.РеализацияТоваровУслуг.Выбрать(НачалоДня(ЭтаФорма.НачПериода), КонецДня(ЭтаФорма.КонПериода)); РеквизитыРТУ = Метаданные.Документы.РеализацияТоваровУслуг.Реквизиты; Пока РТУ.Следующий() Цикл Для Каждого Реквизит Из РеквизитыРТУ Цикл //Здесь планировалось получить в переменную конструкцию вида СправочникСсылка.Контрагенты, модифицировать ее, чтобы осталось Справочники.КОнтрагенты и после этого обойти реквизиты этого справочника. Ну и так далее, соблюсти всю вложенность КонецЦикла; КонецЦикла; |
|||
22
hhhh
08.09.14
✎
17:27
|
(21) а если реквизит составного типа? Например.
|
|||
23
Pakestanez
08.09.14
✎
17:29
|
(20) там возвращается значение вида "Документ.РеализацияТоваровУслуг.Реквизит.Контрагент" , что нам ничего не дает при поставленной задаче.
(22) а если он составного типа, то я видел в сп функцию, которая вроде возвращает перечень типов. Но это потом. НАчать можно со случая, когда только один тип. Москва не сразу строилась. |
|||
24
Maxus43
08.09.14
✎
17:32
|
Дак и делай так же дальше, вот по реквизитам контрагента пробежаться, если составной будет - по указанному пойдёт
Для Каждого Рекв Из РТУ.Контрагент.Метаданные().реквизиты Цикл |
|||
25
Maxus43
08.09.14
✎
17:35
|
Чтобы определить справочник это или число например в реквизите:
ЭтоСправочник = Справочники.ТипВсеСсылки().СодержитТип(ТипЗнч(РТУ.Контрагент)) |
|||
26
Pakestanez
08.09.14
✎
17:39
|
(24) Ага, то есть для каждого реквизита, если он ссылка на справочник к примеру, можно методом Метаданные() получить доступ ко всем его реквизитам? Это интересно. Попробую завтра, сегодня уже не успею.
Только вот ветка закроется, нельзя будет, увы, тут продолжить. Можно с этим что-нибудь сделать, чтобы новую потом не открывать? |
|||
27
РенеДекарт
08.09.14
✎
17:54
|
(26) все равно воткнешься в ограничение.
В 1с нельзя ничего универсального написать. Ну проверишь тип. А тебе оно зачем? Тебе еще и значение проверять нужно.... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |