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