Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions docs/МенеджерСущностей.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,10 @@
```bsl
// Регистрирует переданный тип класса-сценария в модели данных.
//
// Повторная регистрация типа модель не меняет: остается прежний объект модели, с которым уже
// работают хранилища. Регистрировать классы можно и после передачи менеджера другим потокам, но
// таблицы создает Инициализировать, поэтому обычно классы регистрируют до него.
//
// Параметры:
// ТипСущности - Тип - Тип для добавления в модель
//
Expand Down
32 changes: 29 additions & 3 deletions docs/МодельДанных.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
## МодельДанных

Модель общая у всех потоков, работающих с менеджером: операции читают ее на каждом шаге, а классы
можно регистрировать и после передачи менеджера другим потокам.

### ПриСозданииОбъекта

```bsl
Expand All @@ -10,21 +13,44 @@
### Получить

```bsl

// Возвращает объект модели типа сущности.
//
// Параметры:
// ТипСущности - Тип - Тип сущности.
//
// Возвращаемое значение:
// ОбъектМодели - Объект модели типа.
// Неопределено - Тип не зарегистрирован в модели.
//
Функция Получить(ТипСущности) Экспорт
```

### ПолучитьОбъектыМодели

```bsl

// Возвращает объекты модели всех зарегистрированных типов.
//
// Возвращаемое значение:
// Массив из ОбъектМодели - Копия на момент вызова: типы, зарегистрированные позже, в нее не
// попадут.
//
Функция ПолучитьОбъектыМодели() Экспорт
```

### СоздатьОбъектМодели

```bsl

// Регистрирует тип сущности в модели.
//
// Если тип уже зарегистрирован, возвращается существующий объект модели: с ним уже могут работать
// хранилища и операции других потоков, поэтому он не подменяется.
//
// Параметры:
// ТипСущности - Тип - Тип сущности.
//
// Возвращаемое значение:
// ОбъектМодели - Объект модели типа.
//
Функция СоздатьОбъектМодели(ТипСущности) Экспорт
```

24 changes: 14 additions & 10 deletions docs/ОбъектМодели.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,16 @@
### ПриСозданииОбъекта

```bsl

Процедура ПриСозданииОбъекта(ПТипСущности, ПМодельДанных)
// Создает объект модели по аннотациям класса сущности.
//
// Параметры:
// ПТипСущности - Тип - Тип класса сущности.
// ПМодельДанных - МодельДанных - Модель, к которой относится объект.
// ПИмяТаблицы - Строка - Имя таблицы вместо имени из аннотации класса. Так создаются объекты
// модели подчиненных таблиц: класс элемента у них один, а таблицы разные.
// - Неопределено - Имя таблицы берется из аннотации класса.
//
Процедура ПриСозданииОбъекта(ПТипСущности, ПМодельДанных, ПИмяТаблицы = Неопределено)
```

### ИмяТаблицы
Expand All @@ -19,8 +27,11 @@
```bsl
// Возвращает таблицу колонок модели.
//
// Объект модели общий у всех потоков, работающих с менеджером, поэтому отдается копия: ее можно
// менять, модель от этого не изменится.
//
// Возвращаемое значение:
// ТаблицаЗначений - Колонки модели, только для чтения.
// ТаблицаЗначений - Копия колонок модели.
//
Функция Колонки() Экспорт
```
Expand All @@ -32,13 +43,6 @@
Функция ПодчиненныеТаблицы() Экспорт
```

### Служебный_ИмяТаблицы

```bsl
// @internal
Процедура Служебный_ИмяТаблицы(ПИмяТаблицы) Экспорт
```

### Идентификатор

```bsl
Expand Down
7 changes: 6 additions & 1 deletion docs/ТипыКолонок.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,16 @@
* Время
* ДатаВремя
* Ссылка
* ДвоичныеДанные

### Типы

```bsl

// Возвращает все типы колонок модели.
//
// Возвращаемое значение:
// ФиксированныйМассив из Строка - Имена типов колонок.
//
Функция Типы() Экспорт
```

Expand Down
6 changes: 5 additions & 1 deletion docs/ТипыПодчиненныхТаблиц.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,11 @@
### Типы

```bsl

// Возвращает все типы подчиненных таблиц.
//
// Возвращаемое значение:
// ФиксированныйМассив из Строка - Имена типов подчиненных таблиц.
//
Функция Типы() Экспорт
```

Original file line number Diff line number Diff line change
Expand Up @@ -89,12 +89,12 @@

ОбъектМоделиЭлементКоллекции = Новый ОбъектМодели(
Тип("СлужебнаяСущность_ЭлементКоллекцииКлючЗначение"),
РодительскийОбъектМодели.МодельДанных()
РодительскийОбъектМодели.МодельДанных(),
ПодчиненнаяТаблица.ИмяТаблицы
);

ОбъектМоделиЭлементКоллекции.Служебный_ИмяТаблицы(ПодчиненнаяТаблица.ИмяТаблицы);
// Колонки модели только для чтения, но этот объект модели только что создан и еще никому не отдан.
КолонкиОбъектаМодели = ОбъектМоделиЭлементКоллекции.Колонки();
КолонкиОбъектаМодели = ОбъектМоделиЭлементКоллекции.Служебный_Колонки();

КолонкаKey = КолонкиОбъектаМодели.Найти("key", "ИмяКолонки");
КолонкаKey.ТипКолонки = ТипКолонкиКлюч;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@
//
Функция Получить(Менеджер, ОбъектМодели, ПулСущностей, ОпцииПоиска) Экспорт

ПередаваемыеОпцииПоиска = ПреобразоватьОпцииПоиска(ОбъектМодели.Колонки(), ОпцииПоиска);
ПередаваемыеОпцииПоиска = ПреобразоватьОпцииПоиска(ОбъектМодели.Служебный_Колонки(), ОпцииПоиска);

Возврат НайтиСущности(Менеджер, ОбъектМодели, ПулСущностей, ПередаваемыеОпцииПоиска, "Получить");

Expand Down Expand Up @@ -139,7 +139,7 @@
ПередаваемыеОпцииПоиска.Отбор(ОбъектМодели.Идентификатор().ИмяПоля, ВидСравнения.Равно, ОпцииПоиска);
КонецЕсли;

ПередаваемыеОпцииПоиска = ПреобразоватьОпцииПоиска(ОбъектМодели.Колонки(), ПередаваемыеОпцииПоиска);
ПередаваемыеОпцииПоиска = ПреобразоватьОпцииПоиска(ОбъектМодели.Служебный_Колонки(), ПередаваемыеОпцииПоиска);

НайденныеСущности = НайтиСущности(Менеджер, ОбъектМодели, ПулСущностей, ПередаваемыеОпцииПоиска, "ПолучитьОдно");

Expand Down Expand Up @@ -539,7 +539,7 @@
//
Процедура ЗаполнитьКолонки(Сущность, НайденнаяСтрока, Менеджер, ОбъектМодели, Знач ЗначениеИдентификатора)

Для Каждого Колонка Из ОбъектМодели.Колонки() Цикл
Для Каждого Колонка Из ОбъектМодели.Служебный_Колонки() Цикл

ЗначениеКолонки = НайденнаяСтрока.Получить(Колонка.ИмяКолонки);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -184,8 +184,8 @@
Функция НайтиСтрокиВТаблице(ОбъектМодели, ОпцииПоиска) Экспорт

НайденныеСтроки = Новый Массив;
Колонки = ОбъектМодели.Колонки();
Колонки = ОбъектМодели.Служебный_Колонки();

Запрос = Коннектор.КонструкторКоннектора.НовыйЗапрос(Коннектор.Соединение);

ТекстЗапроса = СтрШаблон(
Expand Down Expand Up @@ -304,7 +304,7 @@

ТекстЗапроса = ШаблонСозданияТаблицы;

КолонкиТаблицы = ОбъектМодели.Колонки();
КолонкиТаблицы = ОбъектМодели.Служебный_Колонки();
Идентификатор = ОбъектМодели.Идентификатор();
СтрокаОпределенийКолонок = "";
СтрокаВнешнихКлючей = "";
Expand Down
10 changes: 5 additions & 5 deletions src/Классы/КоннекторInMemory.os
Original file line number Diff line number Diff line change
Expand Up @@ -249,7 +249,7 @@

СущностьВБД = Новый (ОбъектМодели.ТипСущности());

Для Каждого Колонка Из ОбъектМодели.Колонки() Цикл
Для Каждого Колонка Из ОбъектМодели.Служебный_Колонки() Цикл
Значение = ОбъектМодели.ПолучитьПриведенноеЗначениеПоля(
Сущность,
Колонка.ИмяПоля);
Expand Down Expand Up @@ -374,8 +374,8 @@

ПроцессорКоллекций = ПроцессорыКоллекций.ИзКоллекции(Таблица);

Колонки = ОбъектМодели.Колонки();
Колонки = ОбъектМодели.Служебный_Колонки();

Для Каждого ЭлементОтбора Из Отборы Цикл

НайденныеКолонки = Колонки.НайтиСтроки(Новый Структура("ИмяКолонки", ЭлементОтбора.ПутьКДанным));
Expand Down Expand Up @@ -455,8 +455,8 @@

Результат = Новый Массив();

Колонки = ОбъектМодели.Колонки();
Колонки = ОбъектМодели.Служебный_Колонки();

Для Каждого СтрокаДанныхТаблицы Из ДанныеТаблицы Цикл
ЗначенияКолонок = Новый Соответствие;
Для Каждого Колонка Из Колонки Цикл
Expand Down
8 changes: 4 additions & 4 deletions src/Классы/КоннекторJSON.os
Original file line number Diff line number Diff line change
Expand Up @@ -368,7 +368,7 @@

Для Каждого СтрокаДанныхТаблицы Из ДанныеТаблицы Цикл
ЗначенияКолонок = Новый Соответствие;
Для Каждого Колонка Из ОбъектМодели.Колонки() Цикл
Для Каждого Колонка Из ОбъектМодели.Служебный_Колонки() Цикл
Значение = ПрочитатьЗначениеКолонки(Колонка, СтрокаДанныхТаблицы.Значение.Получить(Колонка.ИмяКолонки));
ЗначенияКолонок.Вставить(Колонка.ИмяКолонки, Значение);
КонецЦикла;
Expand Down Expand Up @@ -424,7 +424,7 @@
//
Функция ПолучитьВыражениеСортировки(ОбъектМодели, ОпцииПоиска)

Колонки = ОбъектМодели.Колонки();
Колонки = ОбъектМодели.Служебный_Колонки();
СтрокаСортировка = "";

Для Каждого ЭлементПорядка Из ОпцииПоиска.Сортировки() Цикл
Expand Down Expand Up @@ -537,7 +537,7 @@

Функция РазложитьОбъектВСоответствие(Значение, ОбъектМодели)
Соответствие = Новый Соответствие;
Для Каждого Колонка Из ОбъектМодели.Колонки() Цикл
Для Каждого Колонка Из ОбъектМодели.Служебный_Колонки() Цикл
ЗначениеПараметра = ОбъектМодели.ПолучитьПриведенноеЗначениеПоля(Значение, Колонка.ИмяПоля);
Если Колонка.ТипКолонки = ТипыКолонок.ДвоичныеДанные И ЗначениеПараметра <> Неопределено Тогда
ЗначениеПараметра = ПолучитьBase64СтрокуИзДвоичныхДанных(ЗначениеПараметра);
Expand All @@ -557,7 +557,7 @@
Процедура ВосстановитьДатыВТаблице(Таблица, ОбъектМодели)

КолонкиДат = Новый Массив;
Для Каждого Колонка Из ОбъектМодели.Колонки() Цикл
Для Каждого Колонка Из ОбъектМодели.Служебный_Колонки() Цикл
Если Колонка.ТипКолонки = ТипыКолонок.Дата
ИЛИ Колонка.ТипКолонки = ТипыКолонок.Время
ИЛИ Колонка.ТипКолонки = ТипыКолонок.ДатаВремя Тогда
Expand Down
2 changes: 1 addition & 1 deletion src/Классы/КоннекторPostgreSQL.os
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@
Процедура Сохранить(ОбъектМодели, Сущность) Экспорт

ИмяТаблицы = ОбъектМодели.ИмяТаблицы();
КолонкиТаблицы = ОбъектМодели.Колонки();
КолонкиТаблицы = ОбъектМодели.Служебный_Колонки();

Запрос = КонструкторКоннектора.НовыйЗапрос(Соединение);

Expand Down
2 changes: 1 addition & 1 deletion src/Классы/КоннекторSQLite.os
Original file line number Diff line number Diff line change
Expand Up @@ -132,7 +132,7 @@
Процедура Сохранить(ОбъектМодели, Сущность) Экспорт

ИмяТаблицы = ОбъектМодели.ИмяТаблицы();
КолонкиТаблицы = ОбъектМодели.Колонки();
КолонкиТаблицы = ОбъектМодели.Служебный_Колонки();

Запрос = КонструкторКоннектора.НовыйЗапрос(Соединение);

Expand Down
4 changes: 4 additions & 0 deletions src/Классы/МенеджерСущностей.os
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,10 @@

// Регистрирует переданный тип класса-сценария в модели данных.
//
// Повторная регистрация типа модель не меняет: остается прежний объект модели, с которым уже
// работают хранилища. Регистрировать классы можно и после передачи менеджера другим потокам, но
// таблицы создает Инициализировать, поэтому обычно классы регистрируют до него.
//
// Параметры:
// ТипСущности - Тип - Тип для добавления в модель
//
Expand Down
Loading
Loading