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 22:36:07 +03:00
parent 9e1783d4a0
commit b4cabb75c3
16 changed files with 1342 additions and 83 deletions

View File

@@ -30,7 +30,10 @@
.ДобавитьТест("ЗапросСУсловиемНеВСписке")
.Перед("Перед_ЗапросСУсловиемНеВСписке")
.ДобавитьТестовыйНабор("СЗ: Соединения")
.ДобавитьТест("ЛевоеСоединениеПоИсточникуСтроке")
.ДобавитьТест("СоединениеПоИсточникуСтроке")
.СПараметрами("Левое")
.СПараметрами("Правое")
.СПараметрами("Внутреннее")
.ДобавитьТест("ЛевоеСоединениеПоИсточникуЗапросу")
.ДобавитьТест("ЛевоеСоединениеБезПредиката")
.ДобавитьТест("ЛевоеСоединениеНесколькоУсловийВПредикате")
@@ -506,18 +509,31 @@
#Область Соединения
Процедура ЛевоеСоединениеПоИсточникуСтроке() Экспорт
Процедура СоединениеПоИсточникуСтроке(ТипСоединения) Экспорт
ПредикатДляСоединения = СЗ_Запрос.Предикат()
.Реквизит("НоменклатураСоединение.Ссылка").Равно("Номенклатура.Родитель")
;
ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура")
Запрос = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура")
.Выбрать("Номенклатура.Ссылка,
|НоменклатураСоединение.Ссылка КАК НоменклатураСоединениеСсылка")
.ЛевоеСоединение("Справочник.Номенклатура КАК НоменклатураСоединение", ПредикатДляСоединения)
.ВТаблицуЗначений()
;
Если ТипСоединения = "Левое" Тогда
Запрос
.ЛевоеСоединение("Справочник.Номенклатура КАК НоменклатураСоединение", ПредикатДляСоединения)
;
ИначеЕсли ТипСоединения = "Правое" Тогда
Запрос
.ПравоеСоединение("Справочник.Номенклатура КАК НоменклатураСоединение", ПредикатДляСоединения)
;
Иначе // Если ТипСоединения = "Внутреннее" Тогда
Запрос
.ВнутреннееСоединение("Справочник.Номенклатура КАК НоменклатураСоединение", ПредикатДляСоединения)
;
КонецЕсли;
ТаблицаЗначений = Запрос.ВТаблицуЗначений();
ЮТест.ОжидаетЧто(ТаблицаЗначений)
.ИмеетТип("ТаблицаЗначений")
@@ -534,7 +550,9 @@
Процедура ЛевоеСоединениеПоИсточникуЗапросу() Экспорт
ЗапросДляСоединения = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура");
ЗапросДляСоединения = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура")
.Псевдоним("НоменклатураСоединение")
;
ПредикатДляСоединения = СЗ_Запрос.Предикат()
.Реквизит("Ссылка").Равно("Родитель")
;

View File

@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.18">
<CommonModule uuid="b37c9dfc-97f9-419e-aef2-d1598bd7f793">
<Properties>
<Name>СЗ_ЗапросТестКлиент</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Схема запроса: запрос тест клиент</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Global>false</Global>
<ClientManagedApplication>true</ClientManagedApplication>
<Server>false</Server>
<ExternalConnection>false</ExternalConnection>
<ClientOrdinaryApplication>false</ClientOrdinaryApplication>
<ServerCall>false</ServerCall>
<Privileged>false</Privileged>
<ReturnValuesReuse>DontUse</ReturnValuesReuse>
</Properties>
</CommonModule>
</MetaDataObject>

View File

@@ -0,0 +1,889 @@
#Область ОбъявлениеТестов
Процедура ИсполняемыеСценарии() Экспорт
ЮТТесты.УдалениеТестовыхДанных()
.ДобавитьТестовыйНабор("СЗ: Базовые")
.ДобавитьТест("ИсключениеИсточникОтсутствует")
.ДобавитьТест("ИсключениеИсточникПустаяСтрока")
.ДобавитьТест("ЗапросВТаблицуЗначений")
.ДобавитьТест("ЗапросВМассив")
.ДобавитьТест("Первые")
.ДобавитьТест("Различные")
.ДобавитьТест("Разрешенные")
.ДобавитьТестовыйНабор("СЗ: Поля")
.ДобавитьТест("ИсключениеПолеОтсутствует")
.ДобавитьТест("ДобавитьПоляССинонимами")
.ДобавитьТест("ДобавитьНесколькоПолей")
.ДобавитьТест("ДобавитьНесколькоПолейСПереносомСтроки")
.ДобавитьТест("ДобавитьПоляССинонимамиИСписком")
.ДобавитьТест("ВсеПоляДляНеСсылочногоТипа")
.ДобавитьТест("ВсеПоляДляСсылочногоТипа")
.ДобавитьТестовыйНабор("СЗ: Условия")
.ДобавитьТест("ЗапросСУсловиемРавно")
.ДобавитьТест("ЗапросСУсловиемНеРавно")
.ДобавитьТест("ЗапросСУсловиемПодобно")
.ДобавитьТест("ЗапросСУсловиемНеПодобно")
.ДобавитьТест("ЗапросСУсловиемМежду")
.ДобавитьТест("ЗапросСУсловиемВСписке")
.Перед("Перед_ЗапросСУсловиемВСписке")
.ДобавитьТест("ЗапросСУсловиемНеВСписке")
.Перед("Перед_ЗапросСУсловиемНеВСписке")
.ДобавитьТестовыйНабор("СЗ: Соединения")
.ДобавитьТест("СоединениеПоИсточникуСтроке")
.СПараметрами("Левое")
.СПараметрами("Правое")
.СПараметрами("Внутреннее")
.ДобавитьТест("ЛевоеСоединениеПоИсточникуЗапросу")
.ДобавитьТест("ЛевоеСоединениеБезПредиката")
.ДобавитьТест("ЛевоеСоединениеНесколькоУсловийВПредикате")
.ДобавитьТест("ЛевоеСоединениеПредикатЭтоПараметр")
.ДобавитьТест("ЛевоеСоединениеБезПсевдонимовВСоединении")
.ДобавитьТест("НесколькоЛевыхСоединений")
.ДобавитьТестовыйНабор("СЗ: Вложенный запрос")
.ДобавитьТест("ИсключениеВложенныйЗапросБезПсевдонима")
.ДобавитьТест("ВложенныйЗапрос")
.ДобавитьТестовыйНабор("СЗ: Прочее")
.ДобавитьТест("Порядок")
.ДобавитьТест("ПорядокУбывания")
.ДобавитьТест("Итоги")
.ДобавитьТестовыйНабор("СЗ: Реальные запросы")
.ДобавитьТест("АдресныйКлассификаторСлужебный_ТаблицаАдресныхСокращений")
.Перед("Перед_АдресныйКлассификаторСлужебный_ТаблицаАдресныхСокращений")
;
КонецПроцедуры
#КонецОбласти
#Область События
Процедура Перед_ЗапросСУсловиемВСписке() Экспорт
ПодготовитьСписокНоменклатуры();
КонецПроцедуры
Процедура Перед_ЗапросСУсловиемНеВСписке() Экспорт
ПодготовитьСписокНоменклатуры();
Контекст = ЮТест.КонтекстТеста();
МассивНоменклатуры = СЗ_ЗапросТестСлужебныйВызовСервера
.ПолучитьНоменклатуруНеСписке(Контекст.МассивНоменклатуры);
Контекст.Вставить("МассивНоменклатурыНеВСписке", МассивНоменклатуры);
КонецПроцедуры
Процедура Перед_АдресныйКлассификаторСлужебный_ТаблицаАдресныхСокращений() Экспорт
Для Сч = 1 По 3 Цикл
ЮТест.Данные().КонструкторОбъекта("РегистрСведений.УровниСокращенийАдресныхСведений")
.Установить("Значение", "Абонентский Ящик")
.Установить("Сокращение", "А/Я")
.Записать()
;
КонецЦикла;
Для Сч = 1 По 5 Цикл
ЮТест.Данные().КонструкторОбъекта("РегистрСведений.УровниСокращенийАдресныхСведений")
.Установить("Значение", "Деревня")
.Установить("Сокращение", "Д.")
.Записать()
;
КонецЦикла;
КонецПроцедуры
#КонецОбласти
#Область Тесты
#Область Базовые
Процедура ИсключениеИсточникОтсутствует() Экспорт
Обработка = ПолучитьФорму("Обработка.СЗ_ПроцессорСхемЗапроса.Форма.Форма");
ЮТест.ОжидаетЧто(Обработка)
.Метод("ВТаблицуЗначений")
.ВыбрасываетИсключение("Источник данных запроса не определен");
КонецПроцедуры
Процедура ИсключениеИсточникПустаяСтрока() Экспорт
Запрос = СЗ_Запрос.НовыйЗапрос("");
ЮТест.ОжидаетЧто(Запрос)
.Метод("ВТаблицуЗначений")
.ВыбрасываетИсключение("Источник данных запроса не определен");
КонецПроцедуры
Процедура ЗапросВТаблицуЗначений() Экспорт
ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура")
.ВТаблицуЗначений()
;
ЮТест.ОжидаетЧто(ТаблицаЗначений)
.ИмеетТип("Массив")
;
ЮТест.ОжидаетЧто(ТаблицаЗначений.Количество())
.Больше(0)
;
КонецПроцедуры
Процедура ЗапросВМассив() Экспорт
Массив = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура")
.ВМассив("Ссылка")
;
ЮТест.ОжидаетЧто(Массив)
.ИмеетТип("Массив")
;
ЮТест.ОжидаетЧто(Массив.Количество())
.Больше(0)
;
КонецПроцедуры
Процедура Первые() Экспорт
ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура", 10)
.ВТаблицуЗначений()
;
ЮТест.ОжидаетЧто(ТаблицаЗначений.Количество())
.Равно(10)
;
КонецПроцедуры
Процедура Различные() Экспорт
ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура",, Истина)
.ВТаблицуЗначений()
;
ЮТест.ОжидаетЧто(ТаблицаЗначений)
.ИмеетТип("Массив")
;
ЮТест.ОжидаетЧто(ТаблицаЗначений.Количество())
.Больше(0)
;
КонецПроцедуры
Процедура Разрешенные() Экспорт
ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура",,, Истина)
.ВТаблицуЗначений()
;
ЮТест.ОжидаетЧто(ТаблицаЗначений)
.ИмеетТип("Массив")
;
ЮТест.ОжидаетЧто(ТаблицаЗначений.Количество())
.Больше(0)
;
КонецПроцедуры
#КонецОбласти
#Область Поля
// TODO: Поля могут быть выражениями
Процедура ИсключениеПолеОтсутствует() Экспорт
НеправильноеНаименованиеПоля = "йцукен";
Запрос = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура")
.Выбрать(НеправильноеНаименованиеПоля)
;
ЮТест.ОжидаетЧто(Запрос)
.Метод("ВТаблицуЗначений")
.ВыбрасываетИсключение(
СтрШаблон("Поле %1 в источнике не определено", НеправильноеНаименованиеПоля));
КонецПроцедуры
Процедура ДобавитьПоляССинонимами() Экспорт
ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура")
.Выбрать(СЗ_Запрос.НовоеПоле("Ссылка",, "СсылкаНоменклатуры"))
.Выбрать(СЗ_Запрос.НовоеПоле("Наименование",, "НаименованиеНоменклатуры"))
.ВТаблицуЗначений()
;
ЮТест.ОжидаетЧто(ТаблицаЗначений)
.ИмеетТип("Массив")
;
ЮТест.ОжидаетЧто(ТаблицаЗначений.Количество())
.Больше(0)
;
ЮТест.ОжидаетЧто(ТаблицаЗначений[0])
.ИмеетСвойство("СсылкаНоменклатуры")
.ИмеетСвойство("НаименованиеНоменклатуры")
;
КонецПроцедуры
Процедура ДобавитьНесколькоПолей() Экспорт
ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура")
.Выбрать("Ссылка, Наименование, ЭтоГруппа")
.ВТаблицуЗначений()
;
ЮТест.ОжидаетЧто(ТаблицаЗначений)
.ИмеетТип("Массив")
;
ЮТест.ОжидаетЧто(ТаблицаЗначений.Количество())
.Больше(0)
;
ЮТест.ОжидаетЧто(ТаблицаЗначений[0])
.ИмеетСвойство("Ссылка")
.ИмеетСвойство("Наименование")
.ИмеетСвойство("ЭтоГруппа")
;
КонецПроцедуры
Процедура ДобавитьНесколькоПолейСПереносомСтроки() Экспорт
ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура")
.Выбрать("Ссылка, Наименование,
|ЭтоГруппа")
.ВТаблицуЗначений()
;
ЮТест.ОжидаетЧто(ТаблицаЗначений)
.ИмеетТип("Массив")
;
ЮТест.ОжидаетЧто(ТаблицаЗначений.Количество())
.Больше(0)
;
ЮТест.ОжидаетЧто(ТаблицаЗначений[0])
.ИмеетСвойство("Ссылка")
.ИмеетСвойство("Наименование")
.ИмеетСвойство("ЭтоГруппа")
;
КонецПроцедуры
Процедура ДобавитьПоляССинонимамиИСписком() Экспорт
ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура")
.Выбрать(СЗ_Запрос.НовоеПоле("Ссылка",, "СсылкаНоменклатуры"))
.Выбрать("Наименование КАК НаименованиеНоменклатуры, ЭтоГруппа")
.ВТаблицуЗначений()
;
ЮТест.ОжидаетЧто(ТаблицаЗначений)
.ИмеетТип("Массив")
;
ЮТест.ОжидаетЧто(ТаблицаЗначений.Количество())
.Больше(0)
;
ЮТест.ОжидаетЧто(ТаблицаЗначений[0])
.ИмеетСвойство("СсылкаНоменклатуры")
.ИмеетСвойство("НаименованиеНоменклатуры")
.ИмеетСвойство("ЭтоГруппа")
;
КонецПроцедуры
Процедура ВсеПоляДляНеСсылочногоТипа() Экспорт
ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("РегистрСведений.КурсыВалют")
.ВТаблицуЗначений()
;
ЮТест.ОжидаетЧто(ТаблицаЗначений)
.ИмеетТип("Массив")
;
ЮТест.ОжидаетЧто(ТаблицаЗначений.Количество())
.Больше(0)
;
ЮТест.ОжидаетЧто(ТаблицаЗначений[0])
.ИмеетСвойство("Валюта")
.ИмеетСвойство("Курс")
.ИмеетСвойство("Кратность")
;
КонецПроцедуры
Процедура ВсеПоляДляСсылочногоТипа() Экспорт
ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура")
.ВыбратьВсе()
.ВТаблицуЗначений()
;
ЮТест.ОжидаетЧто(ТаблицаЗначений)
.ИмеетТип("Массив")
;
ЮТест.ОжидаетЧто(ТаблицаЗначений.Количество())
.Больше(0)
;
ЮТест.ОжидаетЧто(ТаблицаЗначений[0])
.ИмеетСвойство("Ссылка")
.ИмеетСвойство("Наименование")
.ИмеетСвойство("ЭтоГруппа")
;
КонецПроцедуры
#КонецОбласти
#Область Условия
Процедура ЗапросСУсловиемРавно() Экспорт
Предикат = СЗ_Запрос.Предикат()
.Реквизит("ЭтоГруппа").Равно(Ложь)
;
ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура")
.Выбрать("Ссылка, ЭтоГруппа")
.Где(Предикат)
.ВТаблицуЗначений()
;
ЮТест.ОжидаетЧто(ТаблицаЗначений)
.ИмеетТип("Массив")
.ИмеетДлинуБольше(0)
.КаждыйЭлементСоответствуетПредикату(ЮТест.Предикат()
.Реквизит("ЭтоГруппа").Равно(Ложь))
;
КонецПроцедуры
Процедура ЗапросСУсловиемНеРавно() Экспорт
Предикат = СЗ_Запрос.Предикат()
.Реквизит("ЭтоГруппа").НеРавно(Ложь)
;
ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура")
.Выбрать("Ссылка, ЭтоГруппа")
.Где(Предикат)
.ВТаблицуЗначений()
;
ЮТест.ОжидаетЧто(ТаблицаЗначений)
.ИмеетТип("Массив")
.ИмеетДлинуБольше(0)
.КаждыйЭлементСоответствуетПредикату(ЮТест.Предикат()
.Реквизит("ЭтоГруппа").Равно(Истина))
;
КонецПроцедуры
Процедура ЗапросСУсловиемПодобно() Экспорт
Предикат = СЗ_Запрос.Предикат()
.Реквизит("Наименование").Подобно("Хлеб")
;
ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура")
.Выбрать("Ссылка, Наименование")
.Где(Предикат)
.ВТаблицуЗначений()
;
Утверждения = ЮТест.ОжидаетЧто(ТаблицаЗначений)
.ИмеетТип("Массив")
.ИмеетДлинуБольше(0)
;
СЗ_ЗапросТестСлужебныйВызовСервера.ПроверитьПодобноПоРегулярномуВыражению(ТаблицаЗначений);
КонецПроцедуры
Процедура ЗапросСУсловиемНеПодобно() Экспорт
Предикат = СЗ_Запрос.Предикат()
.Реквизит("Наименование").НеПодобно("Хлеб")
;
ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура")
.Выбрать("Ссылка, Наименование")
.Где(Предикат)
.ВТаблицуЗначений()
;
ЮТест.ОжидаетЧто(ТаблицаЗначений)
.ИмеетТип("Массив")
.ИмеетДлинуБольше(0)
;
СЗ_ЗапросТестСлужебныйВызовСервера.ПроверитьНеПодобноПоРегулярномуВыражению(ТаблицаЗначений);
КонецПроцедуры
Процедура ЗапросСУсловиемМежду() Экспорт
ДатаНачала = Дата("20230601000000");
ДатаОкончания = Дата("20230630235959");
Предикат = СЗ_Запрос.Предикат()
.Реквизит("Дата").Между(ДатаНачала, ДатаОкончания)
;
ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Документ.ЗаказКлиента")
.Выбрать("Ссылка, Дата")
.Где(Предикат)
.ВТаблицуЗначений()
;
ЮТест.ОжидаетЧто(ТаблицаЗначений)
.ИмеетТип("Массив")
.ИмеетДлинуБольше(0)
.КаждыйЭлементСоответствуетПредикату(ЮТест.Предикат()
.Реквизит("Дата").Между(ДатаНачала, ДатаОкончания))
;
КонецПроцедуры
Процедура ЗапросСУсловиемВСписке() Экспорт
Контекст = ЮТест.КонтекстТеста();
Предикат = СЗ_Запрос.Предикат()
.Реквизит("Ссылка").ВСписке(Контекст.МассивНоменклатуры)
;
ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура")
.Где(Предикат)
.ВТаблицуЗначений()
;
ЮТест.ОжидаетЧто(ТаблицаЗначений)
.ИмеетТип("Массив")
.ИмеетДлину(5)
.КаждыйЭлементСоответствуетПредикату(ЮТест.Предикат()
.Реквизит("Ссылка").ВСписке(Контекст.МассивНоменклатуры))
;
КонецПроцедуры
Процедура ЗапросСУсловиемНеВСписке() Экспорт
Контекст = ЮТест.КонтекстТеста();
Предикат = СЗ_Запрос.Предикат()
.Реквизит("Ссылка").НеВСписке(Контекст.МассивНоменклатуры)
;
ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура")
.Где(Предикат)
.ВТаблицуЗначений()
;
ЮТест.ОжидаетЧто(ТаблицаЗначений)
.ИмеетТип("Массив")
.ИмеетДлинуБольше(0)
.КаждыйЭлементСоответствуетПредикату(ЮТест.Предикат()
.Реквизит("Ссылка").ВСписке(Контекст.МассивНоменклатурыНеВСписке))
;
КонецПроцедуры
#КонецОбласти
#Область Соединения
Процедура СоединениеПоИсточникуСтроке(ТипСоединения) Экспорт
ПредикатДляСоединения = СЗ_Запрос.Предикат()
.Реквизит("НоменклатураСоединение.Ссылка").Равно("Номенклатура.Родитель")
;
Запрос = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура")
.Выбрать("Номенклатура.Ссылка,
|НоменклатураСоединение.Ссылка КАК НоменклатураСоединениеСсылка")
;
Если ТипСоединения = "Левое" Тогда
Запрос
.ЛевоеСоединение("Справочник.Номенклатура КАК НоменклатураСоединение", ПредикатДляСоединения)
;
ИначеЕсли ТипСоединения = "Правое" Тогда
Запрос
.ПравоеСоединение("Справочник.Номенклатура КАК НоменклатураСоединение", ПредикатДляСоединения)
;
Иначе // Если ТипСоединения = "Внутреннее" Тогда
Запрос
.ВнутреннееСоединение("Справочник.Номенклатура КАК НоменклатураСоединение", ПредикатДляСоединения)
;
КонецЕсли;
ТаблицаЗначений = Запрос.ВТаблицуЗначений();
ЮТест.ОжидаетЧто(ТаблицаЗначений)
.ИмеетТип("Массив")
;
ЮТест.ОжидаетЧто(ТаблицаЗначений.Количество())
.Больше(0)
;
ЮТест.ОжидаетЧто(ТаблицаЗначений[0])
.ИмеетСвойство("Ссылка")
.ИмеетСвойство("НоменклатураСоединениеСсылка")
;
КонецПроцедуры
Процедура ЛевоеСоединениеПоИсточникуЗапросу() Экспорт
ЗапросДляСоединения = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура")
.Псевдоним("НоменклатураСоединение")
;
ПредикатДляСоединения = СЗ_Запрос.Предикат()
.Реквизит("Ссылка").Равно("Родитель")
;
ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура")
.Выбрать("Номенклатура.Ссылка,
|НоменклатураСоединение.Ссылка КАК НоменклатураСоединениеСсылка")
.ЛевоеСоединение(ЗапросДляСоединения, ПредикатДляСоединения)
.ВТаблицуЗначений()
;
ЮТест.ОжидаетЧто(ТаблицаЗначений)
.ИмеетТип("Массив")
;
ЮТест.ОжидаетЧто(ТаблицаЗначений.Количество())
.Больше(0)
;
ЮТест.ОжидаетЧто(ТаблицаЗначений[0])
.ИмеетСвойство("Ссылка")
.ИмеетСвойство("НоменклатураСоединениеСсылка")
;
КонецПроцедуры
Процедура ЛевоеСоединениеБезПредиката() Экспорт
ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("РегистрСведений.ПримененияЕНВД")
.Выбрать("ПримененияЕНВД.Организация КАК Организация,
|ПримененияЕНВДСоединение.Склад КАК Склад")
.ЛевоеСоединение("РегистрСведений.ПримененияЕНВД КАК ПримененияЕНВДСоединение")
.ВТаблицуЗначений()
;
ЮТест.ОжидаетЧто(ТаблицаЗначений)
.ИмеетТип("Массив")
;
ЮТест.ОжидаетЧто(ТаблицаЗначений.Количество())
.Больше(0)
;
ЮТест.ОжидаетЧто(ТаблицаЗначений[0])
.ИмеетСвойство("Организация")
.ИмеетСвойство("Склад")
;
КонецПроцедуры
Процедура ЛевоеСоединениеНесколькоУсловийВПредикате() Экспорт
ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура")
.Выбрать("Номенклатура.Ссылка,
|НоменклатураСоединение.Ссылка КАК НоменклатураСоединениеСсылка")
.ЛевоеСоединение("Справочник.Номенклатура КАК НоменклатураСоединение", СЗ_Запрос.Предикат()
.Реквизит("НоменклатураСоединение.Ссылка").Равно("Номенклатура.Родитель")
.Реквизит("НоменклатураСоединение.ЭтоГруппа").Равно("ИСТИНА"))
.ВТаблицуЗначений()
;
ЮТест.ОжидаетЧто(ТаблицаЗначений)
.ИмеетТип("Массив")
;
ЮТест.ОжидаетЧто(ТаблицаЗначений.Количество())
.Больше(0)
;
ЮТест.ОжидаетЧто(ТаблицаЗначений[0])
.ИмеетСвойство("Ссылка")
.ИмеетСвойство("НоменклатураСоединениеСсылка")
;
КонецПроцедуры
Процедура ЛевоеСоединениеПредикатЭтоПараметр() Экспорт
// Подготовка
МассивПараметров = Новый Массив;
МассивПараметров.Добавить(Новый Структура("ИмяПараметра, Значение",
"Родитель", СЗ_ЗапросТестСлужебныйВызовСервера.ПолучитьГруппуНоменклатуры()));
// Выполнение
ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура")
.Выбрать("Номенклатура.Ссылка,
|НоменклатураСоединение.Ссылка КАК НоменклатураСоединениеСсылка")
.ЛевоеСоединение("Справочник.Номенклатура КАК НоменклатураСоединение", СЗ_Запрос.Предикат()
.Реквизит("НоменклатураСоединение.Родитель").Равно("&Родитель"))
.Параметры(МассивПараметров)
.ВТаблицуЗначений()
;
// Проверки
ЮТест.ОжидаетЧто(ТаблицаЗначений)
.ИмеетТип("Массив")
;
ЮТест.ОжидаетЧто(ТаблицаЗначений.Количество())
.Больше(0)
;
ЮТест.ОжидаетЧто(ТаблицаЗначений[0])
.ИмеетСвойство("Ссылка")
.ИмеетСвойство("НоменклатураСоединениеСсылка")
;
КонецПроцедуры
Процедура ЛевоеСоединениеБезПсевдонимовВСоединении() Экспорт
ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура")
.Выбрать("Номенклатура.Ссылка, Номенклатура1.Ссылка")
.ЛевоеСоединение("Справочник.Номенклатура", СЗ_Запрос.Предикат()
.Реквизит("Ссылка").Равно("Родитель")
.Реквизит("ЭтоГруппа").Равно("ИСТИНА"))
.ВТаблицуЗначений()
;
ЮТест.ОжидаетЧто(ТаблицаЗначений)
.ИмеетТип("Массив")
;
ЮТест.ОжидаетЧто(ТаблицаЗначений.Количество())
.Больше(0)
;
ЮТест.ОжидаетЧто(ТаблицаЗначений[0])
.ИмеетСвойство("Ссылка")
.ИмеетСвойство("Ссылка1")
;
КонецПроцедуры
Процедура НесколькоЛевыхСоединений() Экспорт
ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура")
.Выбрать("Номенклатура.Ссылка, Номенклатура1.Ссылка, Номенклатура2.Ссылка")
.ЛевоеСоединение("Справочник.Номенклатура", СЗ_Запрос.Предикат()
.Реквизит("Ссылка").Равно("Родитель")
.Реквизит("ЭтоГруппа").Равно("ИСТИНА"))
.ЛевоеСоединение("Справочник.Номенклатура", СЗ_Запрос.Предикат()
.Реквизит("Ссылка").Равно("Родитель")
.Реквизит("ЭтоГруппа").Равно("ИСТИНА"))
.ВТаблицуЗначений()
;
ЮТест.ОжидаетЧто(ТаблицаЗначений)
.ИмеетТип("Массив")
;
ЮТест.ОжидаетЧто(ТаблицаЗначений.Количество())
.Больше(0)
;
ЮТест.ОжидаетЧто(ТаблицаЗначений[0])
.ИмеетСвойство("Ссылка")
.ИмеетСвойство("Ссылка1")
.ИмеетСвойство("Ссылка2")
;
КонецПроцедуры
#КонецОбласти
#Область ВложенныеЗапросы
Процедура ИсключениеВложенныйЗапросБезПсевдонима() Экспорт
ВложенныйЗапрос = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура");
Запрос = СЗ_Запрос.НовыйЗапрос(ВложенныйЗапрос);
ЮТест.ОжидаетЧто(Запрос)
.Метод("ВТаблицуЗначений")
.ВыбрасываетИсключение("У вложенного запроса обязательно должен быть псевдоним");
КонецПроцедуры
Процедура ВложенныйЗапрос() Экспорт
ВложенныйЗапрос = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура")
.Псевдоним("ВложенныйЗапрос")
;
ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос(ВложенныйЗапрос)
.ВТаблицуЗначений()
;
КонецПроцедуры
#КонецОбласти
#Область Прочее
Процедура Порядок() Экспорт
// Выполнение
ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура")
.Выбрать("Ссылка, ЭтоГруппа")
.Упорядочить("ЭтоГруппа, Наименование")
.ВТаблицуЗначений()
;
// Проверки
СпсисокЭлементов = Новый СписокЗначений;
Сч = 0;
Для каждого СтрокаТаблицы Из ТаблицаЗначений Цикл
Если Не СтрокаТаблицы.ЭтоГруппа Тогда
СпсисокЭлементов.Добавить(Сч);
Иначе
Прервать;
КонецЕсли;
Сч = Сч + 1;
КонецЦикла;
СпсисокЭлементов.СортироватьПоЗначению(НаправлениеСортировки.Убыв);
Для каждого СтрокаТаблицыЭлементы Из СпсисокЭлементов Цикл
ТаблицаЗначений.Удалить(СтрокаТаблицыЭлементы.Значение);
КонецЦикла;
ЮТест.ОжидаетЧто(СпсисокЭлементов.Количество(), "Количество элементов")
.Больше(0)
;
ЮТест.ОжидаетЧто(ТаблицаЗначений)
.ИмеетТип("Массив")
.ИмеетДлинуБольше(0, "Количество групп")
.КаждыйЭлементСоответствуетПредикату(ЮТест.Предикат()
.Реквизит("ЭтоГруппа").Равно(Истина))
;
КонецПроцедуры
Процедура ПорядокУбывания() Экспорт
// Выполнение
ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура")
.Выбрать("Ссылка, ЭтоГруппа")
.Упорядочить("ЭтоГруппа УБЫВ, Наименование")
.ВТаблицуЗначений()
;
// Проверки
СпсисокГрупп = Новый СписокЗначений;
Сч = 0;
Для каждого СтрокаТаблицы Из ТаблицаЗначений Цикл
Если СтрокаТаблицы.ЭтоГруппа Тогда
СпсисокГрупп.Добавить(Сч);
Иначе
Прервать;
КонецЕсли;
Сч = Сч + 1;
КонецЦикла;
СпсисокГрупп.СортироватьПоЗначению(НаправлениеСортировки.Убыв);
Для каждого СтрокаТаблицыГруппы Из СпсисокГрупп Цикл
ТаблицаЗначений.Удалить(СтрокаТаблицыГруппы.Значение);
КонецЦикла;
ЮТест.ОжидаетЧто(СпсисокГрупп.Количество(), "Количество групп")
.Больше(0)
;
ЮТест.ОжидаетЧто(ТаблицаЗначений)
.ИмеетТип("Массив")
.ИмеетДлинуБольше(0, "Количество элементов")
.КаждыйЭлементСоответствуетПредикату(ЮТест.Предикат()
.Реквизит("ЭтоГруппа").Равно(Ложь))
;
КонецПроцедуры
Процедура Итоги() Экспорт
ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура")
.Итоги("ЭтоГруппа")
.ВТаблицуЗначений()
;
ЮТест.ОжидаетЧто(ТаблицаЗначений)
.ИмеетТип("Массив")
.ИмеетДлинуБольше(0)
.ЛюбойЭлементСодержитСвойство("ссылка", Null)
;
КонецПроцедуры
#КонецОбласти
#Область РеальныеЗапросы
Процедура АдресныйКлассификаторСлужебный_ТаблицаАдресныхСокращений() Экспорт
// Подготовка
НаименованияАдресныхОбъектов = Новый Массив;
НаименованияАдресныхОбъектов.Добавить("Абонентский Ящик");
// Выполнение
Запрос = СЗ_Запрос.НовыйЗапрос("РегистрСведений.УровниСокращенийАдресныхСведений")
.Выбрать("Значение КАК Наименование, Сокращение")
.Сгруппировать("Значение, Сокращение")
.Упорядочить("Наименование");
Если ТипЗнч(НаименованияАдресныхОбъектов) = Тип("Массив") И НаименованияАдресныхОбъектов.Количество() > 0 Тогда
Запрос = Запрос
.Где(СЗ_Запрос.Предикат()
.Реквизит("Значение").ВСписке(НаименованияАдресныхОбъектов));
КонецЕсли;
Результат = Запрос.ВТаблицуЗначений();
// Проверки
ЮТест.ОжидаетЧто(Результат)
.ИмеетТип("Массив")
;
ЮТест.ОжидаетЧто(Результат.Количество())
.Равно(1)
;
КонецПроцедуры
#КонецОбласти
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Процедура ПодготовитьСписокНоменклатуры()
ВидНоменклатуры = ЮТест.Данные().КонструкторОбъекта("Справочники.ВидыНоменклатуры")
.Фикция("Наименование")
.Установить("ТипНоменклатуры", ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Товар"))
.Записать()
;
Массив = Новый Массив;
Для Сч = 1 По 5 Цикл
Номенклатура = ЮТест.Данные().КонструкторОбъекта("Справочники.Номенклатура")
.Фикция("Наименование")
.Установить("ВидНоменклатуры", ВидНоменклатуры)
.Установить("ТипНоменклатуры", ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Товар"))
.Установить("ИспользованиеХарактеристик",
ПредопределенноеЗначение("Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать"))
.Записать()
;
Массив.Добавить(Номенклатура);
КонецЦикла;
Контекст = ЮТест.КонтекстТеста();
Контекст.Вставить("МассивНоменклатуры", Массив);
КонецПроцедуры
#КонецОбласти

View File

@@ -0,0 +1,23 @@
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.18">
<CommonModule uuid="fd18e525-b216-4cbe-9e5b-3f44fcf6fcf2">
<Properties>
<Name>СЗ_ЗапросТестСлужебныйВызовСервера</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Схема запроса: запрос тест служебный вызов сервера</v8:content>
</v8:item>
</Synonym>
<Comment/>
<Global>false</Global>
<ClientManagedApplication>false</ClientManagedApplication>
<Server>true</Server>
<ExternalConnection>false</ExternalConnection>
<ClientOrdinaryApplication>false</ClientOrdinaryApplication>
<ServerCall>true</ServerCall>
<Privileged>false</Privileged>
<ReturnValuesReuse>DontUse</ReturnValuesReuse>
</Properties>
</CommonModule>
</MetaDataObject>

View File

@@ -0,0 +1,49 @@

Функция ПолучитьГруппуНоменклатуры() Экспорт
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1
| Номенклатура.Ссылка КАК Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.ЭтоГруппа";
Выборка = Запрос.Выполнить().Выбрать();
Выборка.Следующий();
Возврат Выборка.Ссылка;
КонецФункции
Функция ПолучитьНоменклатуруНеСписке(МассивНоменклатуры) Экспорт
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| Номенклатура.Ссылка КАК Ссылка
|ИЗ
| Справочник.Номенклатура КАК Номенклатура
|ГДЕ
| Номенклатура.Ссылка НЕ В (&МассивНоменклатуры)";
Запрос.УстановитьПараметр("МассивНоменклатуры", МассивНоменклатуры);
Возврат Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка");
КонецФункции
Процедура ПроверитьПодобноПоРегулярномуВыражению(ТаблицаЗначений) Экспорт
ЮТест.ОжидаетЧто(ТаблицаЗначений)
.КаждыйЭлементСоответствуетПредикату(ЮТест.Предикат()
.Реквизит("Наименование").СодержитСтрокуПоШаблону("(Х|х)леб"))
КонецПроцедуры
Процедура ПроверитьНеПодобноПоРегулярномуВыражению(ТаблицаЗначений) Экспорт
ЮТест.ОжидаетЧто(ТаблицаЗначений)
.КаждыйЭлементСоответствуетПредикату(ЮТест.Предикат()
.Реквизит("Наименование").НеСодержитСтрокуПоШаблону("(Х|х)леб"))
КонецПроцедуры

View File

@@ -185,8 +185,15 @@
Если СтруктураСхемыЗапроса.Свойство("Соединения") И ТипЗнч(СтруктураСхемыЗапроса.Соединения) = Тип("Массив") Тогда
Для каждого СтруктураСоединения Из СтруктураСхемыЗапроса.Соединения Цикл
ИсточникСоединения = Оператор.Источники.Добавить(СтруктураСоединения.ИсточникДанных,
СтруктураСоединения.Псевдоним);
Если ТипЗнч(СтруктураСоединения.ИсточникДанных) = Тип("Строка") Тогда
ИсточникСоединения = Оператор.Источники.Добавить(СтруктураСоединения.ИсточникДанных,
СтруктураСоединения.Псевдоним);
Иначе
ВложенныйЗапрос = ПолучитьЗапрос(СтруктураСоединения.ИсточникДанных);
ИсточникСоединения = Оператор.Источники.Добавить(Тип("ВложенныйЗапросСхемыЗапроса"),
СтруктураСоединения.Псевдоним);
ИсточникСоединения.Источник.Запрос.УстановитьТекстЗапроса(ВложенныйЗапрос);
КонецЕсли;
Если Оператор.Источники[0].Соединения.Количество() = 0 Тогда
Оператор.Источники[0].Соединения.Добавить(ИсточникСоединения);
КонецЕсли;

View File

@@ -1 +1,53 @@
// TODO:

#Область ПрограммныйИнтерфейс
Функция ПолучитьТаблицуЗначений(СтруктураСхемыЗапроса) Экспорт
ТаблицаЗначений = СЗ_ПроцессорыСхемЗапросаСлужебный
.ПолучитьРезультатЗапроса(СтруктураСхемыЗапроса)
.Выгрузить();
Возврат ПреобразоватьТаблицуЗначенийВМассивСтруктур(ТаблицаЗначений);
КонецФункции
Функция ПолучитьМассив(СтруктураСхемыЗапроса, ИмяКолонки) Экспорт
Возврат СЗ_ПроцессорыСхемЗапросаСлужебный
.ПолучитьРезультатЗапроса(СтруктураСхемыЗапроса)
.Выгрузить()
.ВыгрузитьКолонку(ИмяКолонки);
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Функция ПреобразоватьТаблицуЗначенийВМассивСтруктур(ТаблицаЗначений)
Массив = Новый Массив();
СтруктураСтрокой = "";
НужнаЗапятая = Ложь;
ОписаниеТаблицыЗначений = Новый ОписаниеТипов("ТаблицаЗначений");
Для Каждого Колонка Из ТаблицаЗначений.Колонки Цикл
Если Колонка.ТипЗначения = ОписаниеТаблицыЗначений Тогда
Продолжить;
КонецЕсли;
Если НужнаЗапятая Тогда
СтруктураСтрокой = СтруктураСтрокой + ",";
КонецЕсли;
СтруктураСтрокой = СтруктураСтрокой + Колонка.Имя;
НужнаЗапятая = Истина;
КонецЦикла;
Для Каждого Строка Из ТаблицаЗначений Цикл
НоваяСтрока = Новый Структура(СтруктураСтрокой);
ЗаполнитьЗначенияСвойств(НоваяСтрока, Строка);
Массив.Добавить(НоваяСтрока);
КонецЦикла;
Возврат Массив;
КонецФункции
#КонецОбласти

View File

@@ -85,30 +85,32 @@
Процедура ДобавитьСоединение(СхемаЗапроса, ТипСоединения, ИсточникДанных, Предикат) Экспорт
МассивСоединений = Новый Массив;
Если СхемаЗапроса.Свойство("Соединения") И ТипЗнч(СхемаЗапроса.Поля) = Тип("Массив") Тогда
МассивСоединений = СхемаЗапроса.Соединения;
КонецЕсли;
Если ТипЗнч(ИсточникДанных) = Тип("Строка") Тогда
МассивСоединений = Новый Массив;
Если СхемаЗапроса.Свойство("Соединения") И ТипЗнч(СхемаЗапроса.Поля) = Тип("Массив") Тогда
МассивСоединений = СхемаЗапроса.Соединения;
КонецЕсли;
Псевдоним = "";
Если СтрНайти(ИсточникДанных, " КАК ") > 0 Тогда
ИнформацияОбИсточникеДанных = СтрЗаменить(ИсточникДанных, " КАК ", Символы.ПС);
ИсточникДанных = СтрПолучитьСтроку(ИнформацияОбИсточникеДанных, 1);
Псевдоним = СтрПолучитьСтроку(ИнформацияОбИсточникеДанных, 2);
КонецЕсли;
Иначе // Вложенный запрос
Если Не ИсточникДанных.Свойство("ПсевдонимИсточника") Или
ПустаяСтрока(ИсточникДанных.ПсевдонимИсточника) Тогда
МассивСоединений.Добавить(Новый Структура("ТипСоединения, ИсточникДанных, Псевдоним, Условие",
ТипСоединения, ИсточникДанных, Псевдоним, ПолучитьУсловияСоединения(Предикат)));
СхемаЗапроса.Вставить("Соединения", МассивСоединений);
Иначе // Структура = вложенный запрос
ВызватьИсключение "Не реализовано!";
ВызватьИсключение "ДобавитьСоединение: у вложенного запроса обязательно должен быть псевдоним";
КонецЕсли;
Псевдоним = ИсточникДанных.ПсевдонимИсточника;
КонецЕсли;
МассивСоединений.Добавить(Новый Структура("ТипСоединения, ИсточникДанных, Псевдоним, Условие",
ТипСоединения, ИсточникДанных, Псевдоним, ПолучитьУсловияСоединения(Предикат)));
СхемаЗапроса.Вставить("Соединения", МассивСоединений);
КонецПроцедуры
Процедура УстановитьГруппировку(СхемаЗапроса, Поля) Экспорт

View File

@@ -4,7 +4,11 @@
<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="f5029ad2a148bd504f40bd79fde92ba57c17f10f"/>
<Metadata name="CommonModule.СЗ_ЗапросТест.Module" id="52ab0c6f-4fa1-4913-b37e-460ab1e44314.0" configVersion="f4e8ff494307f6fad7b6f05cfc617d4260e068bd"/>
<Metadata name="CommonModule.СЗ_ЗапросТестКлиент" id="b37c9dfc-97f9-419e-aef2-d1598bd7f793" configVersion="5359322a8c19378b2e3c1b14d2a9391855efe7df"/>
<Metadata name="CommonModule.СЗ_ЗапросТестКлиент.Module" id="b37c9dfc-97f9-419e-aef2-d1598bd7f793.0" configVersion="fe7ea798ca9297828818477ab38354e0cc05dd01"/>
<Metadata name="CommonModule.СЗ_ЗапросТестСлужебныйВызовСервера" id="fd18e525-b216-4cbe-9e5b-3f44fcf6fcf2" configVersion="e712d7406cf41efebb6cb460b71efc934d7fda79"/>
<Metadata name="CommonModule.СЗ_ЗапросТестСлужебныйВызовСервера.Module" id="fd18e525-b216-4cbe-9e5b-3f44fcf6fcf2.0" configVersion="2996bad07721c51263093d0143fd261dacf6a7e8"/>
<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 +16,25 @@
<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="849b2ce9024133933142e0b4b2daa77b6009ab6e"/>
<Metadata name="CommonModule.СЗ_ПроцессорыСхемЗапросаСлужебный.Module" id="fd5aeea0-9a03-452d-ba1e-81c816846c6c.0" configVersion="4f3900cb2dafbf4a589e4ff8d2025432c660f1d7"/>
<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.СЗ_ПроцессорыСхемЗапросаСлужебныйВызовСервера.Module" id="64cc4f13-8ea3-43e0-b530-031a569bfcd0.0" configVersion="d1a3621279ecd64374af1122b787e190dbc22c00"/>
<Metadata name="CommonModule.СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер" id="a7341127-4ed0-44b9-b3b2-007ae8f263dc" configVersion="8a27beba3300dacb51abfc0f6b4c8711bb7b0b06"/>
<Metadata name="CommonModule.СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер.Module" id="a7341127-4ed0-44b9-b3b2-007ae8f263dc.0" configVersion="68eed8852766199b3cb4b6b05c10ca2ad2c8afdd"/>
<Metadata name="CommonModule.СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер.Module" id="a7341127-4ed0-44b9-b3b2-007ae8f263dc.0" configVersion="ad147bc139300d286ab5b65727b8a96e03f89370"/>
<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="Configuration.СхемаЗапроса" id="727bc241-bb6d-418f-b908-1102fbf1bc00" configVersion="4dd0f6fff3c4507ca269683d93ce6fa75b40356c"/>
<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="ed93a31df2cc47c65da51be82b3b052f1f6b94e2"/>
<Metadata name="DataProcessor.СЗ_ПроцессорПредикатов" id="12d6eb41-70d9-4802-8fde-b6464e23bf0b" configVersion="7bd25841e01d3196cd731359775f0af93ddbd0d1"/>
<Metadata name="DataProcessor.СЗ_ПроцессорПредикатов" id="12d6eb41-70d9-4802-8fde-b6464e23bf0b" configVersion="77365f9ddbe5c04b263b27bebf9b835126f30f67"/>
<Metadata name="DataProcessor.СЗ_ПроцессорПредикатов.Form.Форма" id="9ab75485-6c0a-4548-b3cb-fab32ccd351d" configVersion="12570426f46bd4a3dbb5f4c3b28a92c6db858ede"/>
<Metadata name="DataProcessor.СЗ_ПроцессорПредикатов.Form.Форма.Form" id="9ab75485-6c0a-4548-b3cb-fab32ccd351d.0" configVersion="2ea90d47439f8f3c9f8eaac893840956ce11928b"/>
<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="d16220520ab962c474afa1a8a90054cd0577c32f"/>
<Metadata name="DataProcessor.СЗ_ПроцессорСхемЗапроса.Form.Форма.Form" id="04cd8a25-c99d-4da9-ac0f-5703574d079f.0" configVersion="2604eee1201c8910f82770c627590af9e28a4704"/>
<Metadata name="DataProcessor.СЗ_ПроцессорСхемЗапроса.ObjectModule" id="7008c53a-3e8a-4432-bff6-500c4145bab5.0" configVersion="b161dc00d93c568e6b15dffb531b4c549538682f"/>
<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

@@ -63,6 +63,8 @@
<CommonPicture>СЗ_Логотип</CommonPicture>
<CommonModule>СЗ_Запрос</CommonModule>
<CommonModule>СЗ_ЗапросТест</CommonModule>
<CommonModule>СЗ_ЗапросТестКлиент</CommonModule>
<CommonModule>СЗ_ЗапросТестСлужебныйВызовСервера</CommonModule>
<CommonModule>СЗ_ПроцессорыПредикатовКлиентСервер</CommonModule>
<CommonModule>СЗ_ПроцессорыПредикатовСлужебныйКлиентСервер</CommonModule>
<CommonModule>СЗ_ПроцессорыСхемЗапросаКлиентСервер</CommonModule>

View File

@@ -21,12 +21,14 @@
</Synonym>
<Comment/>
<UseStandardCommands>true</UseStandardCommands>
<DefaultForm/>
<DefaultForm>DataProcessor.СЗ_ПроцессорПредикатов.Form.Форма</DefaultForm>
<AuxiliaryForm/>
<IncludeHelpInContents>false</IncludeHelpInContents>
<ExtendedPresentation/>
<Explanation/>
</Properties>
<ChildObjects/>
<ChildObjects>
<Form>Форма</Form>
</ChildObjects>
</DataProcessor>
</MetaDataObject>

View File

@@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<MetaDataObject xmlns="http://v8.1c.ru/8.3/MDClasses" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:cmi="http://v8.1c.ru/8.2/managed-application/cmi" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xen="http://v8.1c.ru/8.3/xcf/enums" xmlns:xpr="http://v8.1c.ru/8.3/xcf/predef" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.18">
<Form uuid="9ab75485-6c0a-4548-b3cb-fab32ccd351d">
<Properties>
<Name>Форма</Name>
<Synonym>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Форма</v8:content>
</v8:item>
</Synonym>
<Comment/>
<FormType>Managed</FormType>
<IncludeHelpInContents>false</IncludeHelpInContents>
<UsePurposes>
<v8:Value xsi:type="app:ApplicationUsePurpose">PlatformApplication</v8:Value>
<v8:Value xsi:type="app:ApplicationUsePurpose">MobilePlatformApplication</v8:Value>
</UsePurposes>
<ExtendedPresentation/>
</Properties>
</Form>
</MetaDataObject>

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="UTF-8"?>
<Form xmlns="http://v8.1c.ru/8.3/xcf/logform" xmlns:app="http://v8.1c.ru/8.2/managed-application/core" xmlns:cfg="http://v8.1c.ru/8.1/data/enterprise/current-config" xmlns:dcscor="http://v8.1c.ru/8.1/data-composition-system/core" xmlns:dcsset="http://v8.1c.ru/8.1/data-composition-system/settings" xmlns:ent="http://v8.1c.ru/8.1/data/enterprise" xmlns:lf="http://v8.1c.ru/8.2/managed-application/logform" xmlns:style="http://v8.1c.ru/8.1/data/ui/style" xmlns:sys="http://v8.1c.ru/8.1/data/ui/fonts/system" xmlns:v8="http://v8.1c.ru/8.1/data/core" xmlns:v8ui="http://v8.1c.ru/8.1/data/ui" xmlns:web="http://v8.1c.ru/8.1/data/ui/colors/web" xmlns:win="http://v8.1c.ru/8.1/data/ui/colors/windows" xmlns:xr="http://v8.1c.ru/8.3/xcf/readable" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.18">
<AutoCommandBar name="ФормаКоманднаяПанель" id="-1"/>
<Attributes>
<Attribute name="Объект" id="1">
<Type>
<v8:Type>cfg:DataProcessorObject.СЗ_ПроцессорПредикатов</v8:Type>
</Type>
<MainAttribute>true</MainAttribute>
</Attribute>
</Attributes>
</Form>

View File

@@ -0,0 +1,93 @@
#Область ОписаниеПеременных
&НаКлиенте
Перем Предикат;
#КонецОбласти
#Область ПрограммныйИнтерфейс
&НаКлиенте
Функция Реквизит(ИмяРеквизита) Экспорт
СЗ_ПроцессорыПредикатовСлужебныйКлиентСервер.УстановитьИмяРеквизита(Предикат, ИмяРеквизита);
Возврат ЭтотОбъект;
КонецФункции
&НаКлиенте
Функция Равно(Значение) Экспорт
СЗ_ПроцессорыПредикатовСлужебныйКлиентСервер.УстановитьПредикат(Предикат,
СЗ_ПроцессорыПредикатовКлиентСервер.Выражения().Равно, Значение);
Возврат ЭтотОбъект;
КонецФункции
&НаКлиенте
Функция НеРавно(Значение) Экспорт
СЗ_ПроцессорыПредикатовСлужебныйКлиентСервер.УстановитьПредикат(Предикат,
СЗ_ПроцессорыПредикатовКлиентСервер.Выражения().НеРавно, Значение);
Возврат ЭтотОбъект;
КонецФункции
&НаКлиенте
Функция Больше(Значение) Экспорт
СЗ_ПроцессорыПредикатовСлужебныйКлиентСервер.УстановитьПредикат(Предикат,
СЗ_ПроцессорыПредикатовКлиентСервер.Выражения().Больше, Значение);
Возврат ЭтотОбъект;
КонецФункции
&НаКлиенте
Функция Меньше(Значение) Экспорт
СЗ_ПроцессорыПредикатовСлужебныйКлиентСервер.УстановитьПредикат(Предикат,
СЗ_ПроцессорыПредикатовКлиентСервер.Выражения().Меньше, Значение);
Возврат ЭтотОбъект;
КонецФункции
&НаКлиенте
Функция ВСписке(Значение) Экспорт
СЗ_ПроцессорыПредикатовСлужебныйКлиентСервер.УстановитьПредикат(Предикат,
СЗ_ПроцессорыПредикатовКлиентСервер.Выражения().ВСписке, Значение);
Возврат ЭтотОбъект;
КонецФункции
&НаКлиенте
Функция НеВСписке(Значение) Экспорт
СЗ_ПроцессорыПредикатовСлужебныйКлиентСервер.УстановитьПредикат(Предикат,
СЗ_ПроцессорыПредикатовКлиентСервер.Выражения().НеВСписке, Значение);
Возврат ЭтотОбъект;
КонецФункции
&НаКлиенте
Функция Подобно(Значение) Экспорт
СЗ_ПроцессорыПредикатовСлужебныйКлиентСервер.УстановитьПредикат(Предикат,
СЗ_ПроцессорыПредикатовКлиентСервер.Выражения().Подобно, Значение);
Возврат ЭтотОбъект;
КонецФункции
&НаКлиенте
Функция НеПодобно(Значение) Экспорт
СЗ_ПроцессорыПредикатовСлужебныйКлиентСервер.УстановитьПредикат(Предикат,
СЗ_ПроцессорыПредикатовКлиентСервер.Выражения().НеПодобно, Значение);
Возврат ЭтотОбъект;
КонецФункции
&НаКлиенте
Функция Между(НачалоИнтервала, ОкончаниеИнтервала) Экспорт
Значения = Новый Массив;
Значения.Добавить(НачалоИнтервала);
Значения.Добавить(ОкончаниеИнтервала);
СЗ_ПроцессорыПредикатовСлужебныйКлиентСервер.УстановитьПредикат(Предикат,
СЗ_ПроцессорыПредикатовКлиентСервер.Выражения().Между, Значения);
Возврат ЭтотОбъект;
КонецФункции
&НаКлиенте
Функция Получить() Экспорт
Возврат Предикат;
КонецФункции
#КонецОбласти

View File

@@ -104,26 +104,21 @@
//
//
Функция ЛевоеСоединение(ИсточникДанных, Предикат = Неопределено) Экспорт
СоздатьСоединение("Левое", ИсточникДанных, Предикат);
Возврат ЭтотОбъект;
КонецФункции
// TODO: ИсточникДанных может быть структурой? Что делать в этом случае?
Если ТипЗнч(ИсточникДанных) = Тип("Строка") Тогда
_ИсточникДанных = ИсточникДанных;
ИначеЕсли ТипЗнч(ИсточникДанных) = Тип("ОбработкаОбъект.СЗ_ПроцессорСхемЗапроса") Тогда
_ИсточникДанных = ИсточникДанных.Получить();
Иначе
ВызватьИсключение "ЛевоеСоединение: неверный тип источника данных";
КонецЕсли;
//
//
Функция ПравоеСоединение(ИсточникДанных, Предикат = Неопределено) Экспорт
СоздатьСоединение("Правое", ИсточникДанных, Предикат);
Возврат ЭтотОбъект;
КонецФункции
Если ТипЗнч(Предикат) = Тип("Структура") Или Предикат = Неопределено Тогда
_Предикат = Предикат;
ИначеЕсли ТипЗнч(Предикат) = Тип("ОбработкаОбъект.СЗ_ПроцессорПредикатов") Тогда
_Предикат = Предикат.Получить();
Иначе
ВызватьИсключение "ЛевоеСоединение: неверный тип предиката";
КонецЕсли;
СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер.ДобавитьСоединение(
СхемаЗапроса, "Левое", _ИсточникДанных, _Предикат);
//
//
Функция ВнутреннееСоединение(ИсточникДанных, Предикат = Неопределено) Экспорт
СоздатьСоединение("Внутреннее", ИсточникДанных, Предикат);
Возврат ЭтотОбъект;
КонецФункции
@@ -170,6 +165,28 @@
#Область СлужебныеПроцедурыИФункции
Процедура СоздатьСоединение(ТипСоединения, ИсточникДанных, Предикат)
// TODO: ИсточникДанных может быть структурой? Что делать в этом случае?
Если ТипЗнч(ИсточникДанных) = Тип("Строка") Тогда
_ИсточникДанных = ИсточникДанных;
ИначеЕсли ТипЗнч(ИсточникДанных) = Тип("ОбработкаОбъект.СЗ_ПроцессорСхемЗапроса") Тогда
_ИсточникДанных = ИсточникДанных.Получить();
Иначе
ВызватьИсключение "ЛевоеСоединение: неверный тип источника данных";
КонецЕсли;
Если ТипЗнч(Предикат) = Тип("Структура") Или Предикат = Неопределено Тогда
_Предикат = Предикат;
ИначеЕсли ТипЗнч(Предикат) = Тип("ОбработкаОбъект.СЗ_ПроцессорПредикатов") Тогда
_Предикат = Предикат.Получить();
Иначе
ВызватьИсключение "ЛевоеСоединение: неверный тип предиката";
КонецЕсли;
СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер.ДобавитьСоединение(
СхемаЗапроса, ТипСоединения, _ИсточникДанных, _Предикат);
КонецПроцедуры
#КонецОбласти

View File

@@ -9,39 +9,56 @@
&НаКлиенте
Процедура УстановитьИсточникДанных(ИсточникДанных, Первые = -1, Различные = Ложь, Разрешенные = Ложь) Экспорт
_ИсточникДанных = ИсточникДанных;
Если ТипЗнч(ИсточникДанных) = Тип("ФормаКлиентскогоПриложения") Тогда
_ИсточникДанных = ИсточникДанных.Получить();
КонецЕсли;
СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер.УстановитьИсточникДанных(СхемаЗапроса,
ИсточникДанных, Первые, Различные, Разрешенные);
_ИсточникДанных, Первые, Различные, Разрешенные);
КонецПроцедуры
&НаКлиенте
Функция Псевдоним(ИмяПсевдонима) Экспорт
СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер
.УстановитьПсевдонимИсточника(СхемаЗапроса, ИмяПсевдонима);
Возврат ЭтотОбъект;
КонецФункции
&НаКлиенте
Функция ВТаблицуЗначений() Экспорт
ТаблицаЗначений = СЗ_ПроцессорыСхемЗапросаСлужебныйВызовСервера
.ПолучитьРезультатЗапроса(СхемаЗапроса).Выгрузить();
.ПолучитьТаблицуЗначений(СхемаЗапроса);
Возврат ТаблицаЗначений;
КонецФункции
&НаКлиенте
Функция ВМассив(ИмяКолонки) Экспорт
ТаблицаЗначений = СЗ_ПроцессорыСхемЗапросаСлужебныйВызовСервера
.ПолучитьРезультатЗапроса(СхемаЗапроса).Выгрузить();
Возврат ТаблицаЗначений.ВыгрузитьКолонку(ИмяКолонки);
Массив = СЗ_ПроцессорыСхемЗапросаСлужебныйВызовСервера
.ПолучитьМассив(СхемаЗапроса, ИмяКолонки);
Возврат Массив;
КонецФункции
&НаКлиенте
Функция Первые(Количество) Экспорт
// TODO:
СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер
.УстановитьПервые(СхемаЗапроса, Количество);
Возврат ЭтотОбъект;
КонецФункции
&НаКлиенте
Функция Различные() Экспорт
// TODO:
СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер
.УстановитьРазличные(СхемаЗапроса);
Возврат ЭтотОбъект;
КонецФункции
&НаКлиенте
Функция Разрешенные() Экспорт
// TODO:
СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер
.УстановитьРазрешенные(СхемаЗапроса);
Возврат ЭтотОбъект;
КонецФункции
@@ -64,7 +81,7 @@
Если ТипЗнч(Предикат) = Тип("Структура") Тогда
_Предикат = Предикат;
ИначеЕсли ТипЗнч(Предикат) = Тип("ОбработкаОбъект.СЗ_ПроцессорПредикатов") Тогда
ИначеЕсли ТипЗнч(Предикат) = Тип("ФормаКлиентскогоПриложения") Тогда
_Предикат = Предикат.Получить();
Иначе
ВызватьИсключение "Неверный тип предиката в методе ""Где""";
@@ -76,44 +93,40 @@
&НаКлиенте
Функция ЛевоеСоединение(ИсточникДанных, Предикат = Неопределено) Экспорт
СоздатьСоединение("Левое", ИсточникДанных, Предикат);
Возврат ЭтотОбъект;
КонецФункции
// TODO: ИсточникДанных может быть структурой? Что делать в этом случае?
Если ТипЗнч(ИсточникДанных) = Тип("Строка") Тогда
_ИсточникДанных = ИсточникДанных;
ИначеЕсли ТипЗнч(ИсточникДанных) = Тип("ОбработкаОбъект.СЗ_ПроцессорСхемЗапроса") Тогда
_ИсточникДанных = ИсточникДанных.Получить();
Иначе
ВызватьИсключение "ЛевоеСоединение: неверный тип источника данных";
КонецЕсли;
&НаКлиенте
Функция ПравоеСоединение(ИсточникДанных, Предикат = Неопределено) Экспорт
СоздатьСоединение("Правое", ИсточникДанных, Предикат);
Возврат ЭтотОбъект;
КонецФункции
Если ТипЗнч(Предикат) = Тип("Структура") Или Предикат = Неопределено Тогда
_Предикат = Предикат;
ИначеЕсли ТипЗнч(Предикат) = Тип("ОбработкаОбъект.СЗ_ПроцессорПредикатов") Тогда
_Предикат = Предикат.Получить();
Иначе
ВызватьИсключение "ЛевоеСоединение: неверный тип предиката";
КонецЕсли;
СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер.ДобавитьСоединение(
СхемаЗапроса, "Левое", ИсточникДанных, _Предикат);
&НаКлиенте
Функция ВнутреннееСоединение(ИсточникДанных, Предикат = Неопределено) Экспорт
СоздатьСоединение("Внутреннее", ИсточникДанных, Предикат);
Возврат ЭтотОбъект;
КонецФункции
&НаКлиенте
Функция Сгруппировать(Поля) Экспорт
// TODO:
СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер
.УстановитьГруппировку(СхемаЗапроса, Поля);
Возврат ЭтотОбъект;
КонецФункции
&НаКлиенте
Функция Упорядочить(Поля) Экспорт
// TODO:
СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер
.УстановитьПорядок(СхемаЗапроса, Поля);
Возврат ЭтотОбъект;
КонецФункции
&НаКлиенте
Функция Итоги() Экспорт
// TODO:
Функция Итоги(Поля) Экспорт
СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер
.УстановитьИтоги(СхемаЗапроса, Поля);
Возврат ЭтотОбъект;
КонецФункции
@@ -131,3 +144,32 @@
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаКлиенте
Процедура СоздатьСоединение(ТипСоединения, ИсточникДанных, Предикат)
// TODO: ИсточникДанных может быть структурой? Что делать в этом случае?
Если ТипЗнч(ИсточникДанных) = Тип("Строка") Тогда
_ИсточникДанных = ИсточникДанных;
ИначеЕсли ТипЗнч(ИсточникДанных) = Тип("ФормаКлиентскогоПриложения") Тогда
_ИсточникДанных = ИсточникДанных.Получить();
Иначе
ВызватьИсключение "ЛевоеСоединение: неверный тип источника данных";
КонецЕсли;
Если ТипЗнч(Предикат) = Тип("Структура") Или Предикат = Неопределено Тогда
_Предикат = Предикат;
ИначеЕсли ТипЗнч(Предикат) = Тип("ФормаКлиентскогоПриложения") Тогда
_Предикат = Предикат.Получить();
Иначе
ВызватьИсключение "ЛевоеСоединение: неверный тип предиката";
КонецЕсли;
СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер.ДобавитьСоединение(
СхемаЗапроса, ТипСоединения, _ИсточникДанных, _Предикат);
КонецПроцедуры
#КонецОбласти