Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Фикс поиска по именованной колонке в коннекторе in-memory #91

Merged
merged 1 commit into from
Apr 15, 2024
Merged
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
13 changes: 12 additions & 1 deletion src/Классы/КоннекторInMemory.os
Original file line number Diff line number Diff line change
Expand Up @@ -198,11 +198,22 @@
КонецЕсли;

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

Колонки = ОбъектМодели.Колонки();

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

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

Если НайденныеКолонки.Количество() = 0 Тогда
ИмяПоля = ЭлементОтбора.ПутьКДанным;
Иначе
ИмяПоля = НайденныеКолонки[0].ИмяПоля;
КонецЕсли;

СтрокаУсловие = СтрШаблон(
"Результат = Элемент._Сущность.%1 %2 ДополнительныеПараметры.Значение",
ЭлементОтбора.ПутьКДанным,
ИмяПоля,
ЭлементОтбора.ВидСравнения
);
ДополнительныеПараметры = Новый Структура("Значение", ЭлементОтбора.Значение);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
&Идентификатор
&ГенерируемоеЗначение
&Колонка(Имя = "Идентификатор", Тип = "Целое")
Перем ВнутреннийИдентификатор Экспорт;

Перем Имя Экспорт;

&Колонка(Имя = "Фамилия")
Перем ВтороеИмя Экспорт;

&Сущность(ИмяТаблицы = "СущностиСИменованнымПолем")
Процедура ПриСозданииОбъекта()

КонецПроцедуры
24 changes: 24 additions & 0 deletions tests/КоннекторInMemory.os
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@
ХранилищеВПамяти.Очистить();
ПодключитьСценарий(ОбъединитьПути(ТекущийКаталог(), "tests", "fixtures", "СущностьСоВсемиТипамиКолонок.os"), "СущностьСоВсемиТипамиКолонок");
ПодключитьСценарий(ОбъединитьПути(ТекущийКаталог(), "tests", "fixtures", "АвтоинкрементныйКлючБезКолонок.os"), "АвтоинкрементныйКлючБезКолонок");
ПодключитьСценарий(ОбъединитьПути(ТекущийКаталог(), "tests", "fixtures", "СущностьСИменованнымПолем.os"), "СущностьСИменованнымПолем");

Коннектор = Новый КоннекторInMemory();
Коннектор.Открыть(СтрокаСоединения, Новый Массив);
Expand Down Expand Up @@ -229,4 +230,27 @@
Ожидаем.Что(НайденныйПростойОбъект.Идентификатор).Равно("1");
Ожидаем.Что(НайденныйПростойОбъект.Поле).Равно("2");

КонецПроцедуры

&Тест
Процедура РаботаСИменованнымПолем() Экспорт
// Дано
МенеджерСущностей = Новый МенеджерСущностей(Тип("КоннекторInMemory"));
МенеджерСущностей.ДобавитьКлассВМодель(Тип("СущностьСИменованнымПолем"));
МенеджерСущностей.Инициализировать();

// Когда
СущностьСИменованнымПолем = МенеджерСущностей.СоздатьЭлемент(Тип("СущностьСИменованнымПолем"));
СущностьСИменованнымПолем.Имя = "1";
СущностьСИменованнымПолем.ВтороеИмя = "а";
МенеджерСущностей.Сохранить(СущностьСИменованнымПолем);

// Тогда
Отбор = Новый Соответствие();
Отбор.Вставить("ВтороеИмя", "а");

Результат = МенеджерСущностей.Получить(Тип("СущностьСИменованнымПолем"), Отбор);

Ожидаем.Что(Результат[0].Имя).Равно("1");

КонецПроцедуры
Loading