Имя: Пароль:
1C
1С v8
Создание прикладного объекта по метаданным
0 quux
 
26.11.14
10:23
Добрый день.

Подскажите есть ли возможность создания прикладного объекта по метаданным:

Есть строка - "РегистрСведений.РегистрацияИзмененийОбъектов"

Как создать сам объект РегистрСведений для дальнейшей работы с ним?
1 СвинТуз
 
26.11.14
10:24
это не объект
2 Гёдза
 
26.11.14
10:25
Новый(ТипОбъекта)
3 Banned
 
26.11.14
10:26
Хм... создать регистр сведений? Неплохая попыптка, но нет.
4 СвинТуз
 
26.11.14
10:26
(2)
это не объект
НаборЗаписей=РегистрыСведений.РегистрацияИзмененийОбъектов.СоздатьНаборЗаписей();

могу путать=двоечник ...
5 piter3
 
26.11.14
10:27
а для зачем?
6 Ненавижу 1С
 
гуру
26.11.14
10:28
(4) или МенеджерЗаписи
7 СвинТуз
 
26.11.14
10:33
(6)
и :
НаборЗаписей.Записать(Истина);

)))
будет весело.
8 СвинТуз
 
26.11.14
10:33
осторожнее не сотри все записи
9 quux
 
26.11.14
10:43
При той формулировке темы которая у меня получилась, весьма сдержанная реакция :-) Ожидал более активную пляску на моих костях...

Попытаюсь уточнить. Есть список строк с именами объектов
"РегистрСведений.РегистрацияИзмененийОбъектов"
"Справочник.ЕдиницыИзмерения"
"РегистрСведений.ЗначенияСвойствОбъектов"
...

Необходимо создать объект с которым уже дальше буду работать.
10 quux
 
26.11.14
10:45
...
Для Регистров - набор записей
Для Справочников, Документов - объект
11 Banned
 
26.11.14
10:47
(9) Для "РегистрСведений.РегистрацияИзмененийОбъектов" ты объект не создашь.
12 quux
 
26.11.14
10:47
(11) см сообщение (10)
13 Banned
 
26.11.14
10:48
(12) Тогда парси строку и делай, что нужно. [] тебе в помощь.
14 Крошка Ру
 
26.11.14
10:48
(11) Да легко:

Если ИмяОбъекта = "РегистрСведений.РегистрацияИзмененийОбъектов" Тогда

   НаборЗаписей = РегистрыСведений.РегистрацияИзмененийОбъектов.СоздатьНаборЗаписей();
КонецЕсли;
15 quux
 
26.11.14
10:50
(14) ммммм отличный план конечно... у меня уже так написано... охота что-то изящнее :-)
16 Крошка Ру
 
26.11.14
10:53
(15)

Если Найти(ИмяОбъекта,"РегистрСведений")>0 Тогда
  ИмяОбъекта = Прав(ИмяОбъекта,17);
  Выполнить("НаборЗаписей = РегистрыСведений."+ИмяОбъекта+".СоздатьНаборЗаписей()");
КонецЕсли;
17 Banned
 
26.11.14
10:54
(16) А выполнить() зачем?
нз = РегистрыСведений[ИмяОбъекта].СоздатьНаборЗаписей()
18 mooo
 
26.11.14
11:01
(0) Посмотри в любой типовой общий модуль "ОбщегоНазначения", там есть блок процедур для работы с метаданными.
Эта например МенеджерОбъектаПоПолномуИмени(ПолноеИмя)
19 Ненавижу 1С
 
гуру
26.11.14
11:02
1. Находим точку в строке, находим 1-ю подстроку до нее и 2-ю после нее
2. По первой определяем менеджера и имя метода
3. По второй имя
4. Чтото = ТвойМенеджер[ИмяОбъекта].ИмяМетода();
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой