diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\276\320\275\320\275\320\276\320\271\320\221\320\260\320\267\321\213\320\237\320\221\320\237/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\276\320\275\320\275\320\276\320\271\320\221\320\260\320\267\321\213\320\237\320\221\320\237/Ext/Module.bsl"
index dcce0f3..84a0fc3 100644
--- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\276\320\275\320\275\320\276\320\271\320\221\320\260\320\267\321\213\320\237\320\221\320\237/Ext/Module.bsl"
+++ "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\236\320\261\320\275\320\276\320\262\320\273\320\265\320\275\320\270\320\265\320\230\320\275\321\204\320\276\321\200\320\274\320\260\321\206\320\270\320\276\320\275\320\275\320\276\320\271\320\221\320\260\320\267\321\213\320\237\320\221\320\237/Ext/Module.bsl"
@@ -74,7 +74,7 @@
Процедура ПриДобавленииПодсистемы(Описание) Экспорт
Описание.Имя = "ПроектнаяБиблиотекаПодсистем";
- Описание.Версия = "1.0.4.15";
+ Описание.Версия = "1.0.4.17";
// Требуется библиотека стандартных подсистем.
Описание.ТребуемыеПодсистемы.Добавить("СтандартныеПодсистемы");
diff --git "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\241\321\205\320\265\320\274\321\213\320\227\320\260\320\277\321\200\320\276\321\201\320\276\320\262/Ext/Module.bsl" "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\241\321\205\320\265\320\274\321\213\320\227\320\260\320\277\321\200\320\276\321\201\320\276\320\262/Ext/Module.bsl"
index d6a3893..12c3e4e 100644
--- "a/src/cf/CommonModules/\320\277\320\261\320\277_\320\241\321\205\320\265\320\274\321\213\320\227\320\260\320\277\321\200\320\276\321\201\320\276\320\262/Ext/Module.bsl"
+++ "b/src/cf/CommonModules/\320\277\320\261\320\277_\320\241\321\205\320\265\320\274\321\213\320\227\320\260\320\277\321\200\320\276\321\201\320\276\320\262/Ext/Module.bsl"
@@ -60,14 +60,7 @@
//
Функция ДобавитьПолеВыборкиВЗапрос(Знач Запрос, ВыражениеПоля, ПсевдонимПоля = "", Знач ИндексЗапросаВПакете = Неопределено, РасширениеЯзыкаЗапросовСКД = Ложь, ЗаменятьСуществующееПоле = Ложь) Экспорт
- Если ТипЗнч(Запрос) = Тип("Строка") Тогда
- ТекстЗапроса = Запрос;
- ИначеЕсли ТипЗнч(Запрос) = Тип("Запрос") Тогда
- ТекстЗапроса = Запрос.Текст;
- Иначе
- ВызватьИсключение НСтр("ru = 'Некорректный тип параметра 1';
- |en = 'Incorrect type of parameter 1'") ;
- КонецЕсли;
+ ТекстЗапроса = ПолучитьТекстЗапроса(Запрос, 1);
СхемаЗапроса = Новый СхемаЗапроса;
@@ -126,11 +119,7 @@
// Удалим "мусор" схемы запроса
УдалитьНенужныеПоля(НовыйТекстЗапроса);
- Если ТипЗнч(Запрос) = Тип("Строка") Тогда
- Запрос = НовыйТекстЗапроса;
- ИначеЕсли ТипЗнч(Запрос) = Тип("Запрос") Тогда
- Запрос.Текст = НовыйТекстЗапроса;
- КонецЕсли;
+ УстановитьНовыйТекстЗапроса(Запрос, ТекстЗапроса);
Возврат Запрос;
@@ -154,14 +143,7 @@
//
Функция ДобавитьПоляВыборкиВЗапрос(Знач Запрос, ВыраженияПолей, Знач ИндексЗапросаВПакете = Неопределено, РасширениеЯзыкаЗапросовСКД = Ложь, ЗаменятьСуществующееПоле = Ложь) Экспорт
- Если ТипЗнч(Запрос) = Тип("Строка") Тогда
- ТекстЗапроса = Запрос;
- ИначеЕсли ТипЗнч(Запрос) = Тип("Запрос") Тогда
- ТекстЗапроса = Запрос.Текст;
- Иначе
- ВызватьИсключение НСтр("ru = 'Некорректный тип параметра 1';
- |en = 'Incorrect type of parameter 1'") ;
- КонецЕсли;
+ ТекстЗапроса = ПолучитьТекстЗапроса(Запрос, 1);
СхемаЗапроса = Новый СхемаЗапроса;
@@ -229,11 +211,7 @@
// Удалим "мусор" схемы запроса
УдалитьНенужныеПоля(НовыйТекстЗапроса);
- Если ТипЗнч(Запрос) = Тип("Строка") Тогда
- Запрос = НовыйТекстЗапроса;
- ИначеЕсли ТипЗнч(Запрос) = Тип("Запрос") Тогда
- Запрос.Текст = НовыйТекстЗапроса;
- КонецЕсли;
+ УстановитьНовыйТекстЗапроса(Запрос, ТекстЗапроса);
Возврат Запрос;
@@ -252,14 +230,7 @@
//
Функция УстановитьКоличествоПолучаемыхЗаписей(Знач Запрос, Знач КоличествоПолучаемыхЗаписей, Знач ИндексЗапросаВПакете = Неопределено) Экспорт
- Если ТипЗнч(Запрос) = Тип("Строка") Тогда
- ТекстЗапроса = Запрос;
- ИначеЕсли ТипЗнч(Запрос) = Тип("Запрос") Тогда
- ТекстЗапроса = Запрос.Текст;
- Иначе
- ВызватьИсключение НСтр("ru = 'Некорректный тип параметра 1';
- |en = 'Incorrect type of parameter 1'") ;
- КонецЕсли;
+ ТекстЗапроса = ПолучитьТекстЗапроса(Запрос, 1);
СхемаЗапроса = Новый СхемаЗапроса;
@@ -278,11 +249,7 @@
ТекстЗапроса = СхемаЗапроса.ПолучитьТекстЗапроса();
- Если ТипЗнч(Запрос) = Тип("Строка") Тогда
- Запрос = ТекстЗапроса;
- ИначеЕсли ТипЗнч(Запрос) = Тип("Запрос") Тогда
- Запрос.Текст = ТекстЗапроса;
- КонецЕсли;
+ УстановитьНовыйТекстЗапроса(Запрос, ТекстЗапроса);
Возврат Запрос;
@@ -302,14 +269,7 @@
//
Функция УстановитьВыборкуРазрешенныхЗаписей(Знач Запрос, Знач ВыбиратьРазрешенные, Знач ИндексЗапросаВПакете = Неопределено) Экспорт
- Если ТипЗнч(Запрос) = Тип("Строка") Тогда
- ТекстЗапроса = Запрос;
- ИначеЕсли ТипЗнч(Запрос) = Тип("Запрос") Тогда
- ТекстЗапроса = Запрос.Текст;
- Иначе
- ВызватьИсключение НСтр("ru = 'Некорректный тип параметра 1';
- |en = 'Incorrect type of parameter 1'") ;
- КонецЕсли;
+ ТекстЗапроса = ПолучитьТекстЗапроса(Запрос, 1);
СхемаЗапроса = Новый СхемаЗапроса;
@@ -326,11 +286,7 @@
ТекстЗапроса = СхемаЗапроса.ПолучитьТекстЗапроса();
- Если ТипЗнч(Запрос) = Тип("Строка") Тогда
- Запрос = ТекстЗапроса;
- ИначеЕсли ТипЗнч(Запрос) = Тип("Запрос") Тогда
- Запрос.Текст = ТекстЗапроса;
- КонецЕсли;
+ УстановитьНовыйТекстЗапроса(Запрос, ТекстЗапроса);
Возврат Запрос;
@@ -338,14 +294,7 @@
Функция УстановитьВыборкуРазрешенныхЗаписейВоВсемЗапросе(Знач Запрос, Знач ВыбиратьРазрешенные) Экспорт
- Если ТипЗнч(Запрос) = Тип("Строка") Тогда
- ТекстЗапроса = Запрос;
- ИначеЕсли ТипЗнч(Запрос) = Тип("Запрос") Тогда
- ТекстЗапроса = Запрос.Текст;
- Иначе
- ВызватьИсключение НСтр("ru = 'Некорректный тип параметра 1';
- |en = 'Incorrect type of parameter 1'") ;
- КонецЕсли;
+ ТекстЗапроса = ПолучитьТекстЗапроса(Запрос, 1);
СхемаЗапроса = Новый СхемаЗапроса;
@@ -365,11 +314,7 @@
ТекстЗапроса = СхемаЗапроса.ПолучитьТекстЗапроса();
- Если ТипЗнч(Запрос) = Тип("Строка") Тогда
- Запрос = ТекстЗапроса;
- ИначеЕсли ТипЗнч(Запрос) = Тип("Запрос") Тогда
- Запрос.Текст = ТекстЗапроса;
- КонецЕсли;
+ УстановитьНовыйТекстЗапроса(Запрос, ТекстЗапроса);
Возврат Запрос;
@@ -387,14 +332,7 @@
//
Функция ДобавитьУсловиеВЗапрос(Знач Запрос, ВыражениеУсловия, Знач ИндексЗапросаВПакете = Неопределено) Экспорт
- Если ТипЗнч(Запрос) = Тип("Строка") Тогда
- ТекстЗапроса = Запрос;
- ИначеЕсли ТипЗнч(Запрос) = Тип("Запрос") Тогда
- ТекстЗапроса = Запрос.Текст;
- Иначе
- ВызватьИсключение НСтр("ru = 'Некорректный тип параметра 1';
- |en = 'Incorrect type of parameter 1'") ;
- КонецЕсли;
+ ТекстЗапроса = ПолучитьТекстЗапроса(Запрос, 1);
Если Не ТипЗнч(ВыражениеУсловия) = Тип("Строка") Тогда
ТекстЗапроса = Запрос;
@@ -464,12 +402,65 @@
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, " КАК Поле" + НомерПоля, "");
КонецЦикла;
- Если ТипЗнч(Запрос) = Тип("Строка") Тогда
- Запрос = ТекстЗапроса;
- ИначеЕсли ТипЗнч(Запрос) = Тип("Запрос") Тогда
- Запрос.Текст = ТекстЗапроса;
+ УстановитьНовыйТекстЗапроса(Запрос, ТекстЗапроса);
+
+ Возврат Запрос;
+
+КонецФункции
+
+// Добавляет выражение отбора в секцию ГДЕ
+//
+// Параметры:
+// Запрос - Строка, Запрос - текст запроса или запрос.
+// ВыражениеУсловия - Строка - выражение условия для секции ГДЕ.
+// ИндексЗапросаВПакете - Число - индекс запроса в пакете запросов. Если не задано, то последний запрос в пакете.
+//
+// Возвращаемое значение:
+// Строка, Запрос - измененный текст запроса или запрос.
+//
+Функция ДобавитьОтборВЗапрос(Знач Запрос, ВыражениеУсловия, ИндексЗапросаВПакете = Неопределено, ИндексВОператорах = Неопределено) Экспорт
+
+ ТекстЗапроса = ПолучитьТекстЗапроса(Запрос, 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 Цикл
+ ТекстЗапроса = СтрЗаменить(ТекстЗапроса, " КАК Поле" + НомерПоля, "");
+ КонецЦикла;
+
+ УстановитьНовыйТекстЗапроса(Запрос, ТекстЗапроса);
+
Возврат Запрос;
КонецФункции
@@ -489,14 +480,7 @@
Функция ДобавитьСоединениеВЗапрос(Знач Запрос, ПсевдонимИсточника, ОписаниеСоединения,
Знач ИндексЗапросаВПакете = Неопределено, ЗаменятьСуществующееСоединение = Ложь) Экспорт
- Если ТипЗнч(Запрос) = Тип("Строка") Тогда
- ТекстЗапроса = Запрос;
- ИначеЕсли ТипЗнч(Запрос) = Тип("Запрос") Тогда
- ТекстЗапроса = Запрос.Текст;
- Иначе
- ВызватьИсключение НСтр("ru = 'Некорректный тип параметра 1';
- |en = 'Incorrect type of parameter 1'");
- КонецЕсли;
+ ТекстЗапроса = ПолучитьТекстЗапроса(Запрос, 1);
СхемаЗапроса = Новый СхемаЗапроса;
@@ -624,11 +608,7 @@
НовыйТекстЗапроса = СхемаЗапроса.ПолучитьТекстЗапроса();
- Если ТипЗнч(Запрос) = Тип("Строка") Тогда
- Запрос = НовыйТекстЗапроса;
- ИначеЕсли ТипЗнч(Запрос) = Тип("Запрос") Тогда
- Запрос.Текст = НовыйТекстЗапроса;
- КонецЕсли;
+ УстановитьНовыйТекстЗапроса(Запрос, НовыйТекстЗапроса);
Возврат Запрос;
@@ -646,14 +626,7 @@
//
Функция УдалитьПоляИзЗапроса(Знач Запрос, ПсевдонимыПолей, Знач ИндексЗапросаВПакете = Неопределено) Экспорт
- Если ТипЗнч(Запрос) = Тип("Строка") Тогда
- ТекстЗапроса = Запрос;
- ИначеЕсли ТипЗнч(Запрос) = Тип("Запрос") Тогда
- ТекстЗапроса = Запрос.Текст;
- Иначе
- ВызватьИсключение НСтр("ru = 'Некорректный тип параметра 1';
- |en = 'Incorrect type of parameter 1'") ;
- КонецЕсли;
+ ТекстЗапроса = ПолучитьТекстЗапроса(Запрос, 1);
СхемаЗапроса = Новый СхемаЗапроса;
@@ -693,11 +666,7 @@
НовыйТекстЗапроса = СхемаЗапроса.ПолучитьТекстЗапроса();
- Если ТипЗнч(Запрос) = Тип("Строка") Тогда
- Запрос = НовыйТекстЗапроса;
- ИначеЕсли ТипЗнч(Запрос) = Тип("Запрос") Тогда
- Запрос.Текст = НовыйТекстЗапроса;
- КонецЕсли;
+ УстановитьНовыйТекстЗапроса(Запрос, НовыйТекстЗапроса);
Возврат Запрос;
@@ -790,4 +759,29 @@
КонецПроцедуры
+Функция ПолучитьТекстЗапроса(Знач Запрос, НомерПараметра)
+
+ Если ТипЗнч(Запрос) = Тип("Строка") Тогда
+ ТекстЗапроса = Запрос;
+ ИначеЕсли ТипЗнч(Запрос) = Тип("Запрос") Тогда
+ ТекстЗапроса = Запрос.Текст;
+ Иначе
+ ВызватьИсключение СтрШаблон(НСтр("ru = 'Некорректный тип параметра %1';
+ |en = 'Incorrect type of parameter %1'"), НомерПараметра) ;
+ КонецЕсли;
+
+ Возврат ТекстЗапроса;
+
+КонецФункции
+
+Процедура УстановитьНовыйТекстЗапроса(Запрос, НовыйТекстЗапроса)
+
+ Если ТипЗнч(Запрос) = Тип("Строка") Тогда
+ Запрос = НовыйТекстЗапроса;
+ ИначеЕсли ТипЗнч(Запрос) = Тип("Запрос") Тогда
+ Запрос.Текст = НовыйТекстЗапроса;
+ КонецЕсли;
+
+КонецПроцедуры
+
#КонецОбласти
diff --git a/src/cf/Configuration.xml b/src/cf/Configuration.xml
index 5423bdf..9023350 100644
--- a/src/cf/Configuration.xml
+++ b/src/cf/Configuration.xml
@@ -57,7 +57,7 @@
Role.ИнтерактивноеОткрытиеВнешнихОтчетовИОбработок
Первый БИТ
- 1.0.4.15
+ 1.0.4.17
false
false