Имя: Пароль:
1C
1С v8
РегистрСведенийКлючЗаписи: как перебрать его поля в общем виде?
0 wisekat
 
25.06.12
16:09
В коде есть доступ к объекту РегистрСведенийКлючЗаписи, который получаю для различных регистров своей конфы. Необходимо написать универсальный код, который переберёт значения полей данного объекта (надо, чтобы слепить строку, понятную для пользователя).
1 izekia
 
25.06.12
16:10
а не лучше для менеджера прописать получение представления?
2 izekia
 
25.06.12
16:10
а так через метаданные
3 Irbis
 
25.06.12
16:11
Перебирай измерения, для периодических плюс период
4 wisekat
 
25.06.12
16:12
(2) Вот тоже ищу параллельно - по-видимому, надо сначала получить

МетаданныеТипа = Метаданные.НайтиПоТипу(ТипЗнч(пОбъектСсылка));

, а затем его свойство-коллекцию Измерения использовать.
5 wisekat
 
25.06.12
16:14
(1) А как это сделать?? И не забывайте, что мне не для одного регистра это сделать надо, а универсальный код написать, который чисто теоретически должен работать без переделок и для всех новых регистров сведений.
6 wisekat
 
25.06.12
19:08
Решается примерно вот так:

ОбъектПредставление = "";
МетаданныеТипа = Метаданные.НайтиПоТипу(ТипЗнч(ОбъектСсылка));
Для Каждого ИзмерениеРегистра Из МетаданныеТипа.Измерения Цикл
   ОбъектПредставление = ОбъектПредставление + " | " + ИзмерениеРегистра.Имя + ": " + ОбъектСсылка[ИзмерениеРегистра.Имя];
КонецЦикла;
Если МетаданныеТипа.ПериодичностьРегистраСведений = Метаданные.СвойстваОбъектов.ПериодичностьРегистраСведений.День Тогда
   ОбъектПредставление = ОбъектПредставление + " | Дата: " + Формат(ОбъектСсылка.Период, "ДЛФ=Д");
КонецЕсли;
ОбъектПредставление = Сред(ОбъектПредставление, 4);
7 wisekat
 
25.06.12
19:09
Если регистр сведений с периодичностью, отличной от 'День', то надо будет дополнительно правильно период отформатировать.
Ну а так в общем вопрос считаю закрытым.