MyTetra Share
Делитесь знаниями!
1С: Как программно получить состав плана обмена
Время создания: 11.12.2012 09:15
Раздел: Компьютер - Windows - 1С - Готовые решения
Запись: xintrea/mytetra_syncro/master/base/13552029455z7pqyx2ki/text.html на raw.github.com

// Функция создает таблицу значений и заполняет ее составом плана обмена

//

// Параметры:

// ПланОбменаМетаданные - объект описания метаданного ПланОбмена, для которого

// необходимо заполнить состав.

//

// Возвращаемое значение:

// СоставПланаОбмена - таблица значений, содержащая состав плана обмена и

// виды регистрации изменений данных для объектов

//

Функция ЗаполнитьСоставОбмена(ПланОбменаМетаданные) Экспорт

СоставПланаОбмена = Новый ТаблицаЗначений;

СоставПланаОбмена.Колонки.Добавить("ОбъектМетаданных", , "Объект метаданных");

СоставПланаОбмена.Колонки.Добавить("Регистрация", , "Регистрация");

СоставПланаОбмена.Колонки.Добавить("ЭлементСостава");

Состав = ПланОбменаМетаданные.Состав;

// заполняем таблицу значений составом

Для каждого Элемент из Состав Цикл

Стр = СоставПланаОбмена.Добавить();

Стр.ЭлементСостава = Элемент;

Стр.Регистрация = РегистрацияИзменений_НеРегистрировать;

Стр.ОбъектМетаданных = Элемент.Метаданные.Имя;

// Определяем какой это объект описания метаданного

ВидОбъекта = ВидОбъектаМетаданныхОбмена(Элемент.Метаданные);

// Если успешно определили, то устанавливаем полное имя

Если ВидОбъекта <> Неопределено Тогда

Стр.ОбъектМетаданных = ПолноеИмяОбъектаМетаданных(Элемент.Метаданные);

КонецЕсли;

КонецЦикла;

СоставПланаОбмена.Сортировать("ОбъектМетаданных");

Возврат СоставПланаОбмена;

КонецФункции // ЗаполнитьСоставОбмена(ПланОбмена) Экспорт

/////////////////////////////////////////////////////////////////////////////////

// Функция получения полного имени для объектов метаданных верхнего уровня

//

// Параметры:

// ОбъектМетаданных - объект описания метаданного, для которого

// необходимо получить полное имя

// Коллекция - признак необходимости формирования вида коллекции объектов

// метаданных

//

// Результат:

// ВидОбъекта - строка, вид объекта метаданных, Неопределено - если вид не установлен

//

Функция ВидОбъектаМетаданныхОбмена(ОбъектМетаданных, Коллекция = Ложь) Экспорт

ВидОбъекта = Неопределено;

Если Метаданные.Константы.Содержит(ОбъектМетаданных) Тогда

ВидОбъекта = "Константа";

Если Коллекция Тогда

ВидОбъекта = "Константы";

КонецЕсли;

ИначеЕсли Метаданные.Справочники.Содержит(ОбъектМетаданных) Тогда

ВидОбъекта = "Справочник";

Если Коллекция Тогда

ВидОбъекта = "Справочники";

КонецЕсли;

ИначеЕсли Метаданные.Документы.Содержит(ОбъектМетаданных) Тогда

ВидОбъекта = "Документ";

Если Коллекция Тогда

ВидОбъекта = "Документы";

КонецЕсли;

ИначеЕсли Метаданные.Последовательности.Содержит(ОбъектМетаданных) Тогда

ВидОбъекта = "Последовательность";

Если Коллекция Тогда

ВидОбъекта = "Последовательности";

КонецЕсли;

ИначеЕсли Метаданные.ПланыВидовХарактеристик.Содержит(ОбъектМетаданных) Тогда

ВидОбъекта = "ПланВидовХарактеристик";

Если Коллекция Тогда

ВидОбъекта = "ПланыВидовХарактеристик";

КонецЕсли;

ИначеЕсли Метаданные.ПланыСчетов.Содержит(ОбъектМетаданных) Тогда

ВидОбъекта = "ПланСчетов";

Если Коллекция Тогда

ВидОбъекта = "ПланыСчетов";

КонецЕсли;

ИначеЕсли Метаданные.ПланыВидовРасчета.Содержит(ОбъектМетаданных) Тогда

ВидОбъекта = "ПланВидовРасчета";

Если Коллекция Тогда

ВидОбъекта = "ПланыВидовРасчета";

КонецЕсли;

ИначеЕсли Метаданные.БизнесПроцессы.Содержит(ОбъектМетаданных) Тогда

ВидОбъекта = "БизнесПроцесс";

Если Коллекция Тогда

ВидОбъекта = "БизнесПроцессы";

КонецЕсли;

ИначеЕсли Метаданные.Задачи.Содержит(ОбъектМетаданных) Тогда

ВидОбъекта = "Задача";

Если Коллекция Тогда

ВидОбъекта = "Задачи";

КонецЕсли;

ИначеЕсли Метаданные.РегистрыСведений.Содержит(ОбъектМетаданных) Тогда

ВидОбъекта = "РегистрСведений";

Если Коллекция Тогда

ВидОбъекта = "РегистрыСведений";

КонецЕсли;

ИначеЕсли Метаданные.РегистрыНакопления.Содержит(ОбъектМетаданных) Тогда

ВидОбъекта = "РегистрНакопления";

Если Коллекция Тогда

ВидОбъекта = "РегистрыНакопления";

КонецЕсли;

ИначеЕсли Метаданные.РегистрыБухгалтерии.Содержит(ОбъектМетаданных) Тогда

ВидОбъекта = "РегистрБухгалтерии";

Если Коллекция Тогда

ВидОбъекта = "РегистрыБухгалтерии";

КонецЕсли;

ИначеЕсли Метаданные.РегистрыРасчета.Содержит(ОбъектМетаданных) Тогда

ВидОбъекта = "РегистрРасчета";

Если Коллекция Тогда

ВидОбъекта = "РегистрыРасчета";

КонецЕсли;

ИначеЕсли ОбъектМетаданных.Родитель() <> Неопределено Тогда

Родитель = ОбъектМетаданных.Родитель();

Если ВидОбъектаМетаданныхОбмена(Родитель) = "РегистрРасчета"

И Родитель.Перерасчеты.Содержит(ОбъектМетаданных) Тогда

ВидОбъекта = "Перерасчет";

Если Коллекция Тогда

ВидОбъекта = "Перерасчеты";

КонецЕсли;

КонецЕсли;

КонецЕсли;

Возврат ВидОбъекта;

КонецФункции // ВидОбъектаМетаданныхОбмена(ОбъектМетаданных) Экспорт

Так же в этом разделе:
 
MyTetra Share v.0.59
Яндекс индекс цитирования