出现了一个问题。需要获取寄存器及其字段及其类型的列表。
获取非虚拟寄存器列表没有什么特别的问题,但对于虚拟表,我们不得不稍微费点力气。
&НаСервереБезКонтекста
Функция ПолучитьСписокИсточниковДанных()
СписокИсточников = Новый Массив;
СписокИсточников.Добавить(_ПолучитьСписокИсточниковДанных(Метаданные.РегистрыНакопления,
БиблиотекаКартинок.РегистрНакопления, "РегистрНакопления"));
СписокИсточников.Добавить(_ПолучитьСписокИсточниковДанных(Метаданные.РегистрыСведений,
БиблиотекаКартинок.РегистрСведений, "РегистрСведений"));
Возврат СписокИсточников;
КонецФункции
// Формирует список регистров определенного типа
&НаСервереБезКонтекста
Функция _ПолучитьСписокИсточниковДанных(СписокИсточников, Отображение, ТипДанных);
_Результат = Новый Массив;
Для Каждого ИсточникИзМетаданных Из СписокИсточников Цикл
// Записываем не виртуальный регистр
_Результат.Добавить(_СформироватьЗначение(ИсточникИзМетаданных.Имя, Отображение, ТипДанных));
Попытка
ИмяРег = Строка(ИсточникИзМетаданных.Имя) + "." + Строка(ИсточникИзМетаданных.ВидРегистра); // Формирует имя вида виртуальной таблицы (если есть)
_Результат.Добавить(_СформироватьЗначение(ИмяРег, Отображение, ТипДанных));
Исключение
КонецПопытки;
КонецЦикла;
Возврат _Результат;
КонецФункции
&НаСервереБезКонтекста
Функция _СформироватьЗначение(ИсточникИзМетаданных, Отображение, ТипДанных)
Источник = Новый Структура;
Источник.Вставить("Источник", ИсточникИзМетаданных);
Источник.Вставить("Отображение", Отображение);
Источник.Вставить("ТипДанных", ТипДанных);
Возврат Источник;
КонецФункции
该代码仅适用于累积寄存器的虚拟表,但在这种情况下它并不重要,但如果有更好的方法,我将不胜感激。
遇到的主要问题是获取虚拟寄存器表的字段列表。
ПолнИмя = "РегистрНакопления." + СтрЗнач;
рег = Метаданные.НайтиПоПолномуИмени(ПолнИмя);
Попытка
ЗаполнитьСтруктуруИсточникаДанных(Метаданные.РегистрыНакопления[рег.Имя].Измерения);
Исключение
КонецПопытки;
Попытка
ЗаполнитьСтруктуруИсточникаДанных(Метаданные.РегистрыНакопления[рег.Имя].Ресурсы);
Исключение
КонецПопытки;
Попытка
ЗаполнитьСтруктуруИсточникаДанных(Метаданные.РегистрыНакопления[рег.Имя].Реквизиты);
Исключение
КонецПопытки;
此方法仅适用于非虚拟表,是否可以获取虚拟寄存器表的字段及其类型?