Имя: Пароль:
1C
 
Получить список объектов плана обмена
0 Ангел- Хоронитель
 
19.10.09
17:57
Мне нужно получить список объектов, которые входят в план обмена.

сделал:

Для каждого Элемент из Метаданные.ПланыОбмена.Найти("Подразделения").Состав Цикл
   Сообщить(Элемент.Метаданные.Имя);
КонецЦикла;

он мне выводит имена справочников, документов, перечислений... а как бы еще получить тип их. то есть чтобы писало что это: документ, справочник или еще что-то?

Восмерку первый раз в жизни открыл, не судите строго.
1 Михей
 
19.10.09
18:05
Сообщить(Элемент.Метаданные.ПолноеИмя());
2 Ангел- Хоронитель
 
19.10.09
18:23
(1)а по полному имени получить сам объект как?
3 IronDemon
 
19.10.09
18:30
// Функция создает таблицу значений и заполняет ее составом плана обмена
//
// Параметры:
//  ПланОбменаМетаданные - объект описания метаданного ПланОбмена, для которого
//                         необходимо заполнить состав.
//
// Возвращаемое значение:
//  СоставПланаОбмена - таблица значений, содержащая состав плана обмена и
//                      виды регистрации изменений данных для объектов
//

Функция ЗаполнитьСоставОбмена(ПланОбменаМетаданные) Экспорт
   
   СоставПланаОбмена = Новый ТаблицаЗначений;
   СоставПланаОбмена.Колонки.Добавить("ОбъектМетаданных", , "Объект метаданных");
   СоставПланаОбмена.Колонки.Добавить("Регистрация", , "Регистрация");
   СоставПланаОбмена.Колонки.Добавить("ЭлементСостава");
   Состав = ПланОбменаМетаданные.Состав;
   
   // заполняем таблицу значений составом
   Для каждого Элемент из Состав Цикл
       
       Стр = СоставПланаОбмена.Добавить();
       Стр.ЭлементСостава = Элемент;
       Стр.Регистрация = РегистрацияИзменений_НеРегистрировать;
       Стр.ОбъектМетаданных = Элемент.Метаданные.Имя;
       
       // Определяем какой это объект описания метаданного
       ВидОбъекта = ВидОбъектаМетаданныхОбмена(Элемент.Метаданные);
       
       // Если успешно определили, то устанавливаем полное имя
       Если ВидОбъекта <> Неопределено Тогда
           
           Стр.ОбъектМетаданных = ПолноеИмяОбъектаМетаданных(Элемент.Метаданные);
           
       КонецЕсли;
           
   КонецЦикла;
   
   СоставПланаОбмена.Сортировать("ОбъектМетаданных");
   Возврат СоставПланаОбмена;
   
КонецФункции    // ЗаполнитьСоставОбмена(ПланОбмена) Экспорт

/////////////////////////////////////////////////////////////////////////////////
// Функция получения полного имени для объектов метаданных верхнего уровня
//
// Параметры:
//  ОбъектМетаданных - объект описания метаданного, для которого
//                     необходимо получить полное имя
//  Коллекция        - признак необходимости формирования вида коллекции объектов
//                     метаданных
//
// Результат:
//  ВидОбъекта      - строка, вид объекта метаданных, Неопределено - если вид не установлен
//
Функция ВидОбъектаМетаданныхОбмена(ОбъектМетаданных, Коллекция = Ложь) Экспорт
   
   ВидОбъекта = Неопределено;
   Если Метаданные.Константы.Содержит(ОбъектМетаданных) Тогда
       
       ВидОбъекта = "Константа";
       Если Коллекция Тогда
           
           ВидОбъекта = "Константы";
           
       КонецЕсли;
       
   ИначеЕсли Метаданные.Справочники.Содержит(ОбъектМетаданных) Тогда
       
       ВидОбъекта = "Справочник";
       Если Коллекция Тогда
           
           ВидОбъекта = "Справочники";
           
       КонецЕсли;
       
   ИначеЕсли Метаданные.Документы.Содержит(ОбъектМетаданных) Тогда
       
       ВидОбъекта = "Документ";
       Если Коллекция Тогда
           
           ВидОбъекта = "Документы";
           
       КонецЕсли;
       
   ИначеЕсли Метаданные.Последовательности.Содержит(ОбъектМетаданных) Тогда
       
       ВидОбъекта = "Последовательность";
       Если Коллекция Тогда
           
           ВидОбъекта = "Последовательности";
           
       КонецЕсли;
       
   ИначеЕсли Метаданные.ПланыВидовХарактеристик.Содержит(ОбъектМетаданных) Тогда
       
       ВидОбъекта = "ПланВидовХарактеристик";
       Если Коллекция Тогда
           
           ВидОбъекта = "ПланыВидовХарактеристик";
           
       КонецЕсли;
       
   ИначеЕсли Метаданные.ПланыСчетов.Содержит(ОбъектМетаданных) Тогда
       
       ВидОбъекта = "ПланСчетов";
       Если Коллекция Тогда
           
           ВидОбъекта = "ПланыСчетов";
           
       КонецЕсли;
       
   ИначеЕсли Метаданные.ПланыВидовРасчета.Содержит(ОбъектМетаданных) Тогда
       
       ВидОбъекта = "ПланВидовРасчета";
       Если Коллекция Тогда
           
           ВидОбъекта = "ПланыВидовРасчета";
           
       КонецЕсли;
       
   ИначеЕсли Метаданные.БизнесПроцессы.Содержит(ОбъектМетаданных) Тогда
       
       ВидОбъекта = "БизнесПроцесс";
       Если Коллекция Тогда
           
           ВидОбъекта = "БизнесПроцессы";
           
       КонецЕсли;
       
   ИначеЕсли Метаданные.Задачи.Содержит(ОбъектМетаданных) Тогда
       
       ВидОбъекта = "Задача";
       Если Коллекция Тогда
           
           ВидОбъекта = "Задачи";
           
       КонецЕсли;
       
   ИначеЕсли Метаданные.РегистрыСведений.Содержит(ОбъектМетаданных) Тогда
       
       ВидОбъекта = "РегистрСведений";
       Если Коллекция Тогда
           
           ВидОбъекта = "РегистрыСведений";
           
       КонецЕсли;
       
   ИначеЕсли Метаданные.РегистрыНакопления.Содержит(ОбъектМетаданных) Тогда
       
       ВидОбъекта = "РегистрНакопления";
       Если Коллекция Тогда
           
           ВидОбъекта = "РегистрыНакопления";
           
       КонецЕсли;
       
   ИначеЕсли Метаданные.РегистрыБухгалтерии.Содержит(ОбъектМетаданных) Тогда
       
       ВидОбъекта = "РегистрБухгалтерии";
       Если Коллекция Тогда
           
           ВидОбъекта = "РегистрыБухгалтерии";
           
       КонецЕсли;
       
   ИначеЕсли Метаданные.РегистрыРасчета.Содержит(ОбъектМетаданных) Тогда
       
       ВидОбъекта = "РегистрРасчета";
       Если Коллекция Тогда
           
           ВидОбъекта = "РегистрыРасчета";
           
       КонецЕсли;
       
   ИначеЕсли ОбъектМетаданных.Родитель() <> Неопределено Тогда
       
           Родитель = ОбъектМетаданных.Родитель();
           Если ВидОбъектаМетаданныхОбмена(Родитель) = "РегистрРасчета"
               И Родитель.Перерасчеты.Содержит(ОбъектМетаданных) Тогда
       
               ВидОбъекта = "Перерасчет";
               Если Коллекция Тогда
                   
                   ВидОбъекта = "Перерасчеты";
                   
               КонецЕсли;
               
           КонецЕсли;
       
   КонецЕсли;
       
   Возврат ВидОбъекта;
   
КонецФункции    // ВидОбъектаМетаданныхОбмена(ОбъектМетаданных) Экспорт
4 Ангел- Хоронитель
 
19.10.09
19:10
Спасибо всем.