|
Получение Типа реквизита или объекта | ☑ | ||
---|---|---|---|---|
0
SeaJikS
naïve
19.03.25
✎
21:49
|
Такое дело, мне нужно что бы выполнялась вот эта строка ТипРеквизитаИзМетаданных.СодержитТип(Тип("СправочникСсылка.Организации")), но с условием что вместо СправочникСсылка.Организации у меня может быть любой другой справочник, вопрос заключается в том как мне получить эту самую ссылку ИМЕННО в таком виде как она указана в этой строчке, все возможные ТипЗнч и тд получают из реквизита документа что то на подобии Организация, то есть даже не во множественно числе и я просто строкой не могу подставить, никак не могу найти в интернете способ получить именно эту вот строку или хотя бы слово Организации
|
|||
1
Ёпрст
19.03.25
✎
22:00
|
.Имя
|
|||
2
Ёпрст
19.03.25
✎
22:02
|
Ну или
.ПолноеИмя() |
|||
3
Ёпрст
19.03.25
✎
22:03
|
выбирай
|
4 |
||
4
SeaJikS
naïve
19.03.25
✎
22:07
|
(3) Даже близко не то, допустим я получаю ПолноеИмя() реквизита Организация(Тип: СправочникСсылка.ОрганизацИИ), так он мне выдает путь, скажем так, но в итоге выдает мне Организаци"Я", а мне нужно что бы это было ХОТЯ БЫ слово Организаци"И", я уже молчу про то что бы он просто выдал мне как в конфигураторе СправочникСсылка.Организации
|
5 7 |
||
5
SeaJikS
naïve
19.03.25
✎
22:11
|
(4) То есть я получил вот такую строку с помощью ПолноеИмя()
Реквизит;Организация;Документ.СчетНаОплатуКлиенту.Реквизит.Организация И в ней нет ничего что бы мне вообще пригодилось |
6 |
||
6
SeaJikS
naïve
19.03.25
✎
22:12
|
(5) В этой же строке и вариант с Имя, второй элемент строки после ";" тоже не то
|
|||
7
Ёпрст
19.03.25
✎
22:12
|
(4) че ? ПолноеИмя смотри у метаданных
|
8 |
||
8
SeaJikS
naïve
19.03.25
✎
22:15
|
(7) Поподробнее что имеешь ввиду, если метаданных объекта то это понятно я уже допер как получить имя объекта, но с РЕКВИЗИТОМ это не работает
а мне нужен ТИП реквизита как в дереве конфигуратора, там вот где ТипДанных написано СправочникСсылка.ОрганизацИИ мне вот именно это кодом надо получить и перевести в строку и записать в текстовый документ |
|||
9
SeaJikS
naïve
19.03.25
✎
22:19
|
Для большего понимания контекста вот где я работаю
Для Каждого Реквизит Из МетаданныеДокумента.Реквизиты Цикл ИмяРеквизита = Реквизит.Имя; ТипДанныхРеквизита = Реквизит.ПолноеИмя(); СтрокаВыгрузки = "Реквизит;" + ИмяРеквизита + ";" + ТипДанныхРеквизита; ТекстовыйФайл.ДобавитьСтроку(СтрокаВыгрузки); КонецЦикла; ТипДанныхРеквизита мне как раз и нужен |
10 |
||
10
Ёпрст
19.03.25
✎
22:50
|
(9) Тип.Типы() и поиск метаданные.НайтиПоТипу.
У тебя вся засада только в реквизитах составного типа |
|||
11
Ёпрст
19.03.25
✎
22:55
|
Тип того
Для Каждого Объект Из Метаданные.Справочники["Номенклатура"].Реквизиты Цикл Для Каждого Тип ИЗ Объект.Тип.Типы() Цикл Попытка Ссылка = Новый(Тип); Сообщить(Метаданные.НайтиПоТипу(ТипЗнч(Ссылка)).ПолноеИмя()); Исключение //це примитивный тип строка/число/дата КонецПопытки КонецЦикла; КонецЦикла; |
13 14 16 |
||
12
Ёпрст
19.03.25
✎
22:56
|
Ну или запросом получить
|
|||
13
SeaJikS
naïve
19.03.25
✎
23:07
|
(11) так получается там где Номенклатура я могу запихнуть свои условно Организация и это сработает?
|
15 |
||
14
DiMel_77
19.03.25
✎
23:10
|
(11) А можно и так:
Для Каждого Объект Из Метаданные.Справочники["Номенклатура"].Реквизиты Цикл Для Каждого Тип ИЗ Объект.Тип.Типы() Цикл ТипСтрокой = ПолучитьТип(Тип); КонецЦикла; КонецЦикла; Функция ПолучитьТип(Тип) Если Тип = Тип("Число") Тогда Возврат "Число"; ИначеЕсли Тип = Тип("Булево") Тогда Возврат "Булево"; ИначеЕсли Тип = Тип("Дата") Тогда Возврат "Дата"; ИначеЕсли Тип = Тип("Строка") Тогда Возврат "Строка"; ИначеЕсли Тип = Тип("ХранилищеЗначения") Тогда Возврат "ХранилищеЗначения"; ИначеЕсли Тип = Тип("УникальныйИдентификатор") Тогда Возврат "УникальныйИдентификатор"; Иначе Результат = XMLТип(Тип).ИмяТипа; Результат = СтрЗаменить(Результат, "CatalogRef", "СправочникСсылка"); Результат = СтрЗаменить(Результат, "DocumentRef", "ДокументСсылка"); Результат = СтрЗаменить(Результат, "EnumRef", "ПеречислениеСсылка"); Результат = СтрЗаменить(Результат, "ChartOfAccountsRef", "ПланСчетовСсылка"); Результат = СтрЗаменить(Результат, "ChartOfCharacteristicTypesRef", "ПланВидовХарактеристикСсылка"); Результат = СтрЗаменить(Результат, "ChartOfCalculationTypesRef", "ПланВидовРасчетаСсылка"); Результат = СтрЗаменить(Результат, "ExchangePlanRef", "ПланОбменаСсылка"); Результат = СтрЗаменить(Результат, "BusinessProcessRef", "БизнесПроцессСсылка"); Результат = СтрЗаменить(Результат, "BusinessProcessRoutePointRef", "ТочкаМаршрутаБизнесПроцессаСсылка"); Результат = СтрЗаменить(Результат, "TaskRef", "ЗадачаСсылка"); КонецЕсли; Возврат Результат; КонецФункции // ПолучитьТип() |
17 |
||
15
Ёпрст
19.03.25
✎
23:10
|
(13) да.
Можешь поискать и готовые решения обхода метаданных, Их кучку налепили |
|||
16
SeaJikS
naïve
19.03.25
✎
23:31
|
(11) Так ну во первых к сожалению в самой первой строке мы как раз ставим то что мне и нужно найти, Организация туда вставить нельзя, опять же нужно название колекции справочников то есть во множественном числе, а во вторых даже с названием коллекции она ругается что я пытаюсь изменить объект данных формы
Ошибка при установке значения атрибута контекста (Объект): Нельзя изменять поле, содержащее объект данных формы |
17 |
||
17
DiMel_77
19.03.25
✎
23:44
|
(16) Вы походу код вообще читать не умеете...
В общем случае реквизит может иметь составной или определяемый тип. Что в этом случае у вас будет в выгрузке? А для вашего случая код будет таким: Для Каждого Реквизит Из МетаданныеДокумента.Реквизиты Цикл ИмяРеквизита = Реквизит.Имя; ТипДанныхРеквизита = ТипДанныхРеквизита(Реквизит); СтрокаВыгрузки = "Реквизит;" + ИмяРеквизита + ";" + ТипДанныхРеквизита; ТекстовыйФайл.ДобавитьСтроку(СтрокаВыгрузки); КонецЦикла; ... Функция ТипДанныхРеквизита(Реквизит, РазделительТипов = "; ") ТипДанныхРеквизита = ""; Для Каждого Тип ИЗ Реквизит.Тип.Типы() Цикл ТипДанныхРеквизита = ТипДанныхРеквизита + ?(ТипДанныхРеквизита = "","",РазделительТипов) + ПолучитьТип(Тип); КонецЦикла; Возврат ТипДанныхРеквизита; КонецФункции Где функция ПолучитьТип() из сообщения (14) |
18 |
||
18
SeaJikS
naïve
20.03.25
✎
00:12
|
(17) я прошу прощения нереально уже туплю)), но большое спасибо это именно то что я искал сегодня весь день
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |