1
0
mirror of https://github.com/zerobig/fluent-request-schema-1c.git synced 2025-08-09 21:27:11 +02:00

Вложенные запросы, итоги, разные мелочи

This commit is contained in:
Ilya Bushin
2024-10-19 17:09:37 +03:00
parent bcf73c4f13
commit 9e1783d4a0
6 changed files with 238 additions and 74 deletions

View File

@@ -3,42 +3,50 @@
Процедура ИсполняемыеСценарии() Экспорт
ЮТТесты.УдалениеТестовыхДанных()
.ДобавитьТест("ИсключениеИсточникОтсутствует")
.ДобавитьТест("ИсключениеИсточникПустаяСтрока")
.ДобавитьТест("ЗапросВТаблицуЗначений")
.ДобавитьТест("ЗапросВМассив")
.ДобавитьТест("Первые")
.ДобавитьТест("Различные")
.ДобавитьТест("Разрешенные")
.ДобавитьТест("ИсключениеПолеОтсутствует")
.ДобавитьТест("ДобавитьПоляССинонимами")
.ДобавитьТест("ДобавитьНесколькоПолей")
.ДобавитьТест("ДобавитьНесколькоПолейСПереносомСтроки")
.ДобавитьТест("ДобавитьПоляССинонимамиИСписком")
.ДобавитьТест("ВсеПоляДляНеСсылочногоТипа")
.ДобавитьТест("ВсеПоляДляСсылочногоТипа")
.ДобавитьТест("ЗапросСУсловиемРавно")
.ДобавитьТест("ЗапросСУсловиемНеРавно")
.ДобавитьТест("ЗапросСУсловиемПодобно")
.ДобавитьТест("ЗапросСУсловиемНеПодобно")
.ДобавитьТест("ЗапросСУсловиемМежду")
.ДобавитьТест("ЗапросСУсловиемВСписке")
.Перед("Перед_ЗапросСУсловиемВСписке")
.ДобавитьТест("ЗапросСУсловиемНеВСписке")
.Перед("Перед_ЗапросСУсловиемНеВСписке")
.ДобавитьТест("ЛевоеСоединениеПоИсточникуСтроке")
.ДобавитьТест("ЛевоеСоединениеПоИсточникуЗапросу")
.ДобавитьТест("ЛевоеСоединениеБезПредиката")
.ДобавитьТест("ЛевоеСоединениеНесколькоУсловийВПредикате")
.ДобавитьТест("ЛевоеСоединениеПредикатЭтоПараметр")
.ДобавитьТест("ЛевоеСоединениеБезПсевдонимовВСоединении")
.ДобавитьТест("НесколькоЛевыхСоединений")
.ДобавитьТест("ВложенныйЗапрос")
.ДобавитьТест("Порядок")
.ДобавитьТест("ПорядокУбывания")
.ДобавитьТест("Итоги")
.ДобавитьТест("АдресныйКлассификаторСлужебный_ТаблицаАдресныхСокращений")
.Перед("Перед_АдресныйКлассификаторСлужебный_ТаблицаАдресныхСокращений")
.ДобавитьТестовыйНабор("СЗ: Базовые")
.ДобавитьТест("ИсключениеИсточникОтсутствует")
.ДобавитьТест("ИсключениеИсточникПустаяСтрока")
.ДобавитьТест("ЗапросВТаблицуЗначений")
.ДобавитьТест("ЗапросВМассив")
.ДобавитьТест("Первые")
.ДобавитьТест("Различные")
.ДобавитьТест("Разрешенные")
.ДобавитьТестовыйНабор("СЗ: Поля")
.ДобавитьТест("ИсключениеПолеОтсутствует")
.ДобавитьТест("ДобавитьПоляССинонимами")
.ДобавитьТест("ДобавитьНесколькоПолей")
.ДобавитьТест("ДобавитьНесколькоПолейСПереносомСтроки")
.ДобавитьТест("ДобавитьПоляССинонимамиИСписком")
.ДобавитьТест("ВсеПоляДляНеСсылочногоТипа")
.ДобавитьТест("ВсеПоляДляСсылочногоТипа")
.ДобавитьТестовыйНабор("СЗ: Условия")
.ДобавитьТест("ЗапросСУсловиемРавно")
.ДобавитьТест("ЗапросСУсловиемНеРавно")
.ДобавитьТест("ЗапросСУсловиемПодобно")
.ДобавитьТест("ЗапросСУсловиемНеПодобно")
.ДобавитьТест("ЗапросСУсловиемМежду")
.ДобавитьТест("ЗапросСУсловиемВСписке")
.Перед("Перед_ЗапросСУсловиемВСписке")
.ДобавитьТест("ЗапросСУсловиемНеВСписке")
.Перед("Перед_ЗапросСУсловиемНеВСписке")
.ДобавитьТестовыйНабор("СЗ: Соединения")
.ДобавитьТест("ЛевоеСоединениеПоИсточникуСтроке")
.ДобавитьТест("ЛевоеСоединениеПоИсточникуЗапросу")
.ДобавитьТест("ЛевоеСоединениеБезПредиката")
.ДобавитьТест("ЛевоеСоединениеНесколькоУсловийВПредикате")
.ДобавитьТест("ЛевоеСоединениеПредикатЭтоПараметр")
.ДобавитьТест("ЛевоеСоединениеБезПсевдонимовВСоединении")
.ДобавитьТест("НесколькоЛевыхСоединений")
.ДобавитьТестовыйНабор("СЗ: Вложенный запрос")
.ДобавитьТест("ИсключениеВложенныйЗапросБезПсевдонима")
.ДобавитьТест("ВложенныйЗапрос")
.ДобавитьТестовыйНабор("СЗ: Прочее")
.ДобавитьТест("Порядок")
.ДобавитьТест("ПорядокУбывания")
.ДобавитьТест("Итоги")
.ДобавитьТестовыйНабор("СЗ: Реальные запросы")
.ДобавитьТест("АдресныйКлассификаторСлужебный_ТаблицаАдресныхСокращений")
.Перед("Перед_АдресныйКлассификаторСлужебный_ТаблицаАдресныхСокращений")
;
КонецПроцедуры
@@ -101,11 +109,6 @@
Процедура ИсключениеИсточникОтсутствует() Экспорт
Предикат = СЗ_Запрос.Предикат()
.Реквизит("ЭтоГруппа").Равно(Ложь)
.Получить()
;
Обработка = Обработки.СЗ_ПроцессорСхемЗапроса.Создать();
ЮТест.ОжидаетЧто(Обработка)
@@ -116,14 +119,7 @@
Процедура ИсключениеИсточникПустаяСтрока() Экспорт
Предикат = СЗ_Запрос.Предикат()
.Реквизит("ЭтоГруппа").Равно(Ложь)
.Получить()
;
Запрос = СЗ_Запрос.НовыйЗапрос("")
.Где(Предикат)
;
Запрос = СЗ_Запрос.НовыйЗапрос("");
ЮТест.ОжидаетЧто(Запрос)
.Метод("ВТаблицуЗначений")
@@ -179,6 +175,13 @@
.ВТаблицуЗначений()
;
ЮТест.ОжидаетЧто(ТаблицаЗначений)
.ИмеетТип("ТаблицаЗначений")
;
ЮТест.ОжидаетЧто(ТаблицаЗначений.Количество())
.Больше(0)
;
КонецПроцедуры
Процедура Разрешенные() Экспорт
@@ -187,6 +190,13 @@
.ВТаблицуЗначений()
;
ЮТест.ОжидаетЧто(ТаблицаЗначений)
.ИмеетТип("ТаблицаЗначений")
;
ЮТест.ОжидаетЧто(ТаблицаЗначений.Количество())
.Больше(0)
;
КонецПроцедуры
#КонецОбласти
@@ -486,7 +496,7 @@
ЮТест.ОжидаетЧто(ТаблицаЗначений)
.ИмеетТип("ТаблицаЗначений")
.ИмеетДлинуБольше(0)
.ЛюбойЭлементСоответствуетПредикату(ЮТест.Предикат()
.КаждыйЭлементСоответствуетПредикату(ЮТест.Предикат()
.Реквизит("Ссылка").ВСписке(Контекст.МассивНоменклатурыНеВСписке))
;
@@ -689,16 +699,36 @@
#КонецОбласти
Процедура ВложенныйЗапрос() Экспорт
#Область ВложенныеЗапросы
Процедура ИсключениеВложенныйЗапросБезПсевдонима() Экспорт
ВложенныйЗапрос = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура");
Запрос = СЗ_Запрос.НовыйЗапрос(ВложенныйЗапрос);
ЮТест.ОжидаетЧто(Запрос)
.Метод("ВТаблицуЗначений")
.ВыбрасываетИсключение("У вложенного запроса обязательно должен быть псевдоним");
КонецПроцедуры
Процедура ВложенныйЗапрос() Экспорт
ВложенныйЗапрос = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура")
.Псевдоним("ВложенныйЗапрос")
;
ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос(ВложенныйЗапрос)
.ВТаблицуЗначений()
;
КонецПроцедуры
#КонецОбласти
#Область Прочее
Процедура Порядок() Экспорт
// Выполнение
@@ -770,13 +800,20 @@
Процедура Итоги() Экспорт
ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура")
// TODO:
.Итоги()
.Итоги("ЭтоГруппа")
.ВТаблицуЗначений()
;
ЮТест.ОжидаетЧто(ТаблицаЗначений)
.ИмеетТип("ТаблицаЗначений")
.ИмеетДлинуБольше(0)
.ЛюбойЭлементСодержитСвойство("ссылка", Null)
;
КонецПроцедуры
#КонецОбласти
#Область РеальныеЗапросы
Процедура АдресныйКлассификаторСлужебный_ТаблицаАдресныхСокращений() Экспорт

View File

@@ -49,6 +49,7 @@
ДобавитьУсловия(Оператор, Запрос, СтруктураСхемыЗапроса);
ДобавитьГруппировку(Оператор, СтруктураСхемыЗапроса);
ДобавитьПорядок(ЗапросПакета, СтруктураСхемыЗапроса);
ДобавитьИтоги(ЗапросПакета, СтруктураСхемыЗапроса);
ТекстЗапроса = СхемаЗапроса.ПолучитьТекстЗапроса();
Возврат ТекстЗапроса;
@@ -95,7 +96,26 @@
Оператор.ВыбиратьРазличные = Истина;
КонецЕсли;
Оператор.Источники.Добавить(СтруктураСхемыЗапроса.ИсточникДанных);
Если ТипЗнч(СтруктураСхемыЗапроса.ИсточникДанных) = Тип("Строка") Тогда
Оператор.Источники.Добавить(СтруктураСхемыЗапроса.ИсточникДанных);
Иначе
Если ТипЗнч(СтруктураСхемыЗапроса.ИсточникДанных) = Тип("ОбработкаОбъект.СЗ_ПроцессорСхемЗапроса") Тогда
СтруктураСхемыВложенногоЗапроса = СтруктураСхемыЗапроса.ИсточникДанных.Получить();
Иначе
СтруктураСхемыВложенногоЗапроса = СтруктураСхемыЗапроса.ИсточникДанных;
КонецЕсли;
ВложенныйЗапрос = ПолучитьЗапрос(СтруктураСхемыВложенногоЗапроса);
Если Не СтруктураСхемыВложенногоЗапроса.Свойство("ПсевдонимИсточника") Или
ПустаяСтрока(СтруктураСхемыВложенногоЗапроса.ПсевдонимИсточника) Тогда
ВызватьИсключение "У вложенного запроса обязательно должен быть псевдоним";
КонецЕсли;
ИсточникСхемыЗапроса = Оператор.Источники.Добавить(Тип("ВложенныйЗапросСхемыЗапроса"),
СтруктураСхемыВложенногоЗапроса.ПсевдонимИсточника);
ИсточникСхемыЗапроса.Источник.Запрос.УстановитьТекстЗапроса(ВложенныйЗапрос);
КонецЕсли;
Возврат Оператор;
@@ -114,14 +134,16 @@
ИсточникПоля = Оператор.Источники[0];
КонецЕсли;
ДоступноеПоле = ИсточникПоля.Источник.ДоступныеПоля.Найти(Поле.ИмяПоля);
Если Не ДоступноеПоле = Неопределено Тогда
НовоеПоле = Оператор.ВыбираемыеПоля.Добавить(ДоступноеПоле);
Если Не Поле.Псевдоним = Неопределено Тогда
ЗапросПакета.Колонки[ЗапросПакета.Колонки.Количество() - 1].Псевдоним = Поле.Псевдоним;
Если Не ИсточникПоля = Неопределено Тогда
ДоступноеПоле = ИсточникПоля.Источник.ДоступныеПоля.Найти(Поле.ИмяПоля);
Если Не ДоступноеПоле = Неопределено Тогда
НовоеПоле = Оператор.ВыбираемыеПоля.Добавить(ДоступноеПоле);
Если Не Поле.Псевдоним = Неопределено Тогда
ЗапросПакета.Колонки[ЗапросПакета.Колонки.Количество() - 1].Псевдоним = Поле.Псевдоним;
КонецЕсли;
Иначе
ВызватьИсключение СтрШаблон("Поле %1 в источнике не определено", Поле.ИмяПоля);
КонецЕсли;
Иначе
ВызватьИсключение СтрШаблон("Поле %1 в источнике не определено", Поле.ИмяПоля);
КонецЕсли;
КонецЦикла;
Иначе
@@ -248,6 +270,12 @@
КонецФункции
Процедура ДобавитьИтоги(ЗапросПакета, СтруктураСхемыЗапроса)
ТочкаОстанова = 1;
КонецПроцедуры
Процедура ДобавитьПараметрыЗапроса(СтруктураСхемыЗапроса, Запрос)
Если СтруктураСхемыЗапроса.Свойство("Параметры") И ТипЗнч(СтруктураСхемыЗапроса.Параметры) = Тип("Массив") Тогда
@@ -258,4 +286,11 @@
КонецПроцедуры
Функция ПолучитьЗапрос(СтруктураСхемыЗапроса)
Запрос = Новый Запрос;
Возврат ПолучитьТекстЗапроса(СтруктураСхемыЗапроса, Запрос);
КонецФункции
#КонецОбласти

View File

@@ -15,6 +15,12 @@
КонецПроцедуры
Процедура УстановитьПсевдонимИсточника(СхемаЗапроса, Псевдоним) Экспорт
СхемаЗапроса.Вставить("ПсевдонимИсточника", Псевдоним);
КонецПроцедуры
Процедура УстановитьПервые(СхемаЗапроса, Количество) Экспорт
СхемаЗапроса.Вставить("Первые", Количество);
@@ -99,7 +105,7 @@
Иначе // Структура = вложенный запрос
// TODO:
ВызватьИсключение "Не реализовано!";
КонецЕсли;
@@ -139,7 +145,7 @@
МассивПолей = Новый Массив;
Если СхемаЗапроса.Свойство("Порядок") И ТипЗнч(СхемаЗапроса.Поля) = Тип("Массив") Тогда
МассивПолей = СхемаЗапроса.Поля;
МассивПолей = СхемаЗапроса.Порядок;
КонецЕсли;
Для каждого НовоеПоле Из НовыеПоля Цикл
МассивПолей.Добавить(ПолучитьЭлементПорядка(НовоеПоле));
@@ -149,6 +155,28 @@
КонецПроцедуры
Процедура УстановитьИтоги(СхемаЗапроса, Поля) Экспорт
Если ТипЗнч(Поля) = Тип("Строка") Тогда
НовыеПоля = ПолучитьПоляИзСтроки(Поля);
ИначеЕсли ТипЗнч(Поля) = Тип("Массив") Тогда
НовыеПоля = Поля;
Иначе
ВызватьИсключение "УстановитьИтоги: неподдерживаемый тип данных в параметре ""Поля""";
КонецЕсли;
МассивПолей = Новый Массив;
Если СхемаЗапроса.Свойство("Итоги") И ТипЗнч(СхемаЗапроса.Поля) = Тип("Массив") Тогда
МассивПолей = СхемаЗапроса.Итоги;
КонецЕсли;
Для каждого НовоеПоле Из НовыеПоля Цикл
МассивПолей.Добавить(НовоеПоле);
КонецЦикла;
СхемаЗапроса.Вставить("Итоги", МассивПолей);
КонецПроцедуры
Процедура УстановитьПараметры(СхемаЗапроса, Параметры) Экспорт
СхемаЗапроса.Вставить("Параметры", Параметры);

View File

@@ -4,7 +4,7 @@
<Metadata name="CommonModule.СЗ_Запрос" id="5f1605a0-4e63-4339-b2cc-44e115be6ed7" configVersion="e2743c37ca1c317bbd7deb62473bdb9c92ce4b3b"/>
<Metadata name="CommonModule.СЗ_Запрос.Module" id="5f1605a0-4e63-4339-b2cc-44e115be6ed7.0" configVersion="b9f7c1a23ceb56b2cfb817a51d9c8fc91f12d4c2"/>
<Metadata name="CommonModule.СЗ_ЗапросТест" id="52ab0c6f-4fa1-4913-b37e-460ab1e44314" configVersion="01955255914f2f02da26b7a05ec1ffe713f168e1"/>
<Metadata name="CommonModule.СЗ_ЗапросТест.Module" id="52ab0c6f-4fa1-4913-b37e-460ab1e44314.0" configVersion="4bb2eb8264a01fa63289f72ff96e7d1d69ceecc8"/>
<Metadata name="CommonModule.СЗ_ЗапросТест.Module" id="52ab0c6f-4fa1-4913-b37e-460ab1e44314.0" configVersion="f5029ad2a148bd504f40bd79fde92ba57c17f10f"/>
<Metadata name="CommonModule.СЗ_ПроцессорыПредикатовКлиентСервер" id="407489b2-2f4b-467b-9594-621de146e468" configVersion="d0e776fe2161eadb117e389e6d86e40d8f7927fc"/>
<Metadata name="CommonModule.СЗ_ПроцессорыПредикатовКлиентСервер.Module" id="407489b2-2f4b-467b-9594-621de146e468.0" configVersion="fb94599ea596770fca7e3dd00307a498b92e68e6"/>
<Metadata name="CommonModule.СЗ_ПроцессорыПредикатовСлужебныйКлиентСервер" id="19b0625e-9f74-4fba-9350-914066ae1034" configVersion="97824f99f8fe96dacf2d8271e35b6b11a89a7f4f"/>
@@ -12,23 +12,23 @@
<Metadata name="CommonModule.СЗ_ПроцессорыСхемЗапросаКлиентСервер" id="a3e5bf50-2154-477f-9355-29b0930a73c5" configVersion="0a1d47680d6c53bcec9c7b566903a863ce26bf77"/>
<Metadata name="CommonModule.СЗ_ПроцессорыСхемЗапросаКлиентСервер.Module" id="a3e5bf50-2154-477f-9355-29b0930a73c5.0" configVersion="549fad0d337d4f6e1888453356a6baefa249ed3b"/>
<Metadata name="CommonModule.СЗ_ПроцессорыСхемЗапросаСлужебный" id="fd5aeea0-9a03-452d-ba1e-81c816846c6c" configVersion="77f2ed6a2d9924e64f836b9a16c0664b4a5a38e8"/>
<Metadata name="CommonModule.СЗ_ПроцессорыСхемЗапросаСлужебный.Module" id="fd5aeea0-9a03-452d-ba1e-81c816846c6c.0" configVersion="b06bf7b83c331bf94b05cf9ddca10eaae2b88caa"/>
<Metadata name="CommonModule.СЗ_ПроцессорыСхемЗапросаСлужебный.Module" id="fd5aeea0-9a03-452d-ba1e-81c816846c6c.0" configVersion="849b2ce9024133933142e0b4b2daa77b6009ab6e"/>
<Metadata name="CommonModule.СЗ_ПроцессорыСхемЗапросаСлужебныйВызовСервера" id="64cc4f13-8ea3-43e0-b530-031a569bfcd0" configVersion="de76e252360ff40f9368c1eec2d95d3aa03b14e7"/>
<Metadata name="CommonModule.СЗ_ПроцессорыСхемЗапросаСлужебныйВызовСервера.Module" id="64cc4f13-8ea3-43e0-b530-031a569bfcd0.0" configVersion="d4f200f2ea8b67ded00e960c104825a34bc28fb9"/>
<Metadata name="CommonModule.СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер" id="a7341127-4ed0-44b9-b3b2-007ae8f263dc" configVersion="8a27beba3300dacb51abfc0f6b4c8711bb7b0b06"/>
<Metadata name="CommonModule.СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер.Module" id="a7341127-4ed0-44b9-b3b2-007ae8f263dc.0" configVersion="04a2a8b8e2104202ded1702d1b4c5c677c0aded1"/>
<Metadata name="CommonModule.СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер.Module" id="a7341127-4ed0-44b9-b3b2-007ae8f263dc.0" configVersion="68eed8852766199b3cb4b6b05c10ca2ad2c8afdd"/>
<Metadata name="CommonPicture.СЗ_Логотип" id="1f46f9f5-7948-4684-80f5-f809aace3848" configVersion="1cd842efa6dbeed87c4bd770ba9fdfea3ffc73c0"/>
<Metadata name="CommonPicture.СЗ_Логотип.Picture" id="1f46f9f5-7948-4684-80f5-f809aace3848.0" configVersion="09958a054a92dc27b186eb0ab627d11bade1f015"/>
<Metadata name="Configuration.СхемаЗапроса" id="727bc241-bb6d-418f-b908-1102fbf1bc00" configVersion="86103f9c55eaeaecaa0bba3938f24a8f2bcae22e"/>
<Metadata name="DataProcessor.СЗ_КонсольФункциональныхЗапросов" id="67397753-24bc-416c-9dc1-5fe9545ad4b2" configVersion="171dea8f1f823da789fdb06cae08e40365231b49"/>
<Metadata name="DataProcessor.СЗ_КонсольФункциональныхЗапросов.Form.Форма" id="1f613bcb-34f1-4755-8c5b-734e99a89a03" configVersion="aedcf955fb9b922c1fd72335bb59d9b931015e58"/>
<Metadata name="DataProcessor.СЗ_КонсольФункциональныхЗапросов.Form.Форма.Form" id="1f613bcb-34f1-4755-8c5b-734e99a89a03.0" configVersion="c68a1059bef88189935e4b8f7f2920126d22b4e4"/>
<Metadata name="DataProcessor.СЗ_КонсольФункциональныхЗапросов.Form.Форма.Form" id="1f613bcb-34f1-4755-8c5b-734e99a89a03.0" configVersion="ed93a31df2cc47c65da51be82b3b052f1f6b94e2"/>
<Metadata name="DataProcessor.СЗ_ПроцессорПредикатов" id="12d6eb41-70d9-4802-8fde-b6464e23bf0b" configVersion="7bd25841e01d3196cd731359775f0af93ddbd0d1"/>
<Metadata name="DataProcessor.СЗ_ПроцессорПредикатов.ObjectModule" id="12d6eb41-70d9-4802-8fde-b6464e23bf0b.0" configVersion="1516d1c432d0edc4aaa776e1bea67d3a47f6523f"/>
<Metadata name="DataProcessor.СЗ_ПроцессорСхемЗапроса" id="7008c53a-3e8a-4432-bff6-500c4145bab5" configVersion="dd57e1686ab74914b294900633b6e9245facc435"/>
<Metadata name="DataProcessor.СЗ_ПроцессорСхемЗапроса.Form.Форма" id="04cd8a25-c99d-4da9-ac0f-5703574d079f" configVersion="f910d6e757792c7cdd2137a7213495bba1da1300"/>
<Metadata name="DataProcessor.СЗ_ПроцессорСхемЗапроса.Form.Форма.Form" id="04cd8a25-c99d-4da9-ac0f-5703574d079f.0" configVersion="d88eaff63e6be43cc7189ed79c45ec45ccb8b4fe"/>
<Metadata name="DataProcessor.СЗ_ПроцессорСхемЗапроса.ObjectModule" id="7008c53a-3e8a-4432-bff6-500c4145bab5.0" configVersion="ed88bf3b3c4913de67c94a07f43f4d9e14a77255"/>
<Metadata name="DataProcessor.СЗ_ПроцессорСхемЗапроса.ObjectModule" id="7008c53a-3e8a-4432-bff6-500c4145bab5.0" configVersion="d16220520ab962c474afa1a8a90054cd0577c32f"/>
<Metadata name="Language.Русский" id="390892dc-e75e-45a4-b708-a02f7f2dee5a" configVersion="d36425ed50ec1003a922942173f639c4f459684c"/>
<Metadata name="Subsystem.СЗ_Обработки" id="d4e271af-1ead-4743-afb5-9c2aa77055ae" configVersion="4706428f4c44e863ecd0652dc681dab80258cd41"/>
<Metadata name="Subsystem.СЗ_Основная" id="a09dece7-9d83-44cb-8463-270875de13d2" configVersion="9c0d5ea3be648246d696789b6fbcc298d59ca152"/>

View File

@@ -97,6 +97,11 @@
МассивСтрокЗапроса.Добавить(СтрШаблон(Символы.Таб + ".Упорядочить(""%1"")", СтрокаПорядка));
КонецЕсли;
СтрокаИтогов = ПолучитьИтоги(ПакетЗапроса);
Если Не ПустаяСтрока(СтрокаИтогов) Тогда
МассивСтрокЗапроса.Добавить(СтрШаблон(Символы.Таб + ".Итоги(""%1"")", СтрокаИтогов));
КонецЕсли;
МассивСтрокЗапроса.Добавить(Символы.Таб + ".ВТаблицуЗначений()");
МассивСтрокЗапроса.Добавить(";");
Возврат СтрСоединить(МассивСтрокЗапроса, Символы.ПС);
@@ -196,4 +201,19 @@
КонецФункции
Функция ПолучитьИтоги(ПакетЗапроса)
СтрокаИтогов = "";
Для каждого ЭлементИтогов Из ПакетЗапроса.КонтрольныеТочкиИтогов Цикл
Если Не ПустаяСтрока(СтрокаИтогов) Тогда
СтрокаИтогов = СтрокаИтогов + ", ";
КонецЕсли;
СтрокаИтогов = СтрокаИтогов + ЭлементИтогов.ИмяКолонки;
КонецЦикла;
Возврат СтрокаИтогов;
КонецФункции
#КонецОбласти

View File

@@ -6,56 +6,87 @@
#Область ПрограммныйИнтерфейс
//
//
Процедура УстановитьИсточникДанных(ИсточникДанных, Первые = -1, Различные = Ложь, Разрешенные = Ложь) Экспорт
СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер.УстановитьИсточникДанных(СхемаЗапроса,
ИсточникДанных, Первые, Различные, Разрешенные);
КонецПроцедуры
//
//
Функция Псевдоним(ИмяПсевдонима) Экспорт
СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер
.УстановитьПсевдонимИсточника(СхемаЗапроса, ИмяПсевдонима);
Возврат ЭтотОбъект;
КонецФункции
//
//
Функция ВТаблицуЗначений() Экспорт
ТаблицаЗначений = СЗ_ПроцессорыСхемЗапросаСлужебный
.ПолучитьРезультатЗапроса(СхемаЗапроса).Выгрузить();
Возврат ТаблицаЗначений;
КонецФункции
//
//
Функция ВМассив(ИмяКолонки) Экспорт
ТаблицаЗначений = СЗ_ПроцессорыСхемЗапросаСлужебный
.ПолучитьРезультатЗапроса(СхемаЗапроса).Выгрузить();
Возврат ТаблицаЗначений.ВыгрузитьКолонку(ИмяКолонки);
КонецФункции
//
//
Функция Первые(Количество) Экспорт
// TODO:
СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер
.УстановитьПервые(СхемаЗапроса, Количество);
Возврат ЭтотОбъект;
КонецФункции
//
//
Функция Различные() Экспорт
// TODO:
СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер
.УстановитьРазличные(СхемаЗапроса);
Возврат ЭтотОбъект;
КонецФункции
//
//
Функция Разрешенные() Экспорт
// TODO:
СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер
.УстановитьРазрешенные(СхемаЗапроса);
Возврат ЭтотОбъект;
КонецФункции
//
//
Функция Выбрать(Поля) Экспорт
СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер
.УстановитьПоляВыборки(СхемаЗапроса, Поля);
Возврат ЭтотОбъект;
КонецФункции
//
//
Функция ВыбратьВсе() Экспорт
СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер
.УстановитьВыборВсехПолей(СхемаЗапроса);
Возврат ЭтотОбъект;
КонецФункции
//
//
Функция Поместить(ИмяВременнойТаблицы) Экспорт
СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер
.УстановитьИмяВременнойТаблицы(СхемаЗапроса, ИмяВременнойТаблицы);
Возврат ЭтотОбъект;
КонецФункции
//
//
Функция Где(Предикат) Экспорт
Если ТипЗнч(Предикат) = Тип("Структура") Тогда
@@ -70,6 +101,8 @@
Возврат ЭтотОбъект;
КонецФункции
//
//
Функция ЛевоеСоединение(ИсточникДанных, Предикат = Неопределено) Экспорт
// TODO: ИсточникДанных может быть структурой? Что делать в этом случае?
@@ -90,32 +123,43 @@
КонецЕсли;
СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер.ДобавитьСоединение(
СхемаЗапроса, "Левое", ИсточникДанных, _Предикат);
СхемаЗапроса, "Левое", _ИсточникДанных, _Предикат);
Возврат ЭтотОбъект;
КонецФункции
//
//
Функция Сгруппировать(Поля) Экспорт
СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер
.УстановитьГруппировку(СхемаЗапроса, Поля);
Возврат ЭтотОбъект;
КонецФункции
//
//
Функция Упорядочить(Поля) Экспорт
СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер
.УстановитьПорядок(СхемаЗапроса, Поля);
Возврат ЭтотОбъект;
КонецФункции
Функция Итоги() Экспорт
// TODO:
//
//
Функция Итоги(Поля) Экспорт
СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер
.УстановитьИтоги(СхемаЗапроса, Поля);
Возврат ЭтотОбъект;
КонецФункции
//
//
Функция Параметры(Параметры) Экспорт
СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер.УстановитьПараметры(СхемаЗапроса, Параметры);
Возврат ЭтотОбъект;
КонецФункции
//
//
Функция Получить() Экспорт
Возврат СхемаЗапроса;