forked from nixel2007/entity
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathХранилищеСущностей.os
143 lines (125 loc) · 9.02 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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
#Использовать "../internal"
Перем ОбъектМодели;
Перем Коннектор;
Перем ПулСущностей;
Процедура ПриСозданииОбъекта(Знач ПОбъектМодели, Знач ТипКоннектора, Знач СтрокаСоединения, ПараметрыКоннектора)
ОбъектМодели = ПОбъектМодели;
Коннектор = РаботаСКоннекторами.СоздатьКоннектор(ТипКоннектора);
РаботаСКоннекторами.ОткрытьКоннектор(Коннектор, СтрокаСоединения, ПараметрыКоннектора);
ПулСущностей = Новый Соответствие();
КонецПроцедуры
// Создает экземпляр сущности, расширенный методами паттерна Active Record.
//
// Возвращаемое значение:
// Произвольный - экземпляр класса сущности с типом, привязанным к ХранилищуСущностей,
// с дополнительными методами паттерна Active Record.
//
Функция СоздатьЭлемент() Экспорт
Возврат АктивнаяЗапись.СоздатьИзХранилища(ОбъектМодели, ЭтотОбъект);
КонецФункции
// Сохраняет сущность в БД.
//
// Параметры:
// Сущность - Произвольный - Объект (экземпляр класса, зарегистрированного в модели) для сохранения в БД.
//
Процедура Сохранить(Сущность) Экспорт
РаботаСКоннекторами.Сохранить(Коннектор, ОбъектМодели, ПулСущностей, Сущность);
КонецПроцедуры
// Осуществляет поиск сущностей типа, привязанного к ХранилищуСущностей, по идентификатору.
//
// Параметры:
// ОпцииПоиска - Произвольный - Опции поиска.
// Если параметр не задан или равен "Неопределено", то возвращаются все найденные сущности указанного типа.
// Если параметр имеет тип "Соответствие", то каждое значение соответствия преобразуется к условию поиска
// ИмяПоля = ЗначениеПоля, где ИмяПоля - ключ элемента соответствия, ЗначениеПоля - значение элемента соответствия.
// Если параметр имеет тип "ОпцииПоиска", то опции передаются как есть.
//
// Возвращаемое значение:
// Массив - Массив найденных сущностей. В качестве элементов массива выступают
// экземпляры класса с типом, привязанным к ХранилищуСущностей, с заполненными значениями полей.
//
Функция Получить(Знач ОпцииПоиска = Неопределено) Экспорт
Если ОпцииПоиска = Неопределено Тогда
ОпцииПоиска = Новый ОпцииПоиска();
КонецЕсли;
Возврат РаботаСКоннекторами.Получить(Коннектор, ОбъектМодели, ПулСущностей, ОпцииПоиска);
КонецФункции
// Осуществляет поиск сущности типа, привязанного к ХранилищуСущностей, по идентификатору.
//
// Параметры:
// ОпцииПоиска - Произвольный - Опции поиска.
// Если параметр не задан или равен "Неопределено", то возвращаются все найденные сущности указанного типа.
// Если параметр имеет тип "Соответствие", то каждое значение соответствия преобразуется к условию поиска
// ИмяПоля = ЗначениеПоля, где ИмяПоля - ключ элемента соответствия, ЗначениеПоля - значение элемента соответствия.
// Если параметр имеет тип "ОпцииПоиска", то опции передаются как есть.
// Любой другой тип интерпретируется как поиск по &Идентификатору.
//
// Возвращаемое значение:
// Произвольный - Если сущность была найдена, то возвращается экземпляр класса с типом,
// привязанным к ХранилищуСущностей, с заполненными значениями полей. Иначе возвращается "Неопределено".
//
Функция ПолучитьОдно(Знач ОпцииПоиска = Неопределено) Экспорт
Если ОпцииПоиска = Неопределено Тогда
ОпцииПоиска = Новый ОпцииПоиска();
КонецЕсли;
Возврат РаботаСКоннекторами.ПолучитьОдно(Коннектор, ОбъектМодели, ПулСущностей, ОпцииПоиска);
КонецФункции
// Выполняет удаление сущности из базы данных.
// Сущность должна иметь заполненный идентификатор.
//
// Параметры:
// Сущность - Произвольный - Удаляемая сущность
//
Процедура Удалить(Сущность) Экспорт
РаботаСКоннекторами.Удалить(Коннектор, ОбъектМодели, ПулСущностей, Сущность);
КонецПроцедуры
// Выполняет очистку текущего Хранилища сущностей.
// Дополнительно посылает коннектору запрос на закрытие соединения.
//
Процедура Закрыть() Экспорт
РаботаСКоннекторами.ЗакрытьКоннектор(Коннектор);
ПулСущностей.Очистить();
КонецПроцедуры
// Посылает коннектору запрос на начало транзакции.
//
Процедура НачатьТранзакцию() Экспорт
РаботаСКоннекторами.НачатьТранзакцию(Коннектор);
КонецПроцедуры
// Посылает коннектору запрос на фиксацию транзакции.
//
Процедура ЗафиксироватьТранзакцию() Экспорт
РаботаСКоннекторами.ЗафиксироватьТранзакцию(Коннектор);
КонецПроцедуры
// Посылает коннектору запрос на отмену транзакции.
//
Процедура ОтменитьТранзакцию() Экспорт
РаботаСКоннекторами.ОтменитьТранзакцию(Коннектор);
КонецПроцедуры
// Возвращает текущий активный коннектор.
//
// Возвращаемое значение:
// АбстрактныйКоннектор - Возвращает экземпляр коннектора. Конкретная реализация определяется параметром
// ТипКоннектора при вызове конструктора МенеджерСущностей.
//
Функция ПолучитьКоннектор() Экспорт
Возврат Коннектор;
КонецФункции
// Возвращает объект модели, связанный с текущим хранилищем сущностей.
//
// Возвращаемое значение:
// ОбъектМодели
//
Функция ПолучитьОбъектМодели() Экспорт
Возврат ОбъектМодели;
КонецФункции
// @internal
// Для служебного пользования.
//
// Возвращает пул сущностей текущего объекта.
//
// Возвращаемое значение:
// Соответствие - Пул сущностей.
//
Функция ПолучитьПулСущностей() Экспорт
Возврат ПулСущностей;
КонецФункции