-
Notifications
You must be signed in to change notification settings - Fork 17
/
Copy pathДанныеКонфигурации.os
100 lines (71 loc) · 5.4 KB
/
ДанныеКонфигурации.os
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
///////////////////////////////////////////////////////////////////////////////
//
// Класс описывающий структуру конфигурации
//
///////////////////////////////////////////////////////////////////////////////
Перем ОбъектыКонфигурации Экспорт;
Перем СвойстваКонфигурации Экспорт;
Перем Модули Экспорт;
Перем ФормыКонфигурации Экспорт;
Перем КомандыКонфигурации Экспорт;
Перем ПодсистемыКонфигурации Экспорт;
Перем Конфигурация Экспорт;
///////////////////////////////////////////////////////////////////////////////
// ПРОГРАММНЫЙ ИНТЕРФЕЙС
///////////////////////////////////////////////////////////////////////////////
// Выполняет поиск объекта конфигурации
//
// Параметры:
// ИмяОбъекта - Строка - Полное или короткое имя объекта (Полное - Справочник.Пользователи, короткой - Пользователи)
// ТипОбъекта - Строка - Тип объекта конфигурации, см ТипыОбъектовКонфигурации, ОбъектыКонфигурации.md
//
// Возвращаемое значение:
// СтрокаТаблицыЗначений - Описание объекта конфигурации. См. СтруктурыОписаний.ТаблицаОписанияОбъектовКонфигурации
//
Функция НайтиОбъект(Знач ИмяОбъекта, Знач ТипОбъекта = Неопределено) Экспорт
Если ТипОбъекта = Неопределено
И СтрНайти(ИмяОбъекта, ".")
И ТипыОбъектовКонфигурации.ОписаниеТипаПоИмени(Лев(ИмяОбъекта, СтрНайти(ИмяОбъекта, ".") - 1)) <> Неопределено Тогда
ТипОбъекта = Лев(ИмяОбъекта, СтрНайти(ИмяОбъекта, ".") - 1);
ИмяОбъекта = Сред(ИмяОбъекта, СтрНайти(ИмяОбъекта, ".") + 1);
КонецЕсли;
Если ЗначениеЗаполнено(ТипОбъекта) Тогда
ТипОбъекта = ТипыОбъектовКонфигурации.НормализоватьИмя(ТипОбъекта);
НайденныеОбъекты = ОбъектыКонфигурации.НайтиСтроки(Новый Структура("Тип, Наименование", ТипОбъекта, ИмяОбъекта));
Если НайденныеОбъекты.Количество() Тогда
Возврат НайденныеОбъекты[0];
КонецЕсли;
Иначе
Возврат ОбъектыКонфигурации.Найти(ИмяОбъекта, "Наименование");
КонецЕсли;
Возврат Неопределено;
КонецФункции
// Возвращает коллекцию объектов переданного типа
//
// Параметры:
// ТипОбъекта - Строка - Тип объекта конфигурации, см ТипыОбъектовКонфигурации, ОбъектыКонфигурации.md
//
// Возвращаемое значение:
// Массив - Коллекция объектов, структура объектов см. СтруктурыОписаний.ТаблицаОписанияОбъектовКонфигурации
//
Функция НайтиОбъектыПоТипу(Знач ТипОбъекта) Экспорт
ТипОбъекта = ТипыОбъектовКонфигурации.НормализоватьИмя(ТипОбъекта);
Возврат ОбъектыКонфигурации.НайтиСтроки(Новый Структура("Тип", ТипОбъекта));
КонецФункции
Процедура ПриСозданииОбъекта(пКонфигурация)
Конфигурация = пКонфигурация;
ОбъектыКонфигурации = СтруктурыОписаний.ТаблицаОписанияОбъектовКонфигурации();
Модули = СтруктурыОписаний.ТаблицаОписанияМодулей();
// todo сделать чтение форм
ФормыКонфигурации = Новый ТаблицаЗначений;
ФормыКонфигурации.Колонки.Добавить("Родитель");
ФормыКонфигурации.Колонки.Добавить("ЭтоУправляемаяФорма");
ФормыКонфигурации.Колонки.Добавить("Наименование");
// todo сделать чтение команд
КомандыКонфигурации = Новый ТаблицаЗначений;
КомандыКонфигурации.Колонки.Добавить("Родитель");
КомандыКонфигурации.Колонки.Добавить("Наименование");
КонецПроцедуры
///////////////////////////////////////////////////////////////////////////////
// СЛУЖЕБНЫЕ ПРОЦЕДУРЫ И ФУНКЦИИ
///////////////////////////////////////////////////////////////////////////////