|
Список атрибутов реквизитов справочников | ☑ | ||
---|---|---|---|---|
0
beaver1971
21.05.15
✎
05:50
|
Необходимо сформировать таблицу атрибутов реквизитов всех справочников конфигурации. Для 7.7 отработал вот такой код (приведен только цикл работы со справочниками, без остального кода).
Для Спр=1 по Метаданные.Справочник() Цикл Сообщить(Метаданные.Справочник(Спр).Идентификатор); Для Рек=1 по Метаданные.Справочник(Спр).Реквизит() Цикл Если Рек = 1 Тогда Текущий = Метаданные.Справочник(Спр).Идентификатор; Иначе Текущий = ""; КонецЕсли; Реквизит = Метаданные.Справочник(Спр).Реквизит(Рек).Идентификатор; Тип = Метаданные.Справочник(Спр).Реквизит(Рек).Тип; Вид = Метаданные.Справочник(Спр).Реквизит(Рек).Вид; Синоним = Метаданные.Справочник(Спр).Реквизит(Рек).Синоним; Коммент = Метаданные.Справочник(Спр).Реквизит(Рек).Комментарий; Если Метаданные.Справочник(Спр).Реквизит(Рек).Периодический = 1 Тогда Период = "Период"; Иначе Период = ""; КонецЕсли; Табл.ВывестиСекцию("Справочник"); КонецЦикла; КонецЦикла; Нужен такой же результат для 8.2..... Для каждого Справ из Метаданные.Справочники Цикл Сообщить(Справ.Имя); Для каждого Реквиз из Справ.Реквизиты Цикл Реквизит = Реквиз.Имя; Для каждого Тип из Реквиз.Тип.Типы() Цикл Реквизит = Реквизит + " -> " + Тип; КонецЦикла; Сообщить(" " + Реквизит); КонецЦикла; КонецЦикла; Непонятки с типами. Тип() отрабатывает для строк, чисел, но спотыкается на справочниках. ТипЗнч() выдает для всех одинаковое значение.... |
|||
1
lxndr
21.05.15
✎
05:54
|
може "Отчет по конфигурации" не?
|
|||
2
Рэйв
21.05.15
✎
05:58
|
(0)Что т я у тебя там вообще не вижу Тип().
Все нормально работать должно.Непонятно чего тебе непонятно |
|||
3
beaver1971
21.05.15
✎
06:35
|
Вот пример вывода для одного из справочников
БанковскиеСчета НомерСчета -> Строка Банк -> Банк ТекстНазначения -> Строка ВидСчета -> Строка ВалютаДенежныхСредств -> Валюта НомерИДатаРазрешения -> Строка ДатаОткрытия -> Дата МесяцПрописью -> Булево Мне нужно вместо "Банк" и "Валюта" в выводе "Справочник". Для Перечислений та же песТня получается. Выводится название Перечисления, но не название Типа (((((( |
|||
4
Рэйв
21.05.15
✎
06:43
|
Попробуй так
Метаданные.НайтиПоТипу(Тип).ПолноеИмя() |
|||
5
beaver1971
21.05.15
✎
07:05
|
Для каждого Справ из Метаданные.Справочники Цикл
Сообщить(Справ.Имя); Для каждого Реквиз из Справ.Реквизиты Цикл Реквизит = Реквиз.Имя; Для каждого ТипР из Реквиз.Тип.Типы() цикл РекТип = Метаданные.НайтиПоТипу(ТипР).ПолноеИмя(); Реквизит = Реквизит + " -> " + РекТип; КонецЦикла; Сообщить(" " + Реквизит); КонецЦикла; КонецЦикла; Ошибка (((((((( {Форма.Форма.Форма(9)}: Значение не является значением объектного типа (ПолноеИмя) РекТип = Метаданные.НайтиПоТипу(ТипР).ПолноеИмя(); |
|||
6
Рэйв
21.05.15
✎
07:07
|
ты простые то типы отслеживай:-)
Представляешь что оно тебе найдет в метаданных на Тип("Строка") :-) |
|||
7
Рэйв
21.05.15
✎
07:09
|
Если ТипР=Тип("Строка") ИЛИ
ТипР=Тип("Число") ИЛИ ТипР=Тип("Дата") ИЛИ ТипР=Тип("Булево") Тогда Сообщить("Тип:"+ТипР) Иначе Срообщить("Тип:" +Метаданные.НайтиПоТипу(ТипР).ПолноеИмя();) КонецЕсли; |
|||
8
beaver1971
21.05.15
✎
07:54
|
Смешно, но почему так, не пойму:
Если ТипР = Тип("Строка") или ТипР = Тип("Число") или ТипР = Тип("Дата") или ТипР = Тип("УникальныйИдентификатор") или ТипР = Тип("ХранилищеЗначения") или ТипР = Тип("Булево") Тогда РекТип = ТипР; Иначе РекТип = Метаданные.НайтиПоТипу(ТипР).ПолноеИмя(); КонецЕсли; Вот в таком виде отработало всё почти как надо |
|||
9
beaver1971
21.05.15
✎
12:48
|
Туплю ((((((
РекТип = Метаданные.НайтиПоТипу(ТипР).ПолноеИмя(); // получили Справочник.Банки Область.Параметры.Тип = // сюда нужно Справочник Область.Параметры.Вид = // сюда нужно Банки Не могу догнать - как? Или только вот так? Позиция = Найти(РекТип, "."); Область.Параметры.Тип = Лев(РекТип, Позиция - 1); Область.Параметры.Вид = Сред(РекТип, Позиция + 1); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |