|   |   | 
| 
 | Определение вида регистра | ☑ | ||
|---|---|---|---|---|
| 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) наверное лучше так :
  &НаСервереБезКонтекста Функция ОпеределитьВидРегистра (ОбъектМетаданныхРегистр) СтруктураВидовРегистров = Новый Структура; Если Метаданные.РегистрыНакопления.Найти(ОбъектМетаданныхРегистр.Имя)<> Неопределено Тогда СтруктураВидовРегистров.Вставить("ВидРегистра","РегистрыНакопления"); СтруктураВидовРегистров.Вставить("НазваниеРегистра", ОбъектМетаданныхРегистр.Имя); ИначеЕсли Метаданные.РегистрыСведений.Найти(ОбъектМетаданныхРегистр.Имя)<> Неопределено Тогда СтруктураВидовРегистров.Вставить("ВидРегистра","РегистрыСведений"); СтруктураВидовРегистров.Вставить("НазваниеРегистра", ОбъектМетаданныхРегистр.Имя); ИначеЕсли Метаданные.РегистрыБухгалтерии.Найти(ОбъектМетаданныхРегистр.Имя)<> Неопределено Тогда СтруктураВидовРегистров.Вставить("ВидРегистра","РегистрыБухгалтерии"); СтруктураВидовРегистров.Вставить("НазваниеРегистра", ОбъектМетаданныхРегистр.Имя); ИначеЕсли Метаданные.РегистрыРасчета.Найти(ОбъектМетаданныхРегистр.Имя)<> Неопределено Тогда СтруктураВидовРегистров.Вставить("ВидРегистра","РегистрыРасчета"); СтруктураВидовРегистров.Вставить("НазваниеРегистра", ОбъектМетаданныхРегистр.Имя); КонецЕсли; Возврат СтруктураВидовРегистров; КонецФункции | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |