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