Skip to content

Commit

Permalink
added new func select in object model
Browse files Browse the repository at this point in the history
  • Loading branch information
denisushakov committed Dec 19, 2024
1 parent ba582d0 commit e333e90
Show file tree
Hide file tree
Showing 3 changed files with 99 additions and 105 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@
Процедура ПриДобавленииПодсистемы(Описание) Экспорт

Описание.Имя = "ПроектнаяБиблиотекаПодсистем";
Описание.Версия = "1.0.4.15";
Описание.Версия = "1.0.4.17";

// Требуется библиотека стандартных подсистем.
Описание.ТребуемыеПодсистемы.Добавить("СтандартныеПодсистемы");
Expand Down
200 changes: 97 additions & 103 deletions src/cf/CommonModules/пбп_СхемыЗапросов/Ext/Module.bsl
Original file line number Diff line number Diff line change
Expand Up @@ -60,14 +60,7 @@
//
Функция ДобавитьПолеВыборкиВЗапрос(Знач Запрос, ВыражениеПоля, ПсевдонимПоля = "", Знач ИндексЗапросаВПакете = Неопределено, РасширениеЯзыкаЗапросовСКД = Ложь, ЗаменятьСуществующееПоле = Ложь) Экспорт

Если ТипЗнч(Запрос) = Тип("Строка") Тогда
ТекстЗапроса = Запрос;
ИначеЕсли ТипЗнч(Запрос) = Тип("Запрос") Тогда
ТекстЗапроса = Запрос.Текст;
Иначе
ВызватьИсключение НСтр("ru = 'Некорректный тип параметра 1';
|en = 'Incorrect type of parameter 1'") ;
КонецЕсли;
ТекстЗапроса = ПолучитьТекстЗапроса(Запрос, 1);

СхемаЗапроса = Новый СхемаЗапроса;

Expand Down Expand Up @@ -126,11 +119,7 @@
// Удалим "мусор" схемы запроса
УдалитьНенужныеПоля(НовыйТекстЗапроса);

Если ТипЗнч(Запрос) = Тип("Строка") Тогда
Запрос = НовыйТекстЗапроса;
ИначеЕсли ТипЗнч(Запрос) = Тип("Запрос") Тогда
Запрос.Текст = НовыйТекстЗапроса;
КонецЕсли;
УстановитьНовыйТекстЗапроса(Запрос, ТекстЗапроса);

Возврат Запрос;

Expand All @@ -154,14 +143,7 @@
//
Функция ДобавитьПоляВыборкиВЗапрос(Знач Запрос, ВыраженияПолей, Знач ИндексЗапросаВПакете = Неопределено, РасширениеЯзыкаЗапросовСКД = Ложь, ЗаменятьСуществующееПоле = Ложь) Экспорт

Если ТипЗнч(Запрос) = Тип("Строка") Тогда
ТекстЗапроса = Запрос;
ИначеЕсли ТипЗнч(Запрос) = Тип("Запрос") Тогда
ТекстЗапроса = Запрос.Текст;
Иначе
ВызватьИсключение НСтр("ru = 'Некорректный тип параметра 1';
|en = 'Incorrect type of parameter 1'") ;
КонецЕсли;
ТекстЗапроса = ПолучитьТекстЗапроса(Запрос, 1);

СхемаЗапроса = Новый СхемаЗапроса;

Expand Down Expand Up @@ -229,11 +211,7 @@
// Удалим "мусор" схемы запроса
УдалитьНенужныеПоля(НовыйТекстЗапроса);

Если ТипЗнч(Запрос) = Тип("Строка") Тогда
Запрос = НовыйТекстЗапроса;
ИначеЕсли ТипЗнч(Запрос) = Тип("Запрос") Тогда
Запрос.Текст = НовыйТекстЗапроса;
КонецЕсли;
УстановитьНовыйТекстЗапроса(Запрос, ТекстЗапроса);

Возврат Запрос;

Expand All @@ -252,14 +230,7 @@
//
Функция УстановитьКоличествоПолучаемыхЗаписей(Знач Запрос, Знач КоличествоПолучаемыхЗаписей, Знач ИндексЗапросаВПакете = Неопределено) Экспорт

Если ТипЗнч(Запрос) = Тип("Строка") Тогда
ТекстЗапроса = Запрос;
ИначеЕсли ТипЗнч(Запрос) = Тип("Запрос") Тогда
ТекстЗапроса = Запрос.Текст;
Иначе
ВызватьИсключение НСтр("ru = 'Некорректный тип параметра 1';
|en = 'Incorrect type of parameter 1'") ;
КонецЕсли;
ТекстЗапроса = ПолучитьТекстЗапроса(Запрос, 1);

СхемаЗапроса = Новый СхемаЗапроса;

Expand All @@ -278,11 +249,7 @@

ТекстЗапроса = СхемаЗапроса.ПолучитьТекстЗапроса();

Если ТипЗнч(Запрос) = Тип("Строка") Тогда
Запрос = ТекстЗапроса;
ИначеЕсли ТипЗнч(Запрос) = Тип("Запрос") Тогда
Запрос.Текст = ТекстЗапроса;
КонецЕсли;
УстановитьНовыйТекстЗапроса(Запрос, ТекстЗапроса);

Возврат Запрос;

Expand All @@ -302,14 +269,7 @@
//
Функция УстановитьВыборкуРазрешенныхЗаписей(Знач Запрос, Знач ВыбиратьРазрешенные, Знач ИндексЗапросаВПакете = Неопределено) Экспорт

Если ТипЗнч(Запрос) = Тип("Строка") Тогда
ТекстЗапроса = Запрос;
ИначеЕсли ТипЗнч(Запрос) = Тип("Запрос") Тогда
ТекстЗапроса = Запрос.Текст;
Иначе
ВызватьИсключение НСтр("ru = 'Некорректный тип параметра 1';
|en = 'Incorrect type of parameter 1'") ;
КонецЕсли;
ТекстЗапроса = ПолучитьТекстЗапроса(Запрос, 1);

СхемаЗапроса = Новый СхемаЗапроса;

Expand All @@ -326,26 +286,15 @@

ТекстЗапроса = СхемаЗапроса.ПолучитьТекстЗапроса();

Если ТипЗнч(Запрос) = Тип("Строка") Тогда
Запрос = ТекстЗапроса;
ИначеЕсли ТипЗнч(Запрос) = Тип("Запрос") Тогда
Запрос.Текст = ТекстЗапроса;
КонецЕсли;
УстановитьНовыйТекстЗапроса(Запрос, ТекстЗапроса);

Возврат Запрос;

КонецФункции

Функция УстановитьВыборкуРазрешенныхЗаписейВоВсемЗапросе(Знач Запрос, Знач ВыбиратьРазрешенные) Экспорт

Если ТипЗнч(Запрос) = Тип("Строка") Тогда
ТекстЗапроса = Запрос;
ИначеЕсли ТипЗнч(Запрос) = Тип("Запрос") Тогда
ТекстЗапроса = Запрос.Текст;
Иначе
ВызватьИсключение НСтр("ru = 'Некорректный тип параметра 1';
|en = 'Incorrect type of parameter 1'") ;
КонецЕсли;
ТекстЗапроса = ПолучитьТекстЗапроса(Запрос, 1);

СхемаЗапроса = Новый СхемаЗапроса;

Expand All @@ -365,11 +314,7 @@

ТекстЗапроса = СхемаЗапроса.ПолучитьТекстЗапроса();

Если ТипЗнч(Запрос) = Тип("Строка") Тогда
Запрос = ТекстЗапроса;
ИначеЕсли ТипЗнч(Запрос) = Тип("Запрос") Тогда
Запрос.Текст = ТекстЗапроса;
КонецЕсли;
УстановитьНовыйТекстЗапроса(Запрос, ТекстЗапроса);

Возврат Запрос;

Expand All @@ -387,14 +332,7 @@
//
Функция ДобавитьУсловиеВЗапрос(Знач Запрос, ВыражениеУсловия, Знач ИндексЗапросаВПакете = Неопределено) Экспорт

Если ТипЗнч(Запрос) = Тип("Строка") Тогда
ТекстЗапроса = Запрос;
ИначеЕсли ТипЗнч(Запрос) = Тип("Запрос") Тогда
ТекстЗапроса = Запрос.Текст;
Иначе
ВызватьИсключение НСтр("ru = 'Некорректный тип параметра 1';
|en = 'Incorrect type of parameter 1'") ;
КонецЕсли;
ТекстЗапроса = ПолучитьТекстЗапроса(Запрос, 1);

Если Не ТипЗнч(ВыражениеУсловия) = Тип("Строка") Тогда
ТекстЗапроса = Запрос;
Expand Down Expand Up @@ -464,12 +402,65 @@
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, " КАК Поле" + НомерПоля, "");
КонецЦикла;

Если ТипЗнч(Запрос) = Тип("Строка") Тогда
Запрос = ТекстЗапроса;
ИначеЕсли ТипЗнч(Запрос) = Тип("Запрос") Тогда
Запрос.Текст = ТекстЗапроса;
УстановитьНовыйТекстЗапроса(Запрос, ТекстЗапроса);

Возврат Запрос;

КонецФункции

// Добавляет выражение отбора в секцию ГДЕ
//
// Параметры:
// Запрос - Строка, Запрос - текст запроса или запрос.
// ВыражениеУсловия - Строка - выражение условия для секции ГДЕ.
// ИндексЗапросаВПакете - Число - индекс запроса в пакете запросов. Если не задано, то последний запрос в пакете.
//
// Возвращаемое значение:
// Строка, Запрос - измененный текст запроса или запрос.
//
Функция ДобавитьОтборВЗапрос(Знач Запрос, ВыражениеУсловия, ИндексЗапросаВПакете = Неопределено, ИндексВОператорах = Неопределено) Экспорт

Check warning on line 421 in src/cf/CommonModules/пбп_СхемыЗапросов/Ext/Module.bsl

View check run for this annotation

sonar.openbsl.ru qa-bot / 1C: Project SubSystems Library Sonarqube Results

src/cf/CommonModules/пбп_СхемыЗапросов/Ext/Module.bsl#L421

Необходимо добавить описание параметра "ИндексВОператорах"

Check warning on line 421 in src/cf/CommonModules/пбп_СхемыЗапросов/Ext/Module.bsl

View check run for this annotation

sonar.openbsl.ru qa-bot / 1C: Project SubSystems Library Sonarqube Results

src/cf/CommonModules/пбп_СхемыЗапросов/Ext/Module.bsl#L421

Длина строки 139 превышает максимально допустимую 120

ТекстЗапроса = ПолучитьТекстЗапроса(Запрос, 1);

Если Не ТипЗнч(ВыражениеУсловия) = Тип("Строка") Тогда
ВызватьИсключение НСтр("ru = 'Некорректный тип параметра 2';
|en = 'Incorrect type of parameter 2'") ;
КонецЕсли;

СхемаЗапроса = Новый СхемаЗапроса;

СхемаЗапроса.УстановитьТекстЗапроса(ТекстЗапроса);

ИзменяемыйЗапрос = ЗапросПакетаЗапросов(СхемаЗапроса, ИндексЗапросаВПакете);

Если ТипЗнч(ИзменяемыйЗапрос) = Тип("ЗапросУничтоженияТаблицыСхемыЗапроса") Тогда
ВызватьИсключение НСтр("ru = 'Невозможно добавить параметр в запрос уничтожения таблицы.';
|en = 'Cannot add parameter to the table removal query.'");
КонецЕсли;

Если ИндексВОператорах <> Неопределено Тогда
Если ИндексВОператорах > ИзменяемыйЗапрос.Операторы.Количество() Тогда
ВызватьИсключение НСтр("ru = 'Некорректный индекс операторов';
|en = 'Incorrect operator index'");
КонецЕсли;

ИзменяемыйЗапрос.Операторы[ИндексВОператорах].Отбор.Добавить(ВыражениеУсловия);
Иначе
// Подстановка выражения во все операторы
Для Каждого ОператорЗапроса Из ИзменяемыйЗапрос.Операторы Цикл
ОператорЗапроса.Отбор.Добавить(ВыражениеУсловия);
КонецЦикла;
КонецЕсли;

ТекстЗапроса = СхемаЗапроса.ПолучитьТекстЗапроса();

// Удалим "мусор" схемы запроса
Для НомерПоля = 1 По 9 Цикл
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, " КАК Поле" + НомерПоля, "");
КонецЦикла;

УстановитьНовыйТекстЗапроса(Запрос, ТекстЗапроса);

Возврат Запрос;

КонецФункции
Expand All @@ -489,14 +480,7 @@
Функция ДобавитьСоединениеВЗапрос(Знач Запрос, ПсевдонимИсточника, ОписаниеСоединения,
Знач ИндексЗапросаВПакете = Неопределено, ЗаменятьСуществующееСоединение = Ложь) Экспорт

Если ТипЗнч(Запрос) = Тип("Строка") Тогда
ТекстЗапроса = Запрос;
ИначеЕсли ТипЗнч(Запрос) = Тип("Запрос") Тогда
ТекстЗапроса = Запрос.Текст;
Иначе
ВызватьИсключение НСтр("ru = 'Некорректный тип параметра 1';
|en = 'Incorrect type of parameter 1'");
КонецЕсли;
ТекстЗапроса = ПолучитьТекстЗапроса(Запрос, 1);

СхемаЗапроса = Новый СхемаЗапроса;

Expand Down Expand Up @@ -624,11 +608,7 @@

НовыйТекстЗапроса = СхемаЗапроса.ПолучитьТекстЗапроса();

Если ТипЗнч(Запрос) = Тип("Строка") Тогда
Запрос = НовыйТекстЗапроса;
ИначеЕсли ТипЗнч(Запрос) = Тип("Запрос") Тогда
Запрос.Текст = НовыйТекстЗапроса;
КонецЕсли;
УстановитьНовыйТекстЗапроса(Запрос, НовыйТекстЗапроса);

Возврат Запрос;

Expand All @@ -646,14 +626,7 @@
//
Функция УдалитьПоляИзЗапроса(Знач Запрос, ПсевдонимыПолей, Знач ИндексЗапросаВПакете = Неопределено) Экспорт

Если ТипЗнч(Запрос) = Тип("Строка") Тогда
ТекстЗапроса = Запрос;
ИначеЕсли ТипЗнч(Запрос) = Тип("Запрос") Тогда
ТекстЗапроса = Запрос.Текст;
Иначе
ВызватьИсключение НСтр("ru = 'Некорректный тип параметра 1';
|en = 'Incorrect type of parameter 1'") ;
КонецЕсли;
ТекстЗапроса = ПолучитьТекстЗапроса(Запрос, 1);

СхемаЗапроса = Новый СхемаЗапроса;

Expand Down Expand Up @@ -693,11 +666,7 @@

НовыйТекстЗапроса = СхемаЗапроса.ПолучитьТекстЗапроса();

Если ТипЗнч(Запрос) = Тип("Строка") Тогда
Запрос = НовыйТекстЗапроса;
ИначеЕсли ТипЗнч(Запрос) = Тип("Запрос") Тогда
Запрос.Текст = НовыйТекстЗапроса;
КонецЕсли;
УстановитьНовыйТекстЗапроса(Запрос, НовыйТекстЗапроса);

Возврат Запрос;

Expand Down Expand Up @@ -790,4 +759,29 @@

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

Функция ПолучитьТекстЗапроса(Знач Запрос, НомерПараметра)

Если ТипЗнч(Запрос) = Тип("Строка") Тогда
ТекстЗапроса = Запрос;
ИначеЕсли ТипЗнч(Запрос) = Тип("Запрос") Тогда
ТекстЗапроса = Запрос.Текст;
Иначе
ВызватьИсключение СтрШаблон(НСтр("ru = 'Некорректный тип параметра %1';
|en = 'Incorrect type of parameter %1'"), НомерПараметра) ;
КонецЕсли;

Возврат ТекстЗапроса;

КонецФункции

Процедура УстановитьНовыйТекстЗапроса(Запрос, НовыйТекстЗапроса)

Если ТипЗнч(Запрос) = Тип("Строка") Тогда
Запрос = НовыйТекстЗапроса;
ИначеЕсли ТипЗнч(Запрос) = Тип("Запрос") Тогда
Запрос.Текст = НовыйТекстЗапроса;
КонецЕсли;

Check warning on line 783 in src/cf/CommonModules/пбп_СхемыЗапросов/Ext/Module.bsl

View check run for this annotation

sonar.openbsl.ru qa-bot / 1C: Project SubSystems Library Sonarqube Results

src/cf/CommonModules/пбп_СхемыЗапросов/Ext/Module.bsl#L783

Синтаксическая конструкция вида "Если...Тогда...ИначеЕсли..." должна содержать ветвь "Иначе".

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

#КонецОбласти
2 changes: 1 addition & 1 deletion src/cf/Configuration.xml
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@
<xr:Item xsi:type="xr:MDObjectRef">Role.ИнтерактивноеОткрытиеВнешнихОтчетовИОбработок</xr:Item>
</DefaultRoles>
<Vendor>Первый БИТ</Vendor>
<Version>1.0.4.15</Version>
<Version>1.0.4.17</Version>
<UpdateCatalogAddress/>
<IncludeHelpInContents>false</IncludeHelpInContents>
<UseManagedFormInOrdinaryApplication>false</UseManagedFormInOrdinaryApplication>
Expand Down

0 comments on commit e333e90

Please sign in to comment.