|
Определение вида регистра | ☑ | ||
---|---|---|---|---|
0
rodrigez
21.05.13
✎
12:19
|
Здравствуйте! Подскажите пожалуйста, как можно, ниже поданую процедуру, сделать красивше оптимальнее лучше? Спасибо.
&НаСервереБезКонтекста Функция ОпеределитьВидРегистра (ИмяРегистра) Для Каждого ВидРегистрНакопления Из Метаданные.РегистрыНакопления Цикл Если ВидРегистрНакопления.Имя = ИмяРегистра Тогда ПолноеИмяРегистра = "РегистрыНакопления."+ИмяРегистра; Возврат ПолноеИмяРегистра; КонецЕсли; КонецЦикла; Если ПолноеИмяРегистра = Неопределено Тогда Для Каждого ВидРегистрСведений Из Метаданные.РегистрыСведений Цикл Если ВидРегистрСведений.Имя = ИмяРегистра Тогда ВидРегистра = ВидРегистрСведений.Имя; ПолноеИмяРегистра = "РегистрыСведений."+ВидРегистра; Возврат ПолноеИмяРегистра; КонецЕсли; КонецЦикла; ИначеЕсли ПолноеИмяРегистра = Неопределено Тогда Для Каждого ВидРегистрБухгалтерии Из Метаданные.РегистрыБухгалтерии Цикл Если ВидРегистрБухгалтерии.Имя = ИмяРегистра Тогда ВидРегистра = ВидРегистрБухгалтерии.Имя; ПолноеИмяРегистра = "РегистрыБухгалтерии."+ВидРегистра; Возврат ПолноеИмяРегистра; КонецЕсли; КонецЦикла; Иначе Для Каждого ВидРегистрРасчета Из Метаданные.РегистрыРасчета Цикл Если ВидРегистрРасчета.Имя = ИмяРегистра Тогда ВидРегистра = ВидРегистрРасчета.Имя; ПолноеИмяРегистра = "РегистрыРасчета."+ВидРегистра; Возврат ПолноеИмяРегистра; КонецЕсли; КонецЦикла; КонецЕсли; КонецФункции |
|||
1
Ёпрст
21.05.13
✎
12:28
|
(0) А ничего, что может быть запросто так в конфе ?
РегистрыСведений.Вася РегистрыБухгалтерии.Вася РегистрыНакопления.Вася Если че, Имя регистра не уникально в пределах разных объектов метаданных. |
|||
2
Ёпрст
21.05.13
✎
12:29
|
И у тя функция вернёт первый попавшийся вариант, что не верно.
|
|||
3
Ёпрст
21.05.13
✎
12:30
|
+ заместо перебора, лучше
Метаданные.РегистрыНакопления.Найти(ИмяРегистра); |
|||
4
MaxisUssr
21.05.13
✎
12:31
|
(0)
Функция неверная - нужно не имя объекта метаданных туда передавать, а сам объект метаданных. |
|||
5
zladenuw
21.05.13
✎
12:33
|
можно не только объект
ОбъектОписания = Метаданные.НайтиПоТипу(ТипЗнч(ВыборкаНоменклатуры)); Если ОбъектОписания <> Неопределено Тогда ИмяСправочника = ОбъектОписания.Имя; // Номенклатура КонецЕсли; |
|||
6
Ёпрст
21.05.13
✎
12:34
|
(4) зачет, ага..
и зачем ? Чтоб найти метаданные в метаданных ? :)) |
|||
7
zak555
21.05.13
✎
12:34
|
(1) нельзя так сделать
|
|||
8
ll13
21.05.13
✎
12:48
|
(7) Кто запретил ?
|
|||
9
Ёпрст
21.05.13
✎
12:50
|
(7) Это где написано ?
|
|||
10
Fragster
гуру
21.05.13
✎
12:50
|
надо не с именем а с метаданными работать
|
|||
11
zak555
21.05.13
✎
13:00
|
(7) конфигуратор
(9) опытным путём ещё ранее выяснил |
|||
12
rodrigez
21.05.13
✎
18:35
|
Вроде учел все замечания
&НаСервереБезКонтекста Функция ОпеределитьВидРегистра (ОбъектМетаданныхРегистр) СтруктураВидовРегистров = Новый Структура; Если Метаданные.РегистрыНакопления.Найти(ОбъектМетаданныхРегистр.Имя)<> Неопределено Тогда СтруктураВидовРегистров.Вставить("ВидРегистра","РегистрыНакопления"); СтруктураВидовРегистров.Вставить("НазваниеРегистра", ОбъектМетаданныхРегистр.Имя); КонецЕсли; Если Метаданные.РегистрыСведений.Найти(ОбъектМетаданныхРегистр.Имя)<> Неопределено Тогда СтруктураВидовРегистров.Вставить("ВидРегистра","РегистрыСведений"); СтруктураВидовРегистров.Вставить("НазваниеРегистра", ОбъектМетаданныхРегистр.Имя); КонецЕсли; Если Метаданные.РегистрыБухгалтерии.Найти(ОбъектМетаданныхРегистр.Имя)<> Неопределено Тогда СтруктураВидовРегистров.Вставить("ВидРегистра","РегистрыБухгалтерии"); СтруктураВидовРегистров.Вставить("НазваниеРегистра", ОбъектМетаданныхРегистр.Имя); КонецЕсли; Если Метаданные.РегистрыРасчета.Найти(ОбъектМетаданныхРегистр.Имя)<> Неопределено Тогда СтруктураВидовРегистров.Вставить("ВидРегистра","РегистрыРасчета"); СтруктураВидовРегистров.Вставить("НазваниеРегистра", ОбъектМетаданныхРегистр.Имя); КонецЕсли; Возврат СтруктураВидовРегистров; КонецФункции |
|||
13
zak555
21.05.13
✎
19:48
|
(12) наверное лучше так :
&НаСервереБезКонтекста Функция ОпеределитьВидРегистра (ОбъектМетаданныхРегистр) СтруктураВидовРегистров = Новый Структура; Если Метаданные.РегистрыНакопления.Найти(ОбъектМетаданныхРегистр.Имя)<> Неопределено Тогда СтруктураВидовРегистров.Вставить("ВидРегистра","РегистрыНакопления"); СтруктураВидовРегистров.Вставить("НазваниеРегистра", ОбъектМетаданныхРегистр.Имя); ИначеЕсли Метаданные.РегистрыСведений.Найти(ОбъектМетаданныхРегистр.Имя)<> Неопределено Тогда СтруктураВидовРегистров.Вставить("ВидРегистра","РегистрыСведений"); СтруктураВидовРегистров.Вставить("НазваниеРегистра", ОбъектМетаданныхРегистр.Имя); ИначеЕсли Метаданные.РегистрыБухгалтерии.Найти(ОбъектМетаданныхРегистр.Имя)<> Неопределено Тогда СтруктураВидовРегистров.Вставить("ВидРегистра","РегистрыБухгалтерии"); СтруктураВидовРегистров.Вставить("НазваниеРегистра", ОбъектМетаданныхРегистр.Имя); ИначеЕсли Метаданные.РегистрыРасчета.Найти(ОбъектМетаданныхРегистр.Имя)<> Неопределено Тогда СтруктураВидовРегистров.Вставить("ВидРегистра","РегистрыРасчета"); СтруктураВидовРегистров.Вставить("НазваниеРегистра", ОбъектМетаданныхРегистр.Имя); КонецЕсли; Возврат СтруктураВидовРегистров; КонецФункции |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |