From 8bc191fb1244e6f5e20dcc927c6687335ac4cc7b Mon Sep 17 00:00:00 2001 From: Ilya Bushin Date: Tue, 22 Oct 2024 16:02:18 +0300 Subject: [PATCH] 0.0.3 --- README.md | 6 +- docs/docs/getting-started/fields.md | 10 +- docs/docs/getting-started/limits.md | 12 +- docs/docs/getting-started/request.md | 6 +- docs/docs/getting-started/where.md | 8 +- docs/docs/lib-features/expressions.md | 37 + docs/docs/lib-features/group.md | 38 +- docs/docs/lib-features/join.md | 22 +- docs/docs/lib-features/nested.md | 20 + docs/docs/lib-features/sort.md | 6 +- docs/docs/lib-features/totals.md | 4 +- docs/docs/lib-features/union.md | 12 + docs/src/pages/index.md | 12 +- .../Ext/Module.bsl | 42 - .../{СЗ_Запрос.xml => СхЗапрос.xml} | 2 +- .../{СЗ_Запрос => СхЗапрос}/Ext/Module.bsl | 10 +- .../{СЗ_ЗапросТест.xml => СхЗапросТест.xml} | 2 +- .../Ext/Module.bsl | 450 ++- ...просТестКлиент.xml => СхЗапросТестКлиент.xml} | 44 +- .../Ext/Module.bsl | 2500 +++++++++-------- ...ыйВызовСервера.xml => СхЗапросТестСлужебныйВызовСервера.xml} | 44 +- .../Ext/Module.bsl | 98 +- .../СхОбщегоНазначенийКлиентСервер.xml | 23 + .../Ext/Module.bsl | 49 + ...овКлиентСервер.xml => СхПроцессорыПредикатовКлиентСервер.xml} | 2 +- .../Ext/Module.bsl | 6 +- ...ыйКлиентСервер.xml => СхПроцессорыПредикатовСлужебныйКлиентСервер.xml} | 2 +- .../Ext/Module.bsl | 81 + ...саКлиентСервер.xml => СхПроцессорыСхемЗапросаКлиентСервер.xml} | 2 +- .../Ext/Module.bsl | 6 +- ...просаСлужебный.xml => СхПроцессорыСхемЗапросаСлужебный.xml} | 2 +- .../Ext/Module.bsl | 38 +- ...ыйВызовСервера.xml => СхПроцессорыСхемЗапросаСлужебныйВызовСервера.xml} | 2 +- .../Ext/Module.bsl | 106 +- ...ыйКлиентСервер.xml => СхПроцессорыСхемЗапросаСлужебныйКлиентСервер.xml} | 4 +- .../Ext/Module.bsl | 211 +- src/cfe/ConfigDumpInfo.xml | 72 +- src/cfe/Configuration.xml | 37 +- .../Ext/ObjectModule.bsl | 81 - .../Forms/Форма/Ext/Form/Module.bsl | 93 - ...альныхЗапросов.xml => СхКонсольФункциональныхЗапросов.xml} | 8 +- .../Forms/Форма.xml | 0 .../Forms/Форма/Ext/Form.xml | 2 +- .../Forms/Форма/Ext/Form/Module.bsl | 4 +- ...ссорПредикатов.xml => СхПроцессорПредикатов.xml} | 10 +- .../Ext/ObjectModule.bsl | 88 + .../Forms/Форма.xml | 42 +- .../Forms/Форма/Ext/Form.xml | 22 +- .../Forms/Форма/Ext/Form/Module.bsl | 100 + ...сорСхемЗапроса.xml => СхПроцессорСхемЗапроса.xml} | 8 +- .../Ext/ObjectModule.bsl | 107 +- .../Forms/Форма.xml | 0 .../Forms/Форма/Ext/Form.xml | 2 +- .../Forms/Форма/Ext/Form/Module.bsl | 86 +- src/cfe/Subsystems/СЗ_Основная.xml | 32 - .../{СЗ_Обработки.xml => СхОбработки.xml} | 4 +- src/cfe/Subsystems/СхОсновная.xml | 24 + ...СЗ_Тестирование.xml => СхТестирование.xml} | 4 +- 58 files changed, 2935 insertions(+), 1810 deletions(-) create mode 100644 docs/docs/lib-features/expressions.md create mode 100644 docs/docs/lib-features/nested.md create mode 100644 docs/docs/lib-features/union.md delete mode 100644 src/cfe/CommonModules/СЗ_ПроцессорыПредикатовСлужебныйКлиентСервер/Ext/Module.bsl rename src/cfe/CommonModules/{СЗ_Запрос.xml => СхЗапрос.xml} (96%) rename src/cfe/CommonModules/{СЗ_Запрос => СхЗапрос}/Ext/Module.bsl (75%) rename src/cfe/CommonModules/{СЗ_ЗапросТест.xml => СхЗапросТест.xml} (96%) rename src/cfe/CommonModules/{СЗ_ЗапросТест => СхЗапросТест}/Ext/Module.bsl (64%) rename src/cfe/CommonModules/{СЗ_ЗапросТестКлиент.xml => СхЗапросТестКлиент.xml} (95%) rename src/cfe/CommonModules/{СЗ_ЗапросТестКлиент => СхЗапросТестКлиент}/Ext/Module.bsl (63%) rename src/cfe/CommonModules/{СЗ_ЗапросТестСлужебныйВызовСервера.xml => СхЗапросТестСлужебныйВызовСервера.xml} (93%) rename src/cfe/CommonModules/{СЗ_ЗапросТестСлужебныйВызовСервера => СхЗапросТестСлужебныйВызовСервера}/Ext/Module.bsl (97%) create mode 100644 src/cfe/CommonModules/СхОбщегоНазначенийКлиентСервер.xml create mode 100644 src/cfe/CommonModules/СхОбщегоНазначенийКлиентСервер/Ext/Module.bsl rename src/cfe/CommonModules/{СЗ_ПроцессорыПредикатовКлиентСервер.xml => СхПроцессорыПредикатовКлиентСервер.xml} (93%) rename src/cfe/CommonModules/{СЗ_ПроцессорыПредикатовКлиентСервер => СхПроцессорыПредикатовКлиентСервер}/Ext/Module.bsl (85%) rename src/cfe/CommonModules/{СЗ_ПроцессорыПредикатовСлужебныйКлиентСервер.xml => СхПроцессорыПредикатовСлужебныйКлиентСервер.xml} (92%) create mode 100644 src/cfe/CommonModules/СхПроцессорыПредикатовСлужебныйКлиентСервер/Ext/Module.bsl rename src/cfe/CommonModules/{СЗ_ПроцессорыСхемЗапросаКлиентСервер.xml => СхПроцессорыСхемЗапросаКлиентСервер.xml} (93%) rename src/cfe/CommonModules/{СЗ_ПроцессорыСхемЗапросаКлиентСервер => СхПроцессорыСхемЗапросаКлиентСервер}/Ext/Module.bsl (81%) rename src/cfe/CommonModules/{СЗ_ПроцессорыСхемЗапросаСлужебный.xml => СхПроцессорыСхемЗапросаСлужебный.xml} (93%) rename src/cfe/CommonModules/{СЗ_ПроцессорыСхемЗапросаСлужебный => СхПроцессорыСхемЗапросаСлужебный}/Ext/Module.bsl (91%) rename src/cfe/CommonModules/{СЗ_ПроцессорыСхемЗапросаСлужебныйВызовСервера.xml => СхПроцессорыСхемЗапросаСлужебныйВызовСервера.xml} (92%) rename src/cfe/CommonModules/{СЗ_ПроцессорыСхемЗапросаСлужебныйВызовСервера => СхПроцессорыСхемЗапросаСлужебныйВызовСервера}/Ext/Module.bsl (90%) rename src/cfe/CommonModules/{СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер.xml => СхПроцессорыСхемЗапросаСлужебныйКлиентСервер.xml} (87%) rename src/cfe/CommonModules/{СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер => СхПроцессорыСхемЗапросаСлужебныйКлиентСервер}/Ext/Module.bsl (66%) delete mode 100644 src/cfe/DataProcessors/СЗ_ПроцессорПредикатов/Ext/ObjectModule.bsl delete mode 100644 src/cfe/DataProcessors/СЗ_ПроцессорПредикатов/Forms/Форма/Ext/Form/Module.bsl rename src/cfe/DataProcessors/{СЗ_КонсольФункциональныхЗапросов.xml => СхКонсольФункциональныхЗапросов.xml} (78%) rename src/cfe/DataProcessors/{СЗ_КонсольФункциональныхЗапросов => СхКонсольФункциональныхЗапросов}/Forms/Форма.xml (100%) rename src/cfe/DataProcessors/{СЗ_КонсольФункциональныхЗапросов => СхКонсольФункциональныхЗапросов}/Forms/Форма/Ext/Form.xml (95%) rename src/cfe/DataProcessors/{СЗ_КонсольФункциональныхЗапросов => СхКонсольФункциональныхЗапросов}/Forms/Форма/Ext/Form/Module.bsl (96%) rename src/cfe/DataProcessors/{СЗ_ПроцессорПредикатов.xml => СхПроцессорПредикатов.xml} (77%) create mode 100644 src/cfe/DataProcessors/СхПроцессорПредикатов/Ext/ObjectModule.bsl rename src/cfe/DataProcessors/{СЗ_ПроцессорПредикатов => СхПроцессорПредикатов}/Forms/Форма.xml (98%) rename src/cfe/DataProcessors/{СЗ_ПроцессорПредикатов => СхПроцессорПредикатов}/Forms/Форма/Ext/Form.xml (91%) create mode 100644 src/cfe/DataProcessors/СхПроцессорПредикатов/Forms/Форма/Ext/Form/Module.bsl rename src/cfe/DataProcessors/{СЗ_ПроцессорСхемЗапроса.xml => СхПроцессорСхемЗапроса.xml} (80%) rename src/cfe/DataProcessors/{СЗ_ПроцессорСхемЗапроса => СхПроцессорСхемЗапроса}/Ext/ObjectModule.bsl (60%) rename src/cfe/DataProcessors/{СЗ_ПроцессорСхемЗапроса => СхПроцессорСхемЗапроса}/Forms/Форма.xml (100%) rename src/cfe/DataProcessors/{СЗ_ПроцессорСхемЗапроса => СхПроцессорСхемЗапроса}/Forms/Форма/Ext/Form.xml (91%) rename src/cfe/DataProcessors/{СЗ_ПроцессорСхемЗапроса => СхПроцессорСхемЗапроса}/Forms/Форма/Ext/Form/Module.bsl (64%) delete mode 100644 src/cfe/Subsystems/СЗ_Основная.xml rename src/cfe/Subsystems/{СЗ_Обработки.xml => СхОбработки.xml} (89%) create mode 100644 src/cfe/Subsystems/СхОсновная.xml rename src/cfe/Subsystems/{СЗ_Тестирование.xml => СхТестирование.xml} (90%) diff --git a/README.md b/README.md index 293a376..c725a03 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ Библиотека позволяет писать запросы 1С Предприятия в функциональном стиле. Например, вот такой код: ```bsl -ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура").ВТаблицуЗначений(); +ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура").ВТаблицуЗначений(); ``` будет аналогичен: ```bsl @@ -86,14 +86,14 @@ ```bsl Функция ТаблицаАдресныхСокращений(НаименованияАдресныхОбъектов) - Запрос = СЗ_Запрос.НовыйЗапрос("РегистрСведений.УровниСокращенийАдресныхСведений") + Запрос = СхЗапрос.НовыйЗапрос("РегистрСведений.УровниСокращенийАдресныхСведений") .Выбрать("Значение КАК Наименование, Сокращение") .Сгруппировать("Значение, Сокращение") .Упорядочить("Наименование"); Если ТипЗнч(НаименованияАдресныхОбъектов) = Тип("Массив") И НаименованияАдресныхОбъектов.Количество() > 0 Тогда Запрос = Запрос - .Где(СЗ_Запрос.Предикат() + .Где(СхЗапрос.Предикат() .Реквизит("Значение").В(НаименованияАдресныхОбъектов)); КонецЕсли; diff --git a/docs/docs/getting-started/fields.md b/docs/docs/getting-started/fields.md index 3c47f2f..c4e7385 100644 --- a/docs/docs/getting-started/fields.md +++ b/docs/docs/getting-started/fields.md @@ -10,9 +10,9 @@ tags: [Начало] Единичное поле можно задать передав методу `Выбрать` структуру с описанием этого поля: ```bsl -ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура") - .Выбрать(СЗ_Запрос.НовоеПоле("Ссылка",, "СсылкаНоменклатуры")) - .Выбрать(СЗ_Запрос.НовоеПоле("Наименование",, "НаименованиеНоменклатуры")) +ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") + .Выбрать(СхЗапрос.НовоеПоле("Ссылка",, "СсылкаНоменклатуры")) + .Выбрать(СхЗапрос.НовоеПоле("Наименование",, "НаименованиеНоменклатуры")) .ВТаблицуЗначений(); ``` @@ -23,7 +23,7 @@ tags: [Начало] Через тот же метод `Выбрать` возможна передача массива полей или строки, в которой перечислены поля разделённые запятыми: ```bsl -ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура") +ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") .Выбрать("Наименование КАК НаименованиеНоменклатуры, ЭтоГруппа |НаименованиеПолное, ЕдиницаИзмерения КАК ЕдИзм") .ВТаблицуЗначений(); @@ -52,7 +52,7 @@ tags: [Начало] ::: ```bsl -ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура") +ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") .ВыбратьВсе() .ВТаблицуЗначений(); ``` diff --git a/docs/docs/getting-started/limits.md b/docs/docs/getting-started/limits.md index a6cb621..5d5c3fa 100644 --- a/docs/docs/getting-started/limits.md +++ b/docs/docs/getting-started/limits.md @@ -10,14 +10,14 @@ tags: [Начало] Позволяет задать предельное количество строк в результате запроса. Можно использовать в двух вариантах. При создании запроса: ```bsl -ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура", 10) +ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура", 10) .ВТаблицуЗначений(); ``` И отдельным методом: ```bsl -ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура") +ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") .Первые(10) .ВТаблицуЗначений(); ``` @@ -27,12 +27,12 @@ tags: [Начало] Можно указать, что в результат не должны попадать повторяющиеся строки. Так же доступно два варианта записи: ```bsl -ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура",, Истина) +ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура",, Истина) .ВТаблицуЗначений(); ``` ```bsl -ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура") +ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") .Различные() .ВТаблицуЗначений(); ``` @@ -42,12 +42,12 @@ tags: [Начало] Ограничение по правам пользователей задаётся соответствующим флагом при создании запроса или при помощи метода `Разрешенные`: ```bsl -ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура",,, Истина) +ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура",,, Истина) .ВТаблицуЗначений(); ``` ```bsl -ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура") +ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") .Разрешенные() .ВТаблицуЗначений(); ``` diff --git a/docs/docs/getting-started/request.md b/docs/docs/getting-started/request.md index bdf89f3..26bf52a 100644 --- a/docs/docs/getting-started/request.md +++ b/docs/docs/getting-started/request.md @@ -10,7 +10,7 @@ tags: [Начало] Любой запрос начинается с вызова функции `НовыйЗапрос` в качестве параметра которого необходимо указать источник выбираемых данных ```bsl -Запрос = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура"); +Запрос = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура"); ``` На этом этапе, самого запроса, как объекта 1С, не существует. В переменной `Запрос` находится контекст (описание) запроса. По этому описанию будет позже сформирован реальный запрос к базе данных. @@ -20,13 +20,13 @@ tags: [Начало] Чтобы получить данные по написанному запросу необходимо вызвать функцию материализации. Их две: `ВТаблицуЗначений` и `ВМассив`. При этом происходит выполнение запроса на сервере. Если запрос вызывается с клиента, то соответственно дополнительно происходит вызов сервера. ```bsl -ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура") +ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") .ВТаблицуЗначений(); ``` Материализация данных в массив требует передачи имени выгружаемой в этот массив колонки запроса ```bsl -ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура") +ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") .ВМассив("Ссылка"); ``` diff --git a/docs/docs/getting-started/where.md b/docs/docs/getting-started/where.md index f1d3dc8..fdcd8bd 100644 --- a/docs/docs/getting-started/where.md +++ b/docs/docs/getting-started/where.md @@ -10,14 +10,14 @@ tags: [Начало] Все отборы в библиотеке строятся на предикатах. Предикат это утверждение которое возвращает `Истина` или `Ложь`. Предикаты создаются при помощи специальной функции `Предикат`: ```bsl -Предикат = СЗ_Запрос.Предикат() +Предикат = СхЗапрос.Предикат() .Реквизит("ЭтоГруппа").Равно(Ложь); ``` Предикаты соединяются между собой при помощи логической функции `И`. Например: ```bsl -Предикат = СЗ_Запрос.Предикат() +Предикат = СхЗапрос.Предикат() .Реквизит("ЭтоГруппа").Равно(Ложь) .Реквизит("Родитель").НеРавно(Родитель); ``` @@ -60,8 +60,8 @@ tags: [Начало] Созданный предикат передаётся в функцию `Где`: ```bsl -ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура") - .Где(СЗ_Запрос.Предикат() +ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") + .Где(СхЗапрос.Предикат() .Реквизит("ЭтоГруппа").Равно(Ложь)) .ВТаблицуЗначений(); ``` diff --git a/docs/docs/lib-features/expressions.md b/docs/docs/lib-features/expressions.md new file mode 100644 index 0000000..36ed618 --- /dev/null +++ b/docs/docs/lib-features/expressions.md @@ -0,0 +1,37 @@ +--- +sidebar_position: 0 +tags: [Функционал] +--- + +# Выражения + +# Встроенные функции языка запросов + +:::info + +В разработке + +::: + +# Агрегатные функции + +[Можно посмотреть в разделе "Группировка"](./group) + +# Операция выбора + +```bsl +Предикат = СхЗапрос.Предикат().Реквизит("ЭтоГруппа").Равно(Истина); + +ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") + .ВыборКогда(Предикат, 1, 0, "ЭтоГруппа") + .ВТаблицуЗначений(); +``` + +# Операция приведения типов + +```bsl +ОписаниеТипа = Новый ОписаниеТипов("Строка",, Новый КвалификаторыСтроки(1024)); +ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Документ.РеализацияТоваровУслуг") + .Выразить("Комментарий", ОписаниеТипа, "СтрокаКомментария") + .ВТаблицуЗначений(); +``` diff --git a/docs/docs/lib-features/group.md b/docs/docs/lib-features/group.md index 60fd98e..ebf992b 100644 --- a/docs/docs/lib-features/group.md +++ b/docs/docs/lib-features/group.md @@ -1,19 +1,47 @@ --- -sidebar_position: 1 +sidebar_position: 2 tags: [Функционал] --- # Группировка (СГРУППИРОВАТЬ ПО) ```bsl -ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура") +ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") .Выбрать("Ссылка, ЭтоГруппа") .Сгруппировать("ЭтоГруппа, Ссылка") .ВТаблицуЗначений(); ``` -:::info +## Агрегатные функции -Остальной функционал группировок и агрегатных функций находится в процессе разработке +```bsl +ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") + .Выбрать("ЭтоГруппа") + .Количество("Ссылка КАК КоличествоСсылок") + .Сгруппировать("ЭтоГруппа") + .ВТаблицуЗначений(); +``` -::: +Так же можно агрегатные функции задавать строкой + +```bsl +ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") + .Выбрать("КОЛИЧЕСТВО(Номенклатура.Ссылка) КАК КоличествоСсылок, ЭтоГруппа") + .Сгруппировать("ЭтоГруппа") + .ВТаблицуЗначений(); +``` + +Так же агрегатные функции принимают на вход структуру описывающую поле: + +```bsl +ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") + .Количество(СхЗапрос.НовоеПоле("Ссылка",, "КоличествоСсылок")) + .Сгруппировать("ЭтоГруппа") + .ВТаблицуЗначений(); +``` + +На данный момент реализованы следующие функции: +* Количество +* Сумма +* Минимум +* Максимум \ No newline at end of file diff --git a/docs/docs/lib-features/join.md b/docs/docs/lib-features/join.md index 3083a91..990f43a 100644 --- a/docs/docs/lib-features/join.md +++ b/docs/docs/lib-features/join.md @@ -1,5 +1,5 @@ --- -sidebar_position: 0 +sidebar_position: 1 tags: [Функционал] --- @@ -10,27 +10,27 @@ tags: [Функционал] ### Источник данных строкой ```bsl -ПредикатДляСоединения = СЗ_Запрос.Предикат() +ПредикатДляСоединения = СхЗапрос.Предикат() .Реквизит("НоменклатураСоединение.Ссылка").Равно("Номенклатура.Родитель") ; -ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура") +ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") .Выбрать("Номенклатура.Ссылка, |НоменклатураСоединение.Ссылка КАК НоменклатураСоединениеСсылка") .ЛевоеСоединение("Справочник.Номенклатура КАК НоменклатураСоединение", ПредикатДляСоединения) .ВТаблицуЗначений(); ``` -### Источник данных вложенным запросом +### Источник соединения вложенным запросом ```bsl -ЗапросДляСоединения = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура") +ЗапросДляСоединения = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") .Псевдоним("НоменклатураСоединение"); -ПредикатДляСоединения = СЗ_Запрос.Предикат() +ПредикатДляСоединения = СхЗапрос.Предикат() .Реквизит("Ссылка").Равно("Родитель"); -ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура") +ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") .Выбрать("Номенклатура.Ссылка, |НоменклатураСоединение.Ссылка КАК НоменклатураСоединениеСсылка") .ЛевоеСоединение(ЗапросДляСоединения, ПредикатДляСоединения) @@ -46,11 +46,11 @@ tags: [Функционал] ## Правое соединение ```bsl -ПредикатДляСоединения = СЗ_Запрос.Предикат() +ПредикатДляСоединения = СхЗапрос.Предикат() .Реквизит("НоменклатураСоединение.Ссылка").Равно("Номенклатура.Родитель") ; -ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура") +ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") .Выбрать("Номенклатура.Ссылка, |НоменклатураСоединение.Ссылка КАК НоменклатураСоединениеСсылка") .ПравоеСоединение("Справочник.Номенклатура КАК НоменклатураСоединение", ПредикатДляСоединения) @@ -60,11 +60,11 @@ tags: [Функционал] ## Внутреннее соединение ```bsl -ПредикатДляСоединения = СЗ_Запрос.Предикат() +ПредикатДляСоединения = СхЗапрос.Предикат() .Реквизит("НоменклатураСоединение.Ссылка").Равно("Номенклатура.Родитель") ; -ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура") +ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") .Выбрать("Номенклатура.Ссылка, |НоменклатураСоединение.Ссылка КАК НоменклатураСоединениеСсылка") .ВнутреннееСоединение("Справочник.Номенклатура КАК НоменклатураСоединение", ПредикатДляСоединения) diff --git a/docs/docs/lib-features/nested.md b/docs/docs/lib-features/nested.md new file mode 100644 index 0000000..1dcbab4 --- /dev/null +++ b/docs/docs/lib-features/nested.md @@ -0,0 +1,20 @@ +--- +sidebar_position: 5 +tags: [Функционал] +--- + +# Вложенные запросы + +:::tip + +Для вложенных запросов обязательно использование функции `Псевдоним` + +::: + +```bsl +ВложенныйЗапрос = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") + .Псевдоним("ВложенныйЗапрос"); + +ТаблицаЗначений = СхЗапрос.НовыйЗапрос(ВложенныйЗапрос) + .ВТаблицуЗначений(); +``` diff --git a/docs/docs/lib-features/sort.md b/docs/docs/lib-features/sort.md index 3fff13a..423c5cd 100644 --- a/docs/docs/lib-features/sort.md +++ b/docs/docs/lib-features/sort.md @@ -1,5 +1,5 @@ --- -sidebar_position: 2 +sidebar_position: 3 tags: [Функционал] --- @@ -8,7 +8,7 @@ tags: [Функционал] ## Общий вариант ```bsl -ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура") +ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") .Выбрать("Ссылка, ЭтоГруппа") .Упорядочить("ЭтоГруппа, Наименование") .ВТаблицуЗначений(); @@ -17,7 +17,7 @@ tags: [Функционал] ## С указанием направления ```bsl -ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура") +ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") .Выбрать("Ссылка, ЭтоГруппа") .Упорядочить("ЭтоГруппа УБЫВ, Наименование") .ВТаблицуЗначений(); diff --git a/docs/docs/lib-features/totals.md b/docs/docs/lib-features/totals.md index b4c1393..23e16c6 100644 --- a/docs/docs/lib-features/totals.md +++ b/docs/docs/lib-features/totals.md @@ -1,12 +1,12 @@ --- -sidebar_position: 2 +sidebar_position: 4 tags: [Функционал] --- # Итоги (ИТОГИ ПО) ```bsl -ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура") +ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") .Итоги("ЭтоГруппа") .ВТаблицуЗначений(); ``` diff --git a/docs/docs/lib-features/union.md b/docs/docs/lib-features/union.md new file mode 100644 index 0000000..b6e68ac --- /dev/null +++ b/docs/docs/lib-features/union.md @@ -0,0 +1,12 @@ +--- +sidebar_position: 6 +tags: [Функционал] +--- + +# Объединение запросов + +```bsl +ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Документ.ПриобретениеТоваровУслуг") + .ОбъединитьВсе("Документ.РеализацияТоваровУслуг") + .ВТаблицуЗначений(); +``` diff --git a/docs/src/pages/index.md b/docs/src/pages/index.md index a9083d1..df04c18 100644 --- a/docs/src/pages/index.md +++ b/docs/src/pages/index.md @@ -5,9 +5,19 @@ slug: / # 1С Предприятие. Fluent запросы +## Отказ от повторения функционала + +:::warning + +Данная библиотека не ставит перед собой цель полностью повторить функционал механизма запросов в 1С Предприятии. Я, как разработчик, даже считаю подобную цель вредной и едва ли достижимой. Ни одна библиотека никогда не сможет повторить полный синтаксис языка запросов так чтобы это было удобно для использования. В противном случае это будет уже не библиотека, а новый язык запросов. + +::: + +## Описание + Библиотека позволяет писать запросы 1С Предприятия в функциональном стиле. Например, вот такой код: ```bsl -ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура").ВТаблицуЗначений(); +ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура").ВТаблицуЗначений(); ``` будет аналогичен: ```bsl diff --git a/src/cfe/CommonModules/СЗ_ПроцессорыПредикатовСлужебныйКлиентСервер/Ext/Module.bsl b/src/cfe/CommonModules/СЗ_ПроцессорыПредикатовСлужебныйКлиентСервер/Ext/Module.bsl deleted file mode 100644 index 4fcfdc1..0000000 --- a/src/cfe/CommonModules/СЗ_ПроцессорыПредикатовСлужебныйКлиентСервер/Ext/Module.bsl +++ /dev/null @@ -1,42 +0,0 @@ - -#Область ПрограммныйИнтерфейс - -// Устанавливает имя реквизита, все последующие условия будут относится к нему -// -// Параметры: -// Предикат - -// ИмяРеквизита - Строка - имя реквизита -// -Процедура УстановитьИмяРеквизита(Предикат, ИмяРеквизита) Экспорт - - Если Предикат = Неопределено Тогда - Предикат = Новый Структура("ИмяРеквизита, Условия", - "", Новый Массив); - КонецЕсли; - - Предикат.ИмяРеквизита = ИмяРеквизита; - -КонецПроцедуры - -// Устанавливает вид и значение сравнения для условия -// -// Параметры: -// Предикат - ОбработкаОбъект.СЗ_ПроцессорПредикатов - -// - ФормаКлиентскогоПриложения - -// ВидСравнения - Строка - -// Значение - Производьный - -// -Процедура УстановитьПредикат(Предикат, ВидСравнения, Значение) Экспорт - - Если Предикат = Неопределено Или ПустаяСтрока(Предикат.ИмяРеквизита) Тогда - ВызватьИсключение "Ошибочный порядок вызова функций формирования предиката"; - КонецЕсли; - - Условие = Новый Структура("ИмяРеквизита, ВидСравнения, Значение", - Предикат.ИмяРеквизита, ВидСравнения, Значение); - - Предикат.Условия.Добавить(Условие); - -КонецПроцедуры - -#КонецОбласти diff --git a/src/cfe/CommonModules/СЗ_Запрос.xml b/src/cfe/CommonModules/СхЗапрос.xml similarity index 96% rename from src/cfe/CommonModules/СЗ_Запрос.xml rename to src/cfe/CommonModules/СхЗапрос.xml index 9658e77..73fd49c 100644 --- a/src/cfe/CommonModules/СЗ_Запрос.xml +++ b/src/cfe/CommonModules/СхЗапрос.xml @@ -2,7 +2,7 @@ - СЗ_Запрос + СхЗапрос ru diff --git a/src/cfe/CommonModules/СЗ_Запрос/Ext/Module.bsl b/src/cfe/CommonModules/СхЗапрос/Ext/Module.bsl similarity index 75% rename from src/cfe/CommonModules/СЗ_Запрос/Ext/Module.bsl rename to src/cfe/CommonModules/СхЗапрос/Ext/Module.bsl index c958fe9..ac86f9a 100644 --- a/src/cfe/CommonModules/СЗ_Запрос/Ext/Module.bsl +++ b/src/cfe/CommonModules/СхЗапрос/Ext/Module.bsl @@ -10,12 +10,12 @@ // Разрешенные - Булево - признак ограничения выборки с применением RLS // // Возвращаемое значение: -// - ОбработкаОбъект.СЗ_ПроцессорСхемЗапроса - менеджер для серверного формирования запроса +// - ОбработкаОбъект.СхПроцессорСхемЗапроса - менеджер для серверного формирования запроса // - ФормаКлиентскогоПриложения - менеджер для клиентского формирования запроса // Функция НовыйЗапрос(ИсточникДанных, Первые = 0, Различные = Ложь, Разрешенные = Ложь) Экспорт - ПроцессорСхемЗапроса = СЗ_ПроцессорыСхемЗапросаКлиентСервер + ПроцессорСхемЗапроса = СхПроцессорыСхемЗапросаКлиентСервер .НовыйПроцессорСхемЗапроса(ИсточникДанных, Первые, Различные, Разрешенные); Возврат ПроцессорСхемЗапроса; @@ -25,12 +25,12 @@ // Создает структуру нового предиката // // Возвращаемое значение: -// - ОбработкаОбъект.СЗ_ПроцессорСхемЗапроса - менеджер для серверного формирования предиката +// - ОбработкаОбъект.СхПроцессорСхемЗапроса - менеджер для серверного формирования предиката // - ФормаКлиентскогоПриложения - менеджер для клиентского формирования предиката // Функция Предикат() Экспорт - ПроцессорПредикатов = СЗ_ПроцессорыПредикатовКлиентСервер + ПроцессорПредикатов = СхПроцессорыПредикатовКлиентСервер .НовыйПроцессорПредикатов(); Возврат ПроцессорПредикатов; @@ -49,7 +49,7 @@ // Функция НовоеПоле(ИмяПоля, Источник, Псевдоним) Экспорт - // TODO: В модуле СЗ_ПроцессорыСхемЗапросаКлиентСерверСлужебный так же регулярно требуетс + // TODO: В модуле СхПроцессорыСхемЗапросаКлиентСерверСлужебный так же регулярно требуетс // такая структура. Рефакторинг! Возврат Новый Структура("ИмяПоля, Источник, Псевдоним", diff --git a/src/cfe/CommonModules/СЗ_ЗапросТест.xml b/src/cfe/CommonModules/СхЗапросТест.xml similarity index 96% rename from src/cfe/CommonModules/СЗ_ЗапросТест.xml rename to src/cfe/CommonModules/СхЗапросТест.xml index f2dd27a..ce44bb1 100644 --- a/src/cfe/CommonModules/СЗ_ЗапросТест.xml +++ b/src/cfe/CommonModules/СхЗапросТест.xml @@ -2,7 +2,7 @@ - СЗ_ЗапросТест + СхЗапросТест ru diff --git a/src/cfe/CommonModules/СЗ_ЗапросТест/Ext/Module.bsl b/src/cfe/CommonModules/СхЗапросТест/Ext/Module.bsl similarity index 64% rename from src/cfe/CommonModules/СЗ_ЗапросТест/Ext/Module.bsl rename to src/cfe/CommonModules/СхЗапросТест/Ext/Module.bsl index 8b2c774..54681eb 100644 --- a/src/cfe/CommonModules/СЗ_ЗапросТест/Ext/Module.bsl +++ b/src/cfe/CommonModules/СхЗапросТест/Ext/Module.bsl @@ -13,12 +13,19 @@ .ДобавитьТест("Разрешенные") .ДобавитьТестовыйНабор("СЗ: Поля") .ДобавитьТест("ИсключениеПолеОтсутствует") + .ДобавитьТест("ИсключениеПолеОтсутствуетСУказаниемИсточника") .ДобавитьТест("ДобавитьПоляССинонимами") .ДобавитьТест("ДобавитьНесколькоПолей") .ДобавитьТест("ДобавитьНесколькоПолейСПереносомСтроки") .ДобавитьТест("ДобавитьПоляССинонимамиИСписком") .ДобавитьТест("ВсеПоляДляНеСсылочногоТипа") .ДобавитьТест("ВсеПоляДляСсылочногоТипа") + .ДобавитьТест("ДобавиьПолеВыборКогдаСтрокой1") + .ДобавитьТест("ДобавиьПолеВыборКогдаСтрокой2") + .ДобавитьТест("ДобавиьПолеВыборКогдаФункциейЧисла") + .ДобавитьТест("ДобавиьПолеВыборКогдаФункциейСтроки") + .ДобавитьТест("ДобавиьПолеВыразитьФункциейПсевдоним1") + .ДобавитьТест("ДобавиьПолеВыразитьФункциейПсевдоним2") .ДобавитьТестовыйНабор("СЗ: Условия") .ДобавитьТест("ЗапросСУсловиемРавно") .ДобавитьТест("ЗапросСУсловиемНеРавно") @@ -29,6 +36,9 @@ .Перед("Перед_ЗапросСУсловиемВСписке") .ДобавитьТест("ЗапросСУсловиемНеВСписке") .Перед("Перед_ЗапросСУсловиемНеВСписке") + .ДобавитьТест("ЗапросСУсловиемИВыборКогдаВПолях") + .ДобавитьТест("ИсключениеУсловиеНаПолеБесконечнойДлиныБезВыразить") + .ДобавитьТест("УсловиеНаПолеБесконечнойДлиныСВыразить") .ДобавитьТестовыйНабор("СЗ: Соединения") .ДобавитьТест("СоединениеПоИсточникуСтроке") .СПараметрами("Левое") @@ -52,6 +62,14 @@ .ДобавитьТест("ОбъединитьВсеСПолями") .ДобавитьТест("ОбъединитьВсеСРазнымКоличествомПолей") .ДобавитьТест("ОбъединитьВсеСВложеннымЗапросом") + .ДобавитьТестовыйНабор("СЗ: Группировать") + .ДобавитьТест("Группировать") + .ДобавитьТест("ГруппироватьКоличествоСтрокой") + .ДобавитьТест("ГруппироватьКоличествоФункциейПолеСтрокой") + .ДобавитьТест("ГруппироватьКоличествоФункциейПолеСтруктурой") + .ДобавитьТест("ГруппироватьСуммаФункциейПолеСтрокой") + .ДобавитьТест("ГруппироватьМинимумФункциейПолеСтрокой") + .ДобавитьТест("ГруппироватьМаксимумФункциейПолеСтрокой") .ДобавитьТестовыйНабор("СЗ: Прочее") .ДобавитьТест("Порядок") .ДобавитьТест("ПорядокУбывания") @@ -121,7 +139,7 @@ Процедура ИсключениеИсточникОтсутствует() Экспорт - Обработка = Обработки.СЗ_ПроцессорСхемЗапроса.Создать(); + Обработка = Обработки.СхПроцессорСхемЗапроса.Создать(); ЮТест.ОжидаетЧто(Обработка) .Метод("ВТаблицуЗначений") @@ -131,7 +149,7 @@ Процедура ИсключениеИсточникПустаяСтрока() Экспорт - Запрос = СЗ_Запрос.НовыйЗапрос(""); + Запрос = СхЗапрос.НовыйЗапрос(""); ЮТест.ОжидаетЧто(Запрос) .Метод("ВТаблицуЗначений") @@ -141,7 +159,7 @@ Процедура ЗапросВТаблицуЗначений() Экспорт - ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура") + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") .ВТаблицуЗначений() ; @@ -156,7 +174,7 @@ Процедура ЗапросВМассив() Экспорт - Массив = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура") + Массив = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") .ВМассив("Ссылка") ; @@ -171,7 +189,7 @@ Процедура Первые() Экспорт - ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура", 10) + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура", 10) .ВТаблицуЗначений() ; @@ -183,7 +201,7 @@ Процедура Различные() Экспорт - ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура",, Истина) + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура",, Истина) .ВТаблицуЗначений() ; @@ -198,7 +216,7 @@ Процедура Разрешенные() Экспорт - ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура",,, Истина) + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура",,, Истина) .ВТаблицуЗначений() ; @@ -215,28 +233,42 @@ #Область Поля -// TODO: Поля могут быть выражениями - Процедура ИсключениеПолеОтсутствует() Экспорт НеправильноеНаименованиеПоля = "йцукен"; - Запрос = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура") + Запрос = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") .Выбрать(НеправильноеНаименованиеПоля) ; ЮТест.ОжидаетЧто(Запрос) .Метод("ВТаблицуЗначений") .ВыбрасываетИсключение( - СтрШаблон("Поле %1 в источнике не определено", НеправильноеНаименованиеПоля)); + СтрШаблон("{(1, 1)}: Поле не найдено ""%1"" +|<>%1", НеправильноеНаименованиеПоля)); + +КонецПроцедуры + +Процедура ИсключениеПолеОтсутствуетСУказаниемИсточника() Экспорт + + НеправильноеНаименованиеПоля = "йцукен"; + + Запрос = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") + .Выбрать("Номенклатура." + НеправильноеНаименованиеПоля) + ; + + ЮТест.ОжидаетЧто(Запрос) + .Метод("ВТаблицуЗначений") + .ВыбрасываетИсключение( + СтрШаблон("ДобавитьПоля: поле %1 в источнике не определено", НеправильноеНаименованиеПоля)); КонецПроцедуры Процедура ДобавитьПоляССинонимами() Экспорт - ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура") - .Выбрать(СЗ_Запрос.НовоеПоле("Ссылка",, "СсылкаНоменклатуры")) - .Выбрать(СЗ_Запрос.НовоеПоле("Наименование",, "НаименованиеНоменклатуры")) + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") + .Выбрать(СхЗапрос.НовоеПоле("Ссылка",, "СсылкаНоменклатуры")) + .Выбрать(СхЗапрос.НовоеПоле("Наименование",, "НаименованиеНоменклатуры")) .ВТаблицуЗначений() ; @@ -255,7 +287,7 @@ Процедура ДобавитьНесколькоПолей() Экспорт - ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура") + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") .Выбрать("Ссылка, Наименование, ЭтоГруппа") .ВТаблицуЗначений() ; @@ -276,7 +308,7 @@ Процедура ДобавитьНесколькоПолейСПереносомСтроки() Экспорт - ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура") + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") .Выбрать("Ссылка, Наименование, |ЭтоГруппа") .ВТаблицуЗначений() @@ -298,8 +330,8 @@ Процедура ДобавитьПоляССинонимамиИСписком() Экспорт - ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура") - .Выбрать(СЗ_Запрос.НовоеПоле("Ссылка",, "СсылкаНоменклатуры")) + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") + .Выбрать(СхЗапрос.НовоеПоле("Ссылка",, "СсылкаНоменклатуры")) .Выбрать("Наименование КАК НаименованиеНоменклатуры, ЭтоГруппа") .ВТаблицуЗначений() ; @@ -320,7 +352,7 @@ Процедура ВсеПоляДляНеСсылочногоТипа() Экспорт - ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("РегистрСведений.КурсыВалют") + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("РегистрСведений.КурсыВалют") .ВТаблицуЗначений() ; @@ -340,7 +372,7 @@ Процедура ВсеПоляДляСсылочногоТипа() Экспорт - ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура") + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") .ВыбратьВсе() .ВТаблицуЗначений() ; @@ -359,17 +391,113 @@ КонецПроцедуры +Процедура ДобавиьПолеВыборКогдаСтрокой1() Экспорт + + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") + .Выбрать("ВЫБОР КОГДА Номенклатура.ЭтоГруппа = ИСТИНА ТОГДА 1 ИНАЧЕ 0 КОНЕЦ КАК ЭтоГруппа") + .ВТаблицуЗначений() + ; + + ЮТест.ОжидаетЧто(ТаблицаЗначений) + .ИмеетТип("ТаблицаЗначений") + .ИмеетДлинуБольше(0) + ; + +КонецПроцедуры + +Процедура ДобавиьПолеВыборКогдаСтрокой2() Экспорт + + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") + .Выбрать("ВЫБОР + | КОГДА Номенклатура.ЭтоГруппа = ИСТИНА + | ТОГДА 1 + | ИНАЧЕ 0 + |КОНЕЦ КАК ЭтоГруппа") + .ВТаблицуЗначений() + ; + + ЮТест.ОжидаетЧто(ТаблицаЗначений) + .ИмеетТип("ТаблицаЗначений") + .ИмеетДлинуБольше(0) + ; + +КонецПроцедуры + +Процедура ДобавиьПолеВыборКогдаФункциейЧисла() Экспорт + + Предикат = СхЗапрос.Предикат().Реквизит("ЭтоГруппа").Равно(Истина); + + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") + .ВыборКогда(Предикат, 1, 0, "ЭтоГруппа") + .ВТаблицуЗначений() + ; + + ЮТест.ОжидаетЧто(ТаблицаЗначений) + .ИмеетТип("ТаблицаЗначений") + .ИмеетДлинуБольше(0) + .КаждыйЭлементСоответствуетПредикату(ЮТест.Предикат() + .Реквизит("ЭтоГруппа") + .ИмеетТип("Число") + .МеждуВключаяГраницы(0, 1)) + ; + +КонецПроцедуры + +Процедура ДобавиьПолеВыборКогдаФункциейСтроки() Экспорт + + Предикат = СхЗапрос.Предикат().Реквизит("ЭтоГруппа").Равно(Истина); + + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") + .ВыборКогда(Предикат, "Это группа", "Это элемент", "ЭтоГруппа") + .ВТаблицуЗначений() + ; + + ЮТест.ОжидаетЧто(ТаблицаЗначений) + .ИмеетТип("ТаблицаЗначений") + .ИмеетДлинуБольше(0) + .ЛюбойЭлементСоответствуетПредикату(ЮТест.Предикат() + .Реквизит("ЭтоГруппа") + .ИмеетТип("Строка") + .Равно("Это группа")) + .ЛюбойЭлементСоответствуетПредикату(ЮТест.Предикат() + .Реквизит("ЭтоГруппа") + .ИмеетТип("Строка") + .Равно("Это элемент")) + ; + +КонецПроцедуры + +Процедура ДобавиьПолеВыразитьФункциейПсевдоним1() Экспорт + + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Документ.РеализацияТоваровУслуг") + .Выразить("Комментарий КАК СтрокаКомментария", + Новый ОписаниеТипов("Строка",, Новый КвалификаторыСтроки(1024))) + .ВТаблицуЗначений() + ; + +КонецПроцедуры + +Процедура ДобавиьПолеВыразитьФункциейПсевдоним2() Экспорт + + ОписаниеТипа = Новый ОписаниеТипов("Строка",, Новый КвалификаторыСтроки(1024)); + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Документ.РеализацияТоваровУслуг") + .Выразить("Комментарий", ОписаниеТипа, "СтрокаКомментария") + .ВТаблицуЗначений() + ; + +КонецПроцедуры + #КонецОбласти #Область Условия Процедура ЗапросСУсловиемРавно() Экспорт - Предикат = СЗ_Запрос.Предикат() + Предикат = СхЗапрос.Предикат() .Реквизит("ЭтоГруппа").Равно(Ложь) ; - ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура") + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") .Выбрать("Ссылка, ЭтоГруппа") .Где(Предикат) .ВТаблицуЗначений() @@ -386,11 +514,11 @@ Процедура ЗапросСУсловиемНеРавно() Экспорт - Предикат = СЗ_Запрос.Предикат() + Предикат = СхЗапрос.Предикат() .Реквизит("ЭтоГруппа").НеРавно(Ложь) ; - ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура") + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") .Выбрать("Ссылка, ЭтоГруппа") .Где(Предикат) .ВТаблицуЗначений() @@ -407,11 +535,11 @@ Процедура ЗапросСУсловиемПодобно() Экспорт - Предикат = СЗ_Запрос.Предикат() + Предикат = СхЗапрос.Предикат() .Реквизит("Наименование").Подобно("Хлеб") ; - ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура") + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") .Выбрать("Ссылка, Наименование") .Где(Предикат) .ВТаблицуЗначений() @@ -428,11 +556,11 @@ Процедура ЗапросСУсловиемНеПодобно() Экспорт - Предикат = СЗ_Запрос.Предикат() + Предикат = СхЗапрос.Предикат() .Реквизит("Наименование").НеПодобно("Хлеб") ; - ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура") + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") .Выбрать("Ссылка, Наименование") .Где(Предикат) .ВТаблицуЗначений() @@ -451,11 +579,11 @@ ДатаНачала = Дата("20230601000000"); ДатаОкончания = Дата("20230630235959"); - Предикат = СЗ_Запрос.Предикат() + Предикат = СхЗапрос.Предикат() .Реквизит("Дата").Между(ДатаНачала, ДатаОкончания) ; - ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Документ.ЗаказКлиента") + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Документ.ЗаказКлиента") .Выбрать("Ссылка, Дата") .Где(Предикат) .ВТаблицуЗначений() @@ -474,11 +602,11 @@ Контекст = ЮТест.КонтекстТеста(); - Предикат = СЗ_Запрос.Предикат() + Предикат = СхЗапрос.Предикат() .Реквизит("Ссылка").ВСписке(Контекст.МассивНоменклатуры) ; - ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура") + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") .Где(Предикат) .ВТаблицуЗначений() ; @@ -496,11 +624,11 @@ Контекст = ЮТест.КонтекстТеста(); - Предикат = СЗ_Запрос.Предикат() - .Реквизит("Ссылка").НеВСписке(Контекст.МассивНоменклатуры) + Предикат = СхЗапрос.Предикат() + .Реквизит("Ссылка").НеВСписке(Контекст.МассивНоменклатурыНеВСписке) ; - ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура") + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") .Где(Предикат) .ВТаблицуЗначений() ; @@ -509,22 +637,73 @@ .ИмеетТип("ТаблицаЗначений") .ИмеетДлинуБольше(0) .КаждыйЭлементСоответствуетПредикату(ЮТест.Предикат() - .Реквизит("Ссылка").ВСписке(Контекст.МассивНоменклатурыНеВСписке)) + .Реквизит("Ссылка").ВСписке(Контекст.МассивНоменклатуры)) ; КонецПроцедуры +// Проверяет сквозную нумерацию параметров +// +Процедура ЗапросСУсловиемИВыборКогдаВПолях() Экспорт + + Предикат = СхЗапрос.Предикат().Реквизит("ЭтоГруппа").Равно(Истина); + + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") + .ВыборКогда(Предикат, 1, 0, "ЭтоГруппа") + .Где(СхЗапрос.Предикат() + .Реквизит("ЭтоГруппа").Равно(Ложь)) + .ВТаблицуЗначений() + ; + + ЮТест.ОжидаетЧто(ТаблицаЗначений) + .ИмеетТип("ТаблицаЗначений") + .ИмеетДлинуБольше(0) + .КаждыйЭлементСоответствуетПредикату(ЮТест.Предикат() + .Реквизит("ЭтоГруппа") + .ИмеетТип("Число") + .Равно(0)) + ; + +КонецПроцедуры + +Процедура ИсключениеУсловиеНаПолеБесконечнойДлиныБезВыразить() Экспорт + + Предикат = СхЗапрос.Предикат().Реквизит("Комментарий").Равно(""); + + Запрос = СхЗапрос.НовыйЗапрос("Документ.РеализацияТоваровУслуг") + .Где(Предикат) + ; + + ЮТест.ОжидаетЧто(Запрос) + .Метод("ВТаблицуЗначений") + .ВыбрасываетИсключение("{(6, 37)}: Неверные параметры в операции сравнения. Нельзя сравнивать поля + | неограниченной длины и поля несовместимых типов. + |РеализацияТоваровУслуг.Комментарий <>= &Параметр_0"); + +КонецПроцедуры + +Процедура УсловиеНаПолеБесконечнойДлиныСВыразить() Экспорт + + ОписаниеТипа = Новый ОписаниеТипов("Строка",, Новый КвалификаторыСтроки(1024)); + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Документ.РеализацияТоваровУслуг") + .Где(СхЗапрос.Предикат() + .РеквизитВыразить("Комментарий", ОписаниеТипа).Равно("")) + .ВТаблицуЗначений() + ; + +КонецПроцедуры + #КонецОбласти #Область Соединения Процедура СоединениеПоИсточникуСтроке(ТипСоединения) Экспорт - ПредикатДляСоединения = СЗ_Запрос.Предикат() + ПредикатДляСоединения = СхЗапрос.Предикат() .Реквизит("НоменклатураСоединение.Ссылка").Равно("Номенклатура.Родитель") ; - Запрос = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура") + Запрос = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") .Выбрать("Номенклатура.Ссылка, |НоменклатураСоединение.Ссылка КАК НоменклатураСоединениеСсылка") ; @@ -559,14 +738,14 @@ Процедура ЛевоеСоединениеПоИсточникуЗапросу() Экспорт - ЗапросДляСоединения = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура") + ЗапросДляСоединения = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") .Псевдоним("НоменклатураСоединение") ; - ПредикатДляСоединения = СЗ_Запрос.Предикат() + ПредикатДляСоединения = СхЗапрос.Предикат() .Реквизит("Ссылка").Равно("Родитель") ; - ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура") + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") .Выбрать("Номенклатура.Ссылка, |НоменклатураСоединение.Ссылка КАК НоменклатураСоединениеСсылка") .ЛевоеСоединение(ЗапросДляСоединения, ПредикатДляСоединения) @@ -588,23 +767,23 @@ Процедура ЛевоеСоединениеСГлубокоВложеннымЗапросом() Экспорт - ВложенныйЗапрос = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура") + ВложенныйЗапрос = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") .Выбрать("Ссылка, Родитель") .Псевдоним("ВложенныйЗапрос_0") ; Для Сч = 1 По 9 Цикл - ВложенныйЗапрос = СЗ_Запрос.НовыйЗапрос(ВложенныйЗапрос) + ВложенныйЗапрос = СхЗапрос.НовыйЗапрос(ВложенныйЗапрос) .Выбрать("Ссылка, Родитель") .Псевдоним("ВложенныйЗапрос_" + Сч) ; КонецЦикла; - ПредикатДляСоединения = СЗ_Запрос.Предикат() + ПредикатДляСоединения = СхЗапрос.Предикат() .Реквизит("Ссылка").Равно("Родитель") ; - ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура") + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") .Выбрать("Номенклатура.Ссылка, |ВложенныйЗапрос_9.Ссылка КАК ВложенныйЗапрос_9Ссылка") .ЛевоеСоединение(ВложенныйЗапрос, ПредикатДляСоединения) @@ -624,7 +803,7 @@ Процедура ЛевоеСоединениеБезПредиката() Экспорт - ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("РегистрСведений.ПримененияЕНВД") + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("РегистрСведений.ПримененияЕНВД") .Выбрать("ПримененияЕНВД.Организация КАК Организация, |ПримененияЕНВДСоединение.Склад КАК Склад") .ЛевоеСоединение("РегистрСведений.ПримененияЕНВД КАК ПримененияЕНВДСоединение") @@ -646,10 +825,10 @@ Процедура ЛевоеСоединениеНесколькоУсловийВПредикате() Экспорт - ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура") + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") .Выбрать("Номенклатура.Ссылка, |НоменклатураСоединение.Ссылка КАК НоменклатураСоединениеСсылка") - .ЛевоеСоединение("Справочник.Номенклатура КАК НоменклатураСоединение", СЗ_Запрос.Предикат() + .ЛевоеСоединение("Справочник.Номенклатура КАК НоменклатураСоединение", СхЗапрос.Предикат() .Реквизит("НоменклатураСоединение.Ссылка").Равно("Номенклатура.Родитель") .Реквизит("НоменклатураСоединение.ЭтоГруппа").Равно("ИСТИНА")) .ВТаблицуЗначений() @@ -687,10 +866,10 @@ "Родитель", Выборка.Ссылка)); // Выполнение - ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура") + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") .Выбрать("Номенклатура.Ссылка, |НоменклатураСоединение.Ссылка КАК НоменклатураСоединениеСсылка") - .ЛевоеСоединение("Справочник.Номенклатура КАК НоменклатураСоединение", СЗ_Запрос.Предикат() + .ЛевоеСоединение("Справочник.Номенклатура КАК НоменклатураСоединение", СхЗапрос.Предикат() .Реквизит("НоменклатураСоединение.Родитель").Равно("&Родитель")) .Параметры(МассивПараметров) .ВТаблицуЗначений() @@ -712,9 +891,9 @@ Процедура ЛевоеСоединениеБезПсевдонимовВСоединении() Экспорт - ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура") + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") .Выбрать("Номенклатура.Ссылка, Номенклатура1.Ссылка") - .ЛевоеСоединение("Справочник.Номенклатура", СЗ_Запрос.Предикат() + .ЛевоеСоединение("Справочник.Номенклатура", СхЗапрос.Предикат() .Реквизит("Ссылка").Равно("Родитель") .Реквизит("ЭтоГруппа").Равно("ИСТИНА")) .ВТаблицуЗначений() @@ -735,12 +914,12 @@ Процедура НесколькоЛевыхСоединений() Экспорт - ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура") + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") .Выбрать("Номенклатура.Ссылка, Номенклатура1.Ссылка, Номенклатура2.Ссылка") - .ЛевоеСоединение("Справочник.Номенклатура", СЗ_Запрос.Предикат() + .ЛевоеСоединение("Справочник.Номенклатура", СхЗапрос.Предикат() .Реквизит("Ссылка").Равно("Родитель") .Реквизит("ЭтоГруппа").Равно("ИСТИНА")) - .ЛевоеСоединение("Справочник.Номенклатура", СЗ_Запрос.Предикат() + .ЛевоеСоединение("Справочник.Номенклатура", СхЗапрос.Предикат() .Реквизит("Ссылка").Равно("Родитель") .Реквизит("ЭтоГруппа").Равно("ИСТИНА")) .ВТаблицуЗначений() @@ -766,9 +945,9 @@ Процедура ИсключениеВложенныйЗапросБезПсевдонима() Экспорт - ВложенныйЗапрос = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура"); + ВложенныйЗапрос = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура"); - Запрос = СЗ_Запрос.НовыйЗапрос(ВложенныйЗапрос); + Запрос = СхЗапрос.НовыйЗапрос(ВложенныйЗапрос); ЮТест.ОжидаетЧто(Запрос) .Метод("ВТаблицуЗначений") @@ -778,11 +957,11 @@ Процедура ВложенныйЗапрос() Экспорт - ВложенныйЗапрос = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура") + ВложенныйЗапрос = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") .Псевдоним("ВложенныйЗапрос") ; - ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос(ВложенныйЗапрос) + ТаблицаЗначений = СхЗапрос.НовыйЗапрос(ВложенныйЗапрос) .ВТаблицуЗначений() ; @@ -795,17 +974,17 @@ Процедура ОченьГлубокоВложенныйЗапрос() Экспорт - ВложенныйЗапрос = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура") + ВложенныйЗапрос = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") .Псевдоним("ВложенныйЗапрос_0") ; Для Сч = 1 По 9 Цикл - ВложенныйЗапрос = СЗ_Запрос.НовыйЗапрос(ВложенныйЗапрос) + ВложенныйЗапрос = СхЗапрос.НовыйЗапрос(ВложенныйЗапрос) .Псевдоним("ВложенныйЗапрос_" + Сч) ; КонецЦикла; - ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос(ВложенныйЗапрос) + ТаблицаЗначений = СхЗапрос.НовыйЗапрос(ВложенныйЗапрос) .ВТаблицуЗначений() ; @@ -822,7 +1001,7 @@ Процедура Объединить() Экспорт - ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Документ.ПриобретениеТоваровУслуг") + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Документ.ПриобретениеТоваровУслуг") .Объединить("Документ.РеализацияТоваровУслуг") .ВТаблицуЗначений() ; @@ -840,7 +1019,7 @@ Процедура ОбъединитьВсе() Экспорт - ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Документ.ПриобретениеТоваровУслуг") + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Документ.ПриобретениеТоваровУслуг") .ОбъединитьВсе("Документ.РеализацияТоваровУслуг") .ВТаблицуЗначений() ; @@ -858,7 +1037,7 @@ Процедура ОбъединитьВсеНаЧетыреИсточника() Экспорт - ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Документ.ПриобретениеТоваровУслуг") + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Документ.ПриобретениеТоваровУслуг") .ОбъединитьВсе("Документ.РеализацияТоваровУслуг") .ОбъединитьВсе("Документ.ВозвратТоваровОтКлиента") .ОбъединитьВсе("Документ.ВозвратТоваровПоставщику") @@ -882,9 +1061,9 @@ Процедура ОбъединитьВсеСПолями() Экспорт - ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Документ.ПриобретениеТоваровУслуг") + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Документ.ПриобретениеТоваровУслуг") .Выбрать("Ссылка, Дата, Номер") - .ОбъединитьВсе(СЗ_Запрос.НовыйЗапрос("Документ.РеализацияТоваровУслуг") + .ОбъединитьВсе(СхЗапрос.НовыйЗапрос("Документ.РеализацияТоваровУслуг") .Выбрать("Ссылка, Дата, Номер")) .ВТаблицуЗначений() ; @@ -905,9 +1084,9 @@ Процедура ОбъединитьВсеСРазнымКоличествомПолей() Экспорт - ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Документ.ПриобретениеТоваровУслуг") + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Документ.ПриобретениеТоваровУслуг") .Выбрать("Ссылка, Дата, Номер") - .ОбъединитьВсе(СЗ_Запрос.НовыйЗапрос("Документ.РеализацияТоваровУслуг") + .ОбъединитьВсе(СхЗапрос.НовыйЗапрос("Документ.РеализацияТоваровУслуг") .Выбрать("Ссылка, Дата, Номер, Партнер")) .ВТаблицуЗначений() ; @@ -930,14 +1109,14 @@ Процедура ОбъединитьВсеСВложеннымЗапросом() Экспорт - ВложенныйЗапрос = СЗ_Запрос.НовыйЗапрос("Документ.РеализацияТоваровУслуг") + ВложенныйЗапрос = СхЗапрос.НовыйЗапрос("Документ.РеализацияТоваровУслуг") .Псевдоним("ВложенныйЗапрос") .Выбрать("Ссылка, Дата, Номер, Партнер") ; - ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Документ.ПриобретениеТоваровУслуг") + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Документ.ПриобретениеТоваровУслуг") .Выбрать("Ссылка, Дата, Номер") - .ОбъединитьВсе(СЗ_Запрос.НовыйЗапрос(ВложенныйЗапрос) + .ОбъединитьВсе(СхЗапрос.НовыйЗапрос(ВложенныйЗапрос) .Выбрать("Ссылка, Дата, Номер")) .ВТаблицуЗначений() ; @@ -958,12 +1137,129 @@ #КонецОбласти +#Область Группировать + +Процедура Группировать() Экспорт + + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") + .Выбрать("Ссылка, ЭтоГруппа") + .Сгруппировать("ЭтоГруппа") + .ВТаблицуЗначений() + ; + + ЮТест.ОжидаетЧто(ТаблицаЗначений) + .ИмеетТип("ТаблицаЗначений") + .ИмеетДлинуБольше(0) + ; + +КонецПроцедуры + +Процедура ГруппироватьКоличествоСтрокой() Экспорт + + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") + .Выбрать("КОЛИЧЕСТВО(Номенклатура.Ссылка) КАК КоличествоСсылок, ЭтоГруппа") + .Сгруппировать("ЭтоГруппа") + .ВТаблицуЗначений() + ; + + ЮТест.ОжидаетЧто(ТаблицаЗначений) + .ИмеетТип("ТаблицаЗначений") + .ИмеетДлинуБольше(0) + ; + +КонецПроцедуры + +Процедура ГруппироватьКоличествоФункциейПолеСтрокой() Экспорт + + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") + .Выбрать("ЭтоГруппа") + .Количество("Ссылка КАК КоличествоСсылок") + .Сгруппировать("ЭтоГруппа") + .ВТаблицуЗначений() + ; + + ЮТест.ОжидаетЧто(ТаблицаЗначений) + .ИмеетТип("ТаблицаЗначений") + .ИмеетДлину(2) + ; + +КонецПроцедуры + +Процедура ГруппироватьКоличествоФункциейПолеСтруктурой() Экспорт + + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") + .Количество(СхЗапрос.НовоеПоле("Ссылка",, "КоличествоСсылок")) + .Сгруппировать("ЭтоГруппа") + .ВТаблицуЗначений() + ; + + ЮТест.ОжидаетЧто(ТаблицаЗначений) + .ИмеетТип("ТаблицаЗначений") + .ИмеетДлину(2) + ; + +КонецПроцедуры + +Процедура ГруппироватьСуммаФункциейПолеСтрокой() Экспорт + + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Документ.РеализацияТоваровУслуг.Товары") + .Выбрать("Номенклатура") + .Сумма("Количество КАК КоличествоНоменклатуры") + .Сгруппировать("Номенклатура") + .ВТаблицуЗначений() + ; + + ЮТест.ОжидаетЧто(ТаблицаЗначений) + .ИмеетТип("ТаблицаЗначений") + .ИмеетДлинуБольше(0) + ; + +КонецПроцедуры + +Процедура ГруппироватьМинимумФункциейПолеСтрокой() Экспорт + + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Документ.РеализацияТоваровУслуг.Товары") + .Выбрать("Номенклатура") + .Минимум("Количество КАК МинимальноеКоличествоНоменклатуры") + .Сгруппировать("Номенклатура") + .ВТаблицуЗначений() + ; + + ЮТест.ОжидаетЧто(ТаблицаЗначений) + .ИмеетТип("ТаблицаЗначений") + .ИмеетДлинуБольше(0) + .КаждыйЭлементСоответствуетПредикату(ЮТест.Предикат() + .Реквизит("МинимальноеКоличествоНоменклатуры").Меньше(200)) + ; + +КонецПроцедуры + +Процедура ГруппироватьМаксимумФункциейПолеСтрокой() Экспорт + + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Документ.РеализацияТоваровУслуг.Товары") + .Выбрать("Номенклатура") + .Максимум("Количество КАК МаксимальноеКоличествоНоменклатуры") + .Сгруппировать("Номенклатура") + .ВТаблицуЗначений() + ; + + ЮТест.ОжидаетЧто(ТаблицаЗначений) + .ИмеетТип("ТаблицаЗначений") + .ИмеетДлинуБольше(0) + .КаждыйЭлементСоответствуетПредикату(ЮТест.Предикат() + .Реквизит("МаксимальноеКоличествоНоменклатуры").Больше(0)) + ; + +КонецПроцедуры + +#КонецОбласти + #Область Прочее Процедура Порядок() Экспорт // Выполнение - ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура") + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") .Выбрать("Ссылка, ЭтоГруппа") .Упорядочить("ЭтоГруппа, Наименование") .ВТаблицуЗначений() @@ -997,7 +1293,7 @@ Процедура ПорядокУбывания() Экспорт // Выполнение - ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура") + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") .Выбрать("Ссылка, ЭтоГруппа") .Упорядочить("ЭтоГруппа УБЫВ, Наименование") .ВТаблицуЗначений() @@ -1030,7 +1326,7 @@ Процедура Итоги() Экспорт - ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура") + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") .Итоги("ЭтоГруппа") .ВТаблицуЗначений() ; @@ -1055,14 +1351,14 @@ НаименованияАдресныхОбъектов.Добавить("Абонентский Ящик"); // Выполнение - Запрос = СЗ_Запрос.НовыйЗапрос("РегистрСведений.УровниСокращенийАдресныхСведений") + Запрос = СхЗапрос.НовыйЗапрос("РегистрСведений.УровниСокращенийАдресныхСведений") .Выбрать("Значение КАК Наименование, Сокращение") .Сгруппировать("Значение, Сокращение") .Упорядочить("Наименование"); Если ТипЗнч(НаименованияАдресныхОбъектов) = Тип("Массив") И НаименованияАдресныхОбъектов.Количество() > 0 Тогда Запрос = Запрос - .Где(СЗ_Запрос.Предикат() + .Где(СхЗапрос.Предикат() .Реквизит("Значение").ВСписке(НаименованияАдресныхОбъектов)); КонецЕсли; diff --git a/src/cfe/CommonModules/СЗ_ЗапросТестКлиент.xml b/src/cfe/CommonModules/СхЗапросТестКлиент.xml similarity index 95% rename from src/cfe/CommonModules/СЗ_ЗапросТестКлиент.xml rename to src/cfe/CommonModules/СхЗапросТестКлиент.xml index 96d9e8d..5280509 100644 --- a/src/cfe/CommonModules/СЗ_ЗапросТестКлиент.xml +++ b/src/cfe/CommonModules/СхЗапросТестКлиент.xml @@ -1,23 +1,23 @@ - - - - - СЗ_ЗапросТестКлиент - - - ru - Схема запроса: запрос тест клиент - - - - false - true - false - false - false - false - false - DontUse - - + + + + + СхЗапросТестКлиент + + + ru + Схема запроса: запрос тест клиент + + + + false + true + false + false + false + false + false + DontUse + + \ No newline at end of file diff --git a/src/cfe/CommonModules/СЗ_ЗапросТестКлиент/Ext/Module.bsl b/src/cfe/CommonModules/СхЗапросТестКлиент/Ext/Module.bsl similarity index 63% rename from src/cfe/CommonModules/СЗ_ЗапросТестКлиент/Ext/Module.bsl rename to src/cfe/CommonModules/СхЗапросТестКлиент/Ext/Module.bsl index 4153970..d00e655 100644 --- a/src/cfe/CommonModules/СЗ_ЗапросТестКлиент/Ext/Module.bsl +++ b/src/cfe/CommonModules/СхЗапросТестКлиент/Ext/Module.bsl @@ -1,1102 +1,1398 @@ -#Область ОбъявлениеТестов - -Процедура ИсполняемыеСценарии() Экспорт - - ЮТТесты.УдалениеТестовыхДанных() - .ДобавитьТестовыйНабор("СЗ: Базовые") - .ДобавитьТест("ИсключениеИсточникОтсутствует") - .ДобавитьТест("ИсключениеИсточникПустаяСтрока") - .ДобавитьТест("ЗапросВТаблицуЗначений") - .ДобавитьТест("ЗапросВМассив") - .ДобавитьТест("Первые") - .ДобавитьТест("Различные") - .ДобавитьТест("Разрешенные") - .ДобавитьТестовыйНабор("СЗ: Поля") - .ДобавитьТест("ИсключениеПолеОтсутствует") - .ДобавитьТест("ДобавитьПоляССинонимами") - .ДобавитьТест("ДобавитьНесколькоПолей") - .ДобавитьТест("ДобавитьНесколькоПолейСПереносомСтроки") - .ДобавитьТест("ДобавитьПоляССинонимамиИСписком") - .ДобавитьТест("ВсеПоляДляНеСсылочногоТипа") - .ДобавитьТест("ВсеПоляДляСсылочногоТипа") - .ДобавитьТестовыйНабор("СЗ: Условия") - .ДобавитьТест("ЗапросСУсловиемРавно") - .ДобавитьТест("ЗапросСУсловиемНеРавно") - .ДобавитьТест("ЗапросСУсловиемПодобно") - .ДобавитьТест("ЗапросСУсловиемНеПодобно") - .ДобавитьТест("ЗапросСУсловиемМежду") - .ДобавитьТест("ЗапросСУсловиемВСписке") - .Перед("Перед_ЗапросСУсловиемВСписке") - .ДобавитьТест("ЗапросСУсловиемНеВСписке") - .Перед("Перед_ЗапросСУсловиемНеВСписке") - .ДобавитьТестовыйНабор("СЗ: Соединения") - .ДобавитьТест("СоединениеПоИсточникуСтроке") - .СПараметрами("Левое") - .СПараметрами("Правое") - .СПараметрами("Внутреннее") - .ДобавитьТест("ЛевоеСоединениеПоИсточникуЗапросу") - .ДобавитьТест("ЛевоеСоединениеСГлубокоВложеннымЗапросом") - .ДобавитьТест("ЛевоеСоединениеБезПредиката") - .ДобавитьТест("ЛевоеСоединениеНесколькоУсловийВПредикате") - .ДобавитьТест("ЛевоеСоединениеПредикатЭтоПараметр") - .ДобавитьТест("ЛевоеСоединениеБезПсевдонимовВСоединении") - .ДобавитьТест("НесколькоЛевыхСоединений") - .ДобавитьТестовыйНабор("СЗ: Вложенный запрос") - .ДобавитьТест("ИсключениеВложенныйЗапросБезПсевдонима") - .ДобавитьТест("ВложенныйЗапрос") - .ДобавитьТест("ОченьГлубокоВложенныйЗапрос") - .ДобавитьТестовыйНабор("СЗ: Объединить") - .ДобавитьТест("Объединить") - .ДобавитьТест("ОбъединитьВсе") - .ДобавитьТест("ОбъединитьВсеНаЧетыреИсточника") - .ДобавитьТест("ОбъединитьВсеСПолями") - .ДобавитьТест("ОбъединитьВсеСРазнымКоличествомПолей") - .ДобавитьТест("ОбъединитьВсеСВложеннымЗапросом") - .ДобавитьТестовыйНабор("СЗ: Прочее") - .ДобавитьТест("Порядок") - .ДобавитьТест("ПорядокУбывания") - .ДобавитьТест("Итоги") - .ДобавитьТестовыйНабор("СЗ: Реальные запросы") - .ДобавитьТест("АдресныйКлассификаторСлужебный_ТаблицаАдресныхСокращений") - .Перед("Перед_АдресныйКлассификаторСлужебный_ТаблицаАдресныхСокращений") - ; - -КонецПроцедуры - -#КонецОбласти - -#Область События - -Процедура Перед_ЗапросСУсловиемВСписке() Экспорт - - ПодготовитьСписокНоменклатуры(); - -КонецПроцедуры - -Процедура Перед_ЗапросСУсловиемНеВСписке() Экспорт - - ПодготовитьСписокНоменклатуры(); - - Контекст = ЮТест.КонтекстТеста(); - - МассивНоменклатуры = СЗ_ЗапросТестСлужебныйВызовСервера - .ПолучитьНоменклатуруНеСписке(Контекст.МассивНоменклатуры); - Контекст.Вставить("МассивНоменклатурыНеВСписке", МассивНоменклатуры); - -КонецПроцедуры - -Процедура Перед_АдресныйКлассификаторСлужебный_ТаблицаАдресныхСокращений() Экспорт - - Для Сч = 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") - ; - - Для Сч = 1 По 9 Цикл - ВложенныйЗапрос = СЗ_Запрос.НовыйЗапрос(ВложенныйЗапрос) - .Выбрать("Ссылка, Родитель") - .Псевдоним("ВложенныйЗапрос_" + Сч) - ; - КонецЦикла; - - ПредикатДляСоединения = СЗ_Запрос.Предикат() - .Реквизит("Ссылка").Равно("Родитель") - ; - - ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура") - .Выбрать("Номенклатура.Ссылка, - |ВложенныйЗапрос_9.Ссылка КАК ВложенныйЗапрос_9Ссылка") - .ЛевоеСоединение(ВложенныйЗапрос, ПредикатДляСоединения) - .ВТаблицуЗначений() - ; - - ЮТест.ОжидаетЧто(ТаблицаЗначений) - .ИмеетТип("Массив") - .ИмеетДлинуБольше(0) - .КаждыйЭлементСоответствуетПредикату(ЮТест.Предикат() - .Реквизит("Ссылка").Заполнено()) - .ЛюбойЭлементСоответствуетПредикату(ЮТест.Предикат() - .Реквизит("ВложенныйЗапрос_9Ссылка").Заполнено()) - ; - -КонецПроцедуры - -Процедура ЛевоеСоединениеБезПредиката() Экспорт - - ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("РегистрСведений.ПримененияЕНВД") - .Выбрать("ПримененияЕНВД.Организация КАК Организация, - |ПримененияЕНВДСоединение.Склад КАК Склад") - .ЛевоеСоединение("РегистрСведений.ПримененияЕНВД КАК ПримененияЕНВДСоединение") - .ВТаблицуЗначений() - ; - - ЮТест.ОжидаетЧто(ТаблицаЗначений) - .ИмеетТип("Массив") - ; - ЮТест.ОжидаетЧто(ТаблицаЗначений.Количество()) - .Больше(0) - ; - ЮТест.ОжидаетЧто(ТаблицаЗначений[0]) - .ИмеетСвойство("Организация") - .ИмеетСвойство("Склад") - ; - -КонецПроцедуры - -Процедура ЛевоеСоединениеНесколькоУсловийВПредикате() Экспорт - - ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура") - .Выбрать("Номенклатура.Ссылка, - |НоменклатураСоединение.Ссылка КАК НоменклатураСоединениеСсылка") - .ЛевоеСоединение("Справочник.Номенклатура КАК НоменклатураСоединение", СЗ_Запрос.Предикат() - .Реквизит("НоменклатураСоединение.Ссылка").Равно("Номенклатура.Родитель") - .Реквизит("НоменклатураСоединение.ЭтоГруппа").Равно("ИСТИНА")) - .ВТаблицуЗначений() - ; - - ЮТест.ОжидаетЧто(ТаблицаЗначений) - .ИмеетТип("Массив") - ; - ЮТест.ОжидаетЧто(ТаблицаЗначений.Количество()) - .Больше(0) - ; - ЮТест.ОжидаетЧто(ТаблицаЗначений[0]) - .ИмеетСвойство("Ссылка") - .ИмеетСвойство("НоменклатураСоединениеСсылка") - ; - -КонецПроцедуры - -Процедура ЛевоеСоединениеПредикатЭтоПараметр() Экспорт - - // Подготовка - МассивПараметров = Новый Массив; - МассивПараметров.Добавить(Новый Структура("ИмяПараметра, Значение", - "Родитель", СЗ_ЗапросТестСлужебныйВызовСервера.ПолучитьГруппуНоменклатуры())); - - // Выполнение - ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура") - .Выбрать("Номенклатура.Ссылка, - |НоменклатураСоединение.Ссылка КАК НоменклатураСоединениеСсылка") - .ЛевоеСоединение("Справочник.Номенклатура КАК НоменклатураСоединение", СЗ_Запрос.Предикат() - .Реквизит("НоменклатураСоединение.Родитель").Равно("&Родитель")) - .Параметры(МассивПараметров) - .ВТаблицуЗначений() - ; - - // Проверки - ЮТест.ОжидаетЧто(ТаблицаЗначений) - .ИмеетТип("Массив") - ; - ЮТест.ОжидаетЧто(ТаблицаЗначений.Количество()) - .Больше(0) - ; - ЮТест.ОжидаетЧто(ТаблицаЗначений[0]) - .ИмеетСвойство("Ссылка") - .ИмеетСвойство("НоменклатураСоединениеСсылка") - ; - -КонецПроцедуры - -Процедура ЛевоеСоединениеБезПсевдонимовВСоединении() Экспорт - - ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура") - .Выбрать("Номенклатура.Ссылка, Номенклатура1.Ссылка") - .ЛевоеСоединение("Справочник.Номенклатура", СЗ_Запрос.Предикат() - .Реквизит("Ссылка").Равно("Родитель") - .Реквизит("ЭтоГруппа").Равно("ИСТИНА")) - .ВТаблицуЗначений() - ; - - ЮТест.ОжидаетЧто(ТаблицаЗначений) - .ИмеетТип("Массив") - ; - ЮТест.ОжидаетЧто(ТаблицаЗначений.Количество()) - .Больше(0) - ; - ЮТест.ОжидаетЧто(ТаблицаЗначений[0]) - .ИмеетСвойство("Ссылка") - .ИмеетСвойство("Ссылка1") - ; - -КонецПроцедуры - -Процедура НесколькоЛевыхСоединений() Экспорт - - ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура") - .Выбрать("Номенклатура.Ссылка, Номенклатура1.Ссылка, Номенклатура2.Ссылка") - .ЛевоеСоединение("Справочник.Номенклатура", СЗ_Запрос.Предикат() - .Реквизит("Ссылка").Равно("Родитель") - .Реквизит("ЭтоГруппа").Равно("ИСТИНА")) - .ЛевоеСоединение("Справочник.Номенклатура", СЗ_Запрос.Предикат() - .Реквизит("Ссылка").Равно("Родитель") - .Реквизит("ЭтоГруппа").Равно("ИСТИНА")) - .ВТаблицуЗначений() - ; - - ЮТест.ОжидаетЧто(ТаблицаЗначений) - .ИмеетТип("Массив") - ; - ЮТест.ОжидаетЧто(ТаблицаЗначений.Количество()) - .Больше(0) - ; - ЮТест.ОжидаетЧто(ТаблицаЗначений[0]) - .ИмеетСвойство("Ссылка") - .ИмеетСвойство("Ссылка1") - .ИмеетСвойство("Ссылка2") - ; - -КонецПроцедуры - -#КонецОбласти - -#Область ВложенныеЗапросы - -Процедура ИсключениеВложенныйЗапросБезПсевдонима() Экспорт - - ВложенныйЗапрос = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура"); - - Запрос = СЗ_Запрос.НовыйЗапрос(ВложенныйЗапрос); - - ЮТест.ОжидаетЧто(Запрос) - .Метод("ВТаблицуЗначений") - .ВыбрасываетИсключение("У вложенного запроса обязательно должен быть псевдоним"); - -КонецПроцедуры - -Процедура ВложенныйЗапрос() Экспорт - - ВложенныйЗапрос = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура") - .Псевдоним("ВложенныйЗапрос") - ; - - ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос(ВложенныйЗапрос) - .ВТаблицуЗначений() - ; - - ЮТест.ОжидаетЧто(ТаблицаЗначений) - .ИмеетТип("Массив") - .ИмеетДлинуБольше(0) - ; - -КонецПроцедуры - -Процедура ОченьГлубокоВложенныйЗапрос() Экспорт - - ВложенныйЗапрос = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура") - .Псевдоним("ВложенныйЗапрос_0") - ; - - Для Сч = 1 По 9 Цикл - ВложенныйЗапрос = СЗ_Запрос.НовыйЗапрос(ВложенныйЗапрос) - .Псевдоним("ВложенныйЗапрос_" + Сч) - ; - КонецЦикла; - - ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос(ВложенныйЗапрос) - .ВТаблицуЗначений() - ; - - ЮТест.ОжидаетЧто(ТаблицаЗначений) - .ИмеетТип("Массив") - .ИмеетДлинуБольше(0) - ; - -КонецПроцедуры - -#КонецОбласти - -#Область Объединить - -Процедура Объединить() Экспорт - - ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Документ.ПриобретениеТоваровУслуг") - .Объединить("Документ.РеализацияТоваровУслуг") - .ВТаблицуЗначений() - ; - - ЮТест.ОжидаетЧто(ТаблицаЗначений) - .ИмеетТип("Массив") - .ИмеетДлинуБольше(0) - .ЛюбойЭлементСоответствуетПредикату(ЮТест.Предикат() - .Реквизит("Ссылка").ИмеетТип("ДокументСсылка.ПриобретениеТоваровУслуг")) - .ЛюбойЭлементСоответствуетПредикату(ЮТест.Предикат() - .Реквизит("Ссылка").ИмеетТип("ДокументСсылка.РеализацияТоваровУслуг")) - ; - -КонецПроцедуры - -Процедура ОбъединитьВсе() Экспорт - - ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Документ.ПриобретениеТоваровУслуг") - .ОбъединитьВсе("Документ.РеализацияТоваровУслуг") - .ВТаблицуЗначений() - ; - - ЮТест.ОжидаетЧто(ТаблицаЗначений) - .ИмеетТип("Массив") - .ИмеетДлинуБольше(0) - .ЛюбойЭлементСоответствуетПредикату(ЮТест.Предикат() - .Реквизит("Ссылка").ИмеетТип("ДокументСсылка.ПриобретениеТоваровУслуг")) - .ЛюбойЭлементСоответствуетПредикату(ЮТест.Предикат() - .Реквизит("Ссылка").ИмеетТип("ДокументСсылка.РеализацияТоваровУслуг")) - ; - -КонецПроцедуры - -Процедура ОбъединитьВсеНаЧетыреИсточника() Экспорт - - ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Документ.ПриобретениеТоваровУслуг") - .ОбъединитьВсе("Документ.РеализацияТоваровУслуг") - .ОбъединитьВсе("Документ.ВозвратТоваровОтКлиента") - .ОбъединитьВсе("Документ.ВозвратТоваровПоставщику") - .ВТаблицуЗначений() - ; - - ЮТест.ОжидаетЧто(ТаблицаЗначений) - .ИмеетТип("Массив") - .ИмеетДлинуБольше(0) - .ЛюбойЭлементСоответствуетПредикату(ЮТест.Предикат() - .Реквизит("Ссылка").ИмеетТип("ДокументСсылка.ПриобретениеТоваровУслуг")) - .ЛюбойЭлементСоответствуетПредикату(ЮТест.Предикат() - .Реквизит("Ссылка").ИмеетТип("ДокументСсылка.РеализацияТоваровУслуг")) - .ЛюбойЭлементСоответствуетПредикату(ЮТест.Предикат() - .Реквизит("Ссылка").ИмеетТип("ДокументСсылка.ВозвратТоваровОтКлиента")) - .ЛюбойЭлементСоответствуетПредикату(ЮТест.Предикат() - .Реквизит("Ссылка").ИмеетТип("ДокументСсылка.ВозвратТоваровПоставщику")) - ; - -КонецПроцедуры - -Процедура ОбъединитьВсеСПолями() Экспорт - - ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Документ.ПриобретениеТоваровУслуг") - .Выбрать("Ссылка, Дата, Номер") - .ОбъединитьВсе(СЗ_Запрос.НовыйЗапрос("Документ.РеализацияТоваровУслуг") - .Выбрать("Ссылка, Дата, Номер")) - .ВТаблицуЗначений() - ; - - ЮТест.ОжидаетЧто(ТаблицаЗначений) - .ИмеетТип("Массив") - .ИмеетДлинуБольше(0) - .ЛюбойЭлементСоответствуетПредикату(ЮТест.Предикат() - .Реквизит("Ссылка").ИмеетТип("ДокументСсылка.ПриобретениеТоваровУслуг")) - .ЛюбойЭлементСоответствуетПредикату(ЮТест.Предикат() - .Реквизит("Ссылка").ИмеетТип("ДокументСсылка.РеализацияТоваровУслуг")) - .КаждыйЭлементСоответствуетПредикату(ЮТест.Предикат() - .Реквизит("Дата").Заполнено() - .Реквизит("Номер").Заполнено()) - ; - -КонецПроцедуры - -Процедура ОбъединитьВсеСРазнымКоличествомПолей() Экспорт - - ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Документ.ПриобретениеТоваровУслуг") - .Выбрать("Ссылка, Дата, Номер") - .ОбъединитьВсе(СЗ_Запрос.НовыйЗапрос("Документ.РеализацияТоваровУслуг") - .Выбрать("Ссылка, Дата, Номер, Партнер")) - .ВТаблицуЗначений() - ; - - ЮТест.ОжидаетЧто(ТаблицаЗначений) - .ИмеетТип("Массив") - .ИмеетДлинуБольше(0) - .ЛюбойЭлементСоответствуетПредикату(ЮТест.Предикат() - .Реквизит("Ссылка").ИмеетТип("ДокументСсылка.ПриобретениеТоваровУслуг") - .Реквизит("Партнер").Пусто()) - .ЛюбойЭлементСоответствуетПредикату(ЮТест.Предикат() - .Реквизит("Ссылка").ИмеетТип("ДокументСсылка.РеализацияТоваровУслуг") - .Реквизит("Партнер").Заполнено()) - .КаждыйЭлементСоответствуетПредикату(ЮТест.Предикат() - .Реквизит("Дата").Заполнено() - .Реквизит("Номер").Заполнено()) - ; - -КонецПроцедуры - -Процедура ОбъединитьВсеСВложеннымЗапросом() Экспорт - - ВложенныйЗапрос = СЗ_Запрос.НовыйЗапрос("Документ.РеализацияТоваровУслуг") - .Псевдоним("ВложенныйЗапрос") - .Выбрать("Ссылка, Дата, Номер, Партнер") - ; - - ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Документ.ПриобретениеТоваровУслуг") - .Выбрать("Ссылка, Дата, Номер") - .ОбъединитьВсе(СЗ_Запрос.НовыйЗапрос(ВложенныйЗапрос) - .Выбрать("Ссылка, Дата, Номер")) - .ВТаблицуЗначений() - ; - - ЮТест.ОжидаетЧто(ТаблицаЗначений) - .ИмеетТип("Массив") - .ИмеетДлинуБольше(0) - .ЛюбойЭлементСоответствуетПредикату(ЮТест.Предикат() - .Реквизит("Ссылка").ИмеетТип("ДокументСсылка.ПриобретениеТоваровУслуг")) - .ЛюбойЭлементСоответствуетПредикату(ЮТест.Предикат() - .Реквизит("Ссылка").ИмеетТип("ДокументСсылка.РеализацияТоваровУслуг")) - .КаждыйЭлементСоответствуетПредикату(ЮТест.Предикат() - .Реквизит("Дата").Заполнено() - .Реквизит("Номер").Заполнено()) - ; - -КонецПроцедуры - -#КонецОбласти - -#Область Прочее - -Процедура Порядок() Экспорт - - // Выполнение - ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура") - .Выбрать("Ссылка, ЭтоГруппа") - .Упорядочить("ЭтоГруппа, Наименование") - .ВТаблицуЗначений() - ; - - // Проверки - СпсисокЭлементов = Новый СписокЗначений; - Сч = 0; - Для каждого СтрокаТаблицы Из ТаблицаЗначений Цикл - Если Не СтрокаТаблицы.ЭтоГруппа Тогда - СпсисокЭлементов.Добавить(Сч); - Иначе - Прервать; - КонецЕсли; - Сч = Сч + 1; - КонецЦикла; - СпсисокЭлементов.СортироватьПоЗначению(НаправлениеСортировки.Убыв); - Для каждого СтрокаТаблицыЭлементы Из СпсисокЭлементов Цикл - ТаблицаЗначений.Удалить(СтрокаТаблицыЭлементы.Значение); - КонецЦикла; - - ЮТест.ОжидаетЧто(СпсисокЭлементов.Количество(), "Количество элементов") - .Больше(0) - ; - ЮТест.ОжидаетЧто(ТаблицаЗначений) - .ИмеетТип("Массив") - .ИмеетДлинуБольше(0, "Количество групп") - .КаждыйЭлементСоответствуетПредикату(ЮТест.Предикат() - .Реквизит("ЭтоГруппа").Равно(Истина)) - ; - -КонецПроцедуры - -Процедура ПорядокУбывания() Экспорт - - // Выполнение - ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура") - .Выбрать("Ссылка, ЭтоГруппа") - .Упорядочить("ЭтоГруппа УБЫВ, Наименование") - .ВТаблицуЗначений() - ; - - // Проверки - СпсисокГрупп = Новый СписокЗначений; - Сч = 0; - Для каждого СтрокаТаблицы Из ТаблицаЗначений Цикл - Если СтрокаТаблицы.ЭтоГруппа Тогда - СпсисокГрупп.Добавить(Сч); - Иначе - Прервать; - КонецЕсли; - Сч = Сч + 1; - КонецЦикла; - СпсисокГрупп.СортироватьПоЗначению(НаправлениеСортировки.Убыв); - Для каждого СтрокаТаблицыГруппы Из СпсисокГрупп Цикл - ТаблицаЗначений.Удалить(СтрокаТаблицыГруппы.Значение); - КонецЦикла; - - ЮТест.ОжидаетЧто(СпсисокГрупп.Количество(), "Количество групп") - .Больше(0) - ; - ЮТест.ОжидаетЧто(ТаблицаЗначений) - .ИмеетТип("Массив") - .ИмеетДлинуБольше(0, "Количество элементов") - .КаждыйЭлементСоответствуетПредикату(ЮТест.Предикат() - .Реквизит("ЭтоГруппа").Равно(Ложь)) - ; - -КонецПроцедуры - -Процедура Итоги() Экспорт - - ТаблицаЗначений = СЗ_Запрос.НовыйЗапрос("Справочник.Номенклатура") - .Итоги("ЭтоГруппа") - .ВТаблицуЗначений() - ; - - ЮТест.ОжидаетЧто(ТаблицаЗначений) - .ИмеетТип("Массив") - .ИмеетДлинуБольше(0) - .ЛюбойЭлементСодержитСвойство("ссылка", Null) - ; - -КонецПроцедуры - -#КонецОбласти - -#Область РеальныеЗапросы - -Процедура АдресныйКлассификаторСлужебный_ТаблицаАдресныхСокращений() Экспорт - - // Подготовка - НаименованияАдресныхОбъектов = Новый Массив; - НаименованияАдресныхОбъектов.Добавить("Абонентский Ящик"); - - // Выполнение - Запрос = СЗ_Запрос.НовыйЗапрос("РегистрСведений.УровниСокращенийАдресныхСведений") - .Выбрать("Значение КАК Наименование, Сокращение") - .Сгруппировать("Значение, Сокращение") - .Упорядочить("Наименование"); - - Если ТипЗнч(НаименованияАдресныхОбъектов) = Тип("Массив") И НаименованияАдресныхОбъектов.Количество() > 0 Тогда - Запрос = Запрос - .Где(СЗ_Запрос.Предикат() - .Реквизит("Значение").ВСписке(НаименованияАдресныхОбъектов)); - КонецЕсли; - - Результат = Запрос.ВТаблицуЗначений(); - - // Проверки - ЮТест.ОжидаетЧто(Результат) - .ИмеетТип("Массив") - ; - ЮТест.ОжидаетЧто(Результат.Количество()) - .Равно(1) - ; - -КонецПроцедуры - -#КонецОбласти - -#КонецОбласти - -#Область СлужебныеПроцедурыИФункции - -Процедура ПодготовитьСписокНоменклатуры() - - ВидНоменклатуры = ЮТест.Данные().КонструкторОбъекта("Справочники.ВидыНоменклатуры") - .Фикция("Наименование") - .Установить("ТипНоменклатуры", ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Товар")) - .Записать() - ; - - Массив = Новый Массив; - - Для Сч = 1 По 5 Цикл - - Номенклатура = ЮТест.Данные().КонструкторОбъекта("Справочники.Номенклатура") - .Фикция("Наименование") - .Установить("ВидНоменклатуры", ВидНоменклатуры) - .Установить("ТипНоменклатуры", ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Товар")) - .Установить("ИспользованиеХарактеристик", - ПредопределенноеЗначение("Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать")) - .Записать() - ; - - Массив.Добавить(Номенклатура); - - КонецЦикла; - - Контекст = ЮТест.КонтекстТеста(); - Контекст.Вставить("МассивНоменклатуры", Массив); - -КонецПроцедуры - -#КонецОбласти +#Область ОбъявлениеТестов + +Процедура ИсполняемыеСценарии() Экспорт + + ЮТТесты.УдалениеТестовыхДанных() + .ДобавитьТестовыйНабор("СЗ: Базовые") + .ДобавитьТест("ИсключениеИсточникОтсутствует") + .ДобавитьТест("ИсключениеИсточникПустаяСтрока") + .ДобавитьТест("ЗапросВТаблицуЗначений") + .ДобавитьТест("ЗапросВМассив") + .ДобавитьТест("Первые") + .ДобавитьТест("Различные") + .ДобавитьТест("Разрешенные") + .ДобавитьТестовыйНабор("СЗ: Поля") + .ДобавитьТест("ИсключениеПолеОтсутствует") + .ДобавитьТест("ИсключениеПолеОтсутствуетСУказаниемИсточника") + .ДобавитьТест("ДобавитьПоляССинонимами") + .ДобавитьТест("ДобавитьНесколькоПолей") + .ДобавитьТест("ДобавитьНесколькоПолейСПереносомСтроки") + .ДобавитьТест("ДобавитьПоляССинонимамиИСписком") + .ДобавитьТест("ВсеПоляДляНеСсылочногоТипа") + .ДобавитьТест("ВсеПоляДляСсылочногоТипа") + .ДобавитьТест("ДобавиьПолеВыборКогдаСтрокой1") + .ДобавитьТест("ДобавиьПолеВыборКогдаСтрокой2") + .ДобавитьТест("ДобавиьПолеВыборКогдаФункциейЧисла") + .ДобавитьТест("ДобавиьПолеВыборКогдаФункциейСтроки") + .ДобавитьТест("ДобавиьПолеВыразитьФункциейПсевдоним1") + .ДобавитьТест("ДобавиьПолеВыразитьФункциейПсевдоним2") + .ДобавитьТестовыйНабор("СЗ: Условия") + .ДобавитьТест("ЗапросСУсловиемРавно") + .ДобавитьТест("ЗапросСУсловиемНеРавно") + .ДобавитьТест("ЗапросСУсловиемПодобно") + .ДобавитьТест("ЗапросСУсловиемНеПодобно") + .ДобавитьТест("ЗапросСУсловиемМежду") + .ДобавитьТест("ЗапросСУсловиемВСписке") + .Перед("Перед_ЗапросСУсловиемВСписке") + .ДобавитьТест("ЗапросСУсловиемНеВСписке") + .Перед("Перед_ЗапросСУсловиемНеВСписке") + .ДобавитьТест("ЗапросСУсловиемИВыборКогдаВПолях") + .ДобавитьТест("ИсключениеУсловиеНаПолеБесконечнойДлиныБезВыразить") + .ДобавитьТест("УсловиеНаПолеБесконечнойДлиныСВыразить") + .ДобавитьТестовыйНабор("СЗ: Соединения") + .ДобавитьТест("СоединениеПоИсточникуСтроке") + .СПараметрами("Левое") + .СПараметрами("Правое") + .СПараметрами("Внутреннее") + .ДобавитьТест("ЛевоеСоединениеПоИсточникуЗапросу") + .ДобавитьТест("ЛевоеСоединениеСГлубокоВложеннымЗапросом") + .ДобавитьТест("ЛевоеСоединениеБезПредиката") + .ДобавитьТест("ЛевоеСоединениеНесколькоУсловийВПредикате") + .ДобавитьТест("ЛевоеСоединениеПредикатЭтоПараметр") + .ДобавитьТест("ЛевоеСоединениеБезПсевдонимовВСоединении") + .ДобавитьТест("НесколькоЛевыхСоединений") + .ДобавитьТестовыйНабор("СЗ: Вложенный запрос") + .ДобавитьТест("ИсключениеВложенныйЗапросБезПсевдонима") + .ДобавитьТест("ВложенныйЗапрос") + .ДобавитьТест("ОченьГлубокоВложенныйЗапрос") + .ДобавитьТестовыйНабор("СЗ: Объединить") + .ДобавитьТест("Объединить") + .ДобавитьТест("ОбъединитьВсе") + .ДобавитьТест("ОбъединитьВсеНаЧетыреИсточника") + .ДобавитьТест("ОбъединитьВсеСПолями") + .ДобавитьТест("ОбъединитьВсеСРазнымКоличествомПолей") + .ДобавитьТест("ОбъединитьВсеСВложеннымЗапросом") + .ДобавитьТестовыйНабор("СЗ: Группировать") + .ДобавитьТест("Группировать") + .ДобавитьТест("ГруппироватьКоличествоСтрокой") + .ДобавитьТест("ГруппироватьКоличествоФункциейПолеСтрокой") + .ДобавитьТест("ГруппироватьКоличествоФункциейПолеСтруктурой") + .ДобавитьТест("ГруппироватьСуммаФункциейПолеСтрокой") + .ДобавитьТест("ГруппироватьМинимумФункциейПолеСтрокой") + .ДобавитьТест("ГруппироватьМаксимумФункциейПолеСтрокой") + .ДобавитьТестовыйНабор("СЗ: Прочее") + .ДобавитьТест("Порядок") + .ДобавитьТест("ПорядокУбывания") + .ДобавитьТест("Итоги") + .ДобавитьТестовыйНабор("СЗ: Реальные запросы") + .ДобавитьТест("АдресныйКлассификаторСлужебный_ТаблицаАдресныхСокращений") + .Перед("Перед_АдресныйКлассификаторСлужебный_ТаблицаАдресныхСокращений") + ; + +КонецПроцедуры + +#КонецОбласти + +#Область События + +Процедура Перед_ЗапросСУсловиемВСписке() Экспорт + + ПодготовитьСписокНоменклатуры(); + +КонецПроцедуры + +Процедура Перед_ЗапросСУсловиемНеВСписке() Экспорт + + ПодготовитьСписокНоменклатуры(); + + Контекст = ЮТест.КонтекстТеста(); + + МассивНоменклатуры = СхЗапросТестСлужебныйВызовСервера + .ПолучитьНоменклатуруНеСписке(Контекст.МассивНоменклатуры); + Контекст.Вставить("МассивНоменклатурыНеВСписке", МассивНоменклатуры); + +КонецПроцедуры + +Процедура Перед_АдресныйКлассификаторСлужебный_ТаблицаАдресныхСокращений() Экспорт + + Для Сч = 1 По 3 Цикл + ЮТест.Данные().КонструкторОбъекта("РегистрСведений.УровниСокращенийАдресныхСведений") + .Установить("Значение", "Абонентский Ящик") + .Установить("Сокращение", "А/Я") + .Записать() + ; + КонецЦикла; + Для Сч = 1 По 5 Цикл + ЮТест.Данные().КонструкторОбъекта("РегистрСведений.УровниСокращенийАдресныхСведений") + .Установить("Значение", "Деревня") + .Установить("Сокращение", "Д.") + .Записать() + ; + КонецЦикла; + +КонецПроцедуры + +#КонецОбласти + +#Область Тесты + +#Область Базовые + +Процедура ИсключениеИсточникОтсутствует() Экспорт + + Обработка = ПолучитьФорму("Обработка.СхПроцессорСхемЗапроса.Форма.Форма"); + + ЮТест.ОжидаетЧто(Обработка) + .Метод("ВТаблицуЗначений") + .ВыбрасываетИсключение("ПолучитьТекстЗапроса: источник данных запроса не определен"); + +КонецПроцедуры + +Процедура ИсключениеИсточникПустаяСтрока() Экспорт + + Запрос = СхЗапрос.НовыйЗапрос(""); + + ЮТест.ОжидаетЧто(Запрос) + .Метод("ВТаблицуЗначений") + .ВыбрасываетИсключение("ПолучитьТекстЗапроса: источник данных запроса не определен"); + +КонецПроцедуры + +Процедура ЗапросВТаблицуЗначений() Экспорт + + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") + .ВТаблицуЗначений() + ; + + ЮТест.ОжидаетЧто(ТаблицаЗначений) + .ИмеетТип("Массив") + ; + ЮТест.ОжидаетЧто(ТаблицаЗначений.Количество()) + .Больше(0) + ; + +КонецПроцедуры + +Процедура ЗапросВМассив() Экспорт + + Массив = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") + .ВМассив("Ссылка") + ; + + ЮТест.ОжидаетЧто(Массив) + .ИмеетТип("Массив") + ; + ЮТест.ОжидаетЧто(Массив.Количество()) + .Больше(0) + ; + +КонецПроцедуры + +Процедура Первые() Экспорт + + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура", 10) + .ВТаблицуЗначений() + ; + + ЮТест.ОжидаетЧто(ТаблицаЗначений.Количество()) + .Равно(10) + ; + +КонецПроцедуры + +Процедура Различные() Экспорт + + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура",, Истина) + .ВТаблицуЗначений() + ; + + ЮТест.ОжидаетЧто(ТаблицаЗначений) + .ИмеетТип("Массив") + ; + ЮТест.ОжидаетЧто(ТаблицаЗначений.Количество()) + .Больше(0) + ; + +КонецПроцедуры + +Процедура Разрешенные() Экспорт + + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура",,, Истина) + .ВТаблицуЗначений() + ; + + ЮТест.ОжидаетЧто(ТаблицаЗначений) + .ИмеетТип("Массив") + ; + ЮТест.ОжидаетЧто(ТаблицаЗначений.Количество()) + .Больше(0) + ; + +КонецПроцедуры + +#КонецОбласти + +#Область Поля + +Процедура ИсключениеПолеОтсутствует() Экспорт + + НеправильноеНаименованиеПоля = "йцукен"; + + Запрос = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") + .Выбрать(НеправильноеНаименованиеПоля) + ; + + ЮТест.ОжидаетЧто(Запрос) + .Метод("ВТаблицуЗначений") + .ВыбрасываетИсключение( + СтрШаблон("{(1, 1)}: Поле не найдено ""%1"" +|<>%1", НеправильноеНаименованиеПоля)); + +КонецПроцедуры + +Процедура ИсключениеПолеОтсутствуетСУказаниемИсточника() Экспорт + + НеправильноеНаименованиеПоля = "йцукен"; + + Запрос = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") + .Выбрать("Номенклатура." + НеправильноеНаименованиеПоля) + ; + + ЮТест.ОжидаетЧто(Запрос) + .Метод("ВТаблицуЗначений") + .ВыбрасываетИсключение( + СтрШаблон("ДобавитьПоля: поле %1 в источнике не определено", НеправильноеНаименованиеПоля)); + +КонецПроцедуры + +Процедура ДобавитьПоляССинонимами() Экспорт + + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") + .Выбрать(СхЗапрос.НовоеПоле("Ссылка",, "СсылкаНоменклатуры")) + .Выбрать(СхЗапрос.НовоеПоле("Наименование",, "НаименованиеНоменклатуры")) + .ВТаблицуЗначений() + ; + + ЮТест.ОжидаетЧто(ТаблицаЗначений) + .ИмеетТип("Массив") + ; + ЮТест.ОжидаетЧто(ТаблицаЗначений.Количество()) + .Больше(0) + ; + ЮТест.ОжидаетЧто(ТаблицаЗначений[0]) + .ИмеетСвойство("СсылкаНоменклатуры") + .ИмеетСвойство("НаименованиеНоменклатуры") + ; + +КонецПроцедуры + +Процедура ДобавитьНесколькоПолей() Экспорт + + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") + .Выбрать("Ссылка, Наименование, ЭтоГруппа") + .ВТаблицуЗначений() + ; + + ЮТест.ОжидаетЧто(ТаблицаЗначений) + .ИмеетТип("Массив") + ; + ЮТест.ОжидаетЧто(ТаблицаЗначений.Количество()) + .Больше(0) + ; + ЮТест.ОжидаетЧто(ТаблицаЗначений[0]) + .ИмеетСвойство("Ссылка") + .ИмеетСвойство("Наименование") + .ИмеетСвойство("ЭтоГруппа") + ; + +КонецПроцедуры + +Процедура ДобавитьНесколькоПолейСПереносомСтроки() Экспорт + + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") + .Выбрать("Ссылка, Наименование, + |ЭтоГруппа") + .ВТаблицуЗначений() + ; + + ЮТест.ОжидаетЧто(ТаблицаЗначений) + .ИмеетТип("Массив") + ; + ЮТест.ОжидаетЧто(ТаблицаЗначений.Количество()) + .Больше(0) + ; + ЮТест.ОжидаетЧто(ТаблицаЗначений[0]) + .ИмеетСвойство("Ссылка") + .ИмеетСвойство("Наименование") + .ИмеетСвойство("ЭтоГруппа") + ; + +КонецПроцедуры + +Процедура ДобавитьПоляССинонимамиИСписком() Экспорт + + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") + .Выбрать(СхЗапрос.НовоеПоле("Ссылка",, "СсылкаНоменклатуры")) + .Выбрать("Наименование КАК НаименованиеНоменклатуры, ЭтоГруппа") + .ВТаблицуЗначений() + ; + + ЮТест.ОжидаетЧто(ТаблицаЗначений) + .ИмеетТип("Массив") + ; + ЮТест.ОжидаетЧто(ТаблицаЗначений.Количество()) + .Больше(0) + ; + ЮТест.ОжидаетЧто(ТаблицаЗначений[0]) + .ИмеетСвойство("СсылкаНоменклатуры") + .ИмеетСвойство("НаименованиеНоменклатуры") + .ИмеетСвойство("ЭтоГруппа") + ; + +КонецПроцедуры + +Процедура ВсеПоляДляНеСсылочногоТипа() Экспорт + + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("РегистрСведений.КурсыВалют") + .ВТаблицуЗначений() + ; + + ЮТест.ОжидаетЧто(ТаблицаЗначений) + .ИмеетТип("Массив") + ; + ЮТест.ОжидаетЧто(ТаблицаЗначений.Количество()) + .Больше(0) + ; + ЮТест.ОжидаетЧто(ТаблицаЗначений[0]) + .ИмеетСвойство("Валюта") + .ИмеетСвойство("Курс") + .ИмеетСвойство("Кратность") + ; + +КонецПроцедуры + +Процедура ВсеПоляДляСсылочногоТипа() Экспорт + + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") + .ВыбратьВсе() + .ВТаблицуЗначений() + ; + + ЮТест.ОжидаетЧто(ТаблицаЗначений) + .ИмеетТип("Массив") + ; + ЮТест.ОжидаетЧто(ТаблицаЗначений.Количество()) + .Больше(0) + ; + ЮТест.ОжидаетЧто(ТаблицаЗначений[0]) + .ИмеетСвойство("Ссылка") + .ИмеетСвойство("Наименование") + .ИмеетСвойство("ЭтоГруппа") + ; + +КонецПроцедуры + +Процедура ДобавиьПолеВыборКогдаСтрокой1() Экспорт + + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") + .Выбрать("ВЫБОР КОГДА Номенклатура.ЭтоГруппа = ИСТИНА ТОГДА 1 ИНАЧЕ 0 КОНЕЦ КАК ЭтоГруппа") + .ВТаблицуЗначений() + ; + + ЮТест.ОжидаетЧто(ТаблицаЗначений) + .ИмеетТип("Массив") + .ИмеетДлинуБольше(0) + ; + +КонецПроцедуры + +Процедура ДобавиьПолеВыборКогдаСтрокой2() Экспорт + + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") + .Выбрать("ВЫБОР + | КОГДА Номенклатура.ЭтоГруппа = ИСТИНА + | ТОГДА 1 + | ИНАЧЕ 0 + |КОНЕЦ КАК ЭтоГруппа") + .ВТаблицуЗначений() + ; + + ЮТест.ОжидаетЧто(ТаблицаЗначений) + .ИмеетТип("Массив") + .ИмеетДлинуБольше(0) + ; + +КонецПроцедуры + +Процедура ДобавиьПолеВыборКогдаФункциейЧисла() Экспорт + + Предикат = СхЗапрос.Предикат().Реквизит("ЭтоГруппа").Равно(Истина); + + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") + .ВыборКогда(Предикат, 1, 0, "ЭтоГруппа") + .ВТаблицуЗначений() + ; + + ЮТест.ОжидаетЧто(ТаблицаЗначений) + .ИмеетТип("Массив") + .ИмеетДлинуБольше(0) + .КаждыйЭлементСоответствуетПредикату(ЮТест.Предикат() + .Реквизит("ЭтоГруппа") + .ИмеетТип("Число") + .МеждуВключаяГраницы(0, 1)) + ; + +КонецПроцедуры + +Процедура ДобавиьПолеВыборКогдаФункциейСтроки() Экспорт + + Предикат = СхЗапрос.Предикат().Реквизит("ЭтоГруппа").Равно(Истина); + + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") + .ВыборКогда(Предикат, "Это группа", "Это элемент", "ЭтоГруппа") + .ВТаблицуЗначений() + ; + + ЮТест.ОжидаетЧто(ТаблицаЗначений) + .ИмеетТип("Массив") + .ИмеетДлинуБольше(0) + .ЛюбойЭлементСоответствуетПредикату(ЮТест.Предикат() + .Реквизит("ЭтоГруппа") + .ИмеетТип("Строка") + .Равно("Это группа")) + .ЛюбойЭлементСоответствуетПредикату(ЮТест.Предикат() + .Реквизит("ЭтоГруппа") + .ИмеетТип("Строка") + .Равно("Это элемент")) + ; + +КонецПроцедуры + +Процедура ДобавиьПолеВыразитьФункциейПсевдоним1() Экспорт + + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Документ.РеализацияТоваровУслуг") + .Выразить("Комментарий КАК СтрокаКомментария", + Новый ОписаниеТипов("Строка",, Новый КвалификаторыСтроки(1024))) + .ВТаблицуЗначений() + ; + +КонецПроцедуры + +Процедура ДобавиьПолеВыразитьФункциейПсевдоним2() Экспорт + + ОписаниеТипа = Новый ОписаниеТипов("Строка",, Новый КвалификаторыСтроки(1024)); + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Документ.РеализацияТоваровУслуг") + .Выразить("Комментарий", ОписаниеТипа, "СтрокаКомментария") + .ВТаблицуЗначений() + ; + +КонецПроцедуры + +#КонецОбласти + +#Область Условия + +Процедура ЗапросСУсловиемРавно() Экспорт + + Предикат = СхЗапрос.Предикат() + .Реквизит("ЭтоГруппа").Равно(Ложь) + ; + + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") + .Выбрать("Ссылка, ЭтоГруппа") + .Где(Предикат) + .ВТаблицуЗначений() + ; + + ЮТест.ОжидаетЧто(ТаблицаЗначений) + .ИмеетТип("Массив") + .ИмеетДлинуБольше(0) + .КаждыйЭлементСоответствуетПредикату(ЮТест.Предикат() + .Реквизит("ЭтоГруппа").Равно(Ложь)) + ; + +КонецПроцедуры + +Процедура ЗапросСУсловиемНеРавно() Экспорт + + Предикат = СхЗапрос.Предикат() + .Реквизит("ЭтоГруппа").НеРавно(Ложь) + ; + + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") + .Выбрать("Ссылка, ЭтоГруппа") + .Где(Предикат) + .ВТаблицуЗначений() + ; + + ЮТест.ОжидаетЧто(ТаблицаЗначений) + .ИмеетТип("Массив") + .ИмеетДлинуБольше(0) + .КаждыйЭлементСоответствуетПредикату(ЮТест.Предикат() + .Реквизит("ЭтоГруппа").Равно(Истина)) + ; + +КонецПроцедуры + +Процедура ЗапросСУсловиемПодобно() Экспорт + + Предикат = СхЗапрос.Предикат() + .Реквизит("Наименование").Подобно("Хлеб") + ; + + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") + .Выбрать("Ссылка, Наименование") + .Где(Предикат) + .ВТаблицуЗначений() + ; + + Утверждения = ЮТест.ОжидаетЧто(ТаблицаЗначений) + .ИмеетТип("Массив") + .ИмеетДлинуБольше(0) + ; + + СхЗапросТестСлужебныйВызовСервера.ПроверитьПодобноПоРегулярномуВыражению(ТаблицаЗначений); + +КонецПроцедуры + +Процедура ЗапросСУсловиемНеПодобно() Экспорт + + Предикат = СхЗапрос.Предикат() + .Реквизит("Наименование").НеПодобно("Хлеб") + ; + + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") + .Выбрать("Ссылка, Наименование") + .Где(Предикат) + .ВТаблицуЗначений() + ; + + ЮТест.ОжидаетЧто(ТаблицаЗначений) + .ИмеетТип("Массив") + .ИмеетДлинуБольше(0) + ; + + СхЗапросТестСлужебныйВызовСервера.ПроверитьНеПодобноПоРегулярномуВыражению(ТаблицаЗначений); + +КонецПроцедуры + +Процедура ЗапросСУсловиемМежду() Экспорт + + ДатаНачала = Дата("20230601000000"); + ДатаОкончания = Дата("20230630235959"); + Предикат = СхЗапрос.Предикат() + .Реквизит("Дата").Между(ДатаНачала, ДатаОкончания) + ; + + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Документ.ЗаказКлиента") + .Выбрать("Ссылка, Дата") + .Где(Предикат) + .ВТаблицуЗначений() + ; + + ЮТест.ОжидаетЧто(ТаблицаЗначений) + .ИмеетТип("Массив") + .ИмеетДлинуБольше(0) + .КаждыйЭлементСоответствуетПредикату(ЮТест.Предикат() + .Реквизит("Дата").Между(ДатаНачала, ДатаОкончания)) + ; + +КонецПроцедуры + +Процедура ЗапросСУсловиемВСписке() Экспорт + + Контекст = ЮТест.КонтекстТеста(); + + Предикат = СхЗапрос.Предикат() + .Реквизит("Ссылка").ВСписке(Контекст.МассивНоменклатуры) + ; + + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") + .Где(Предикат) + .ВТаблицуЗначений() + ; + + ЮТест.ОжидаетЧто(ТаблицаЗначений) + .ИмеетТип("Массив") + .ИмеетДлину(5) + .КаждыйЭлементСоответствуетПредикату(ЮТест.Предикат() + .Реквизит("Ссылка").ВСписке(Контекст.МассивНоменклатуры)) + ; + +КонецПроцедуры + +Процедура ЗапросСУсловиемНеВСписке() Экспорт + + Контекст = ЮТест.КонтекстТеста(); + + Предикат = СхЗапрос.Предикат() + .Реквизит("Ссылка").НеВСписке(Контекст.МассивНоменклатурыНеВСписке) + ; + + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") + .Где(Предикат) + .ВТаблицуЗначений() + ; + + ЮТест.ОжидаетЧто(ТаблицаЗначений) + .ИмеетТип("Массив") + .ИмеетДлинуБольше(0) + .КаждыйЭлементСоответствуетПредикату(ЮТест.Предикат() + .Реквизит("Ссылка").ВСписке(Контекст.МассивНоменклатуры)) + ; + +КонецПроцедуры + +// Проверяет сквозную нумерацию параметров +// +Процедура ЗапросСУсловиемИВыборКогдаВПолях() Экспорт + + Предикат = СхЗапрос.Предикат().Реквизит("ЭтоГруппа").Равно(Истина); + + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") + .ВыборКогда(Предикат, 1, 0, "ЭтоГруппа") + .Где(СхЗапрос.Предикат() + .Реквизит("ЭтоГруппа").Равно(Ложь)) + .ВТаблицуЗначений() + ; + + ЮТест.ОжидаетЧто(ТаблицаЗначений) + .ИмеетТип("Массив") + .ИмеетДлинуБольше(0) + .КаждыйЭлементСоответствуетПредикату(ЮТест.Предикат() + .Реквизит("ЭтоГруппа") + .ИмеетТип("Число") + .Равно(0)) + ; + +КонецПроцедуры + +Процедура ИсключениеУсловиеНаПолеБесконечнойДлиныБезВыразить() Экспорт + + Предикат = СхЗапрос.Предикат().Реквизит("Комментарий").Равно(""); + + Запрос = СхЗапрос.НовыйЗапрос("Документ.РеализацияТоваровУслуг") + .Где(Предикат) + ; + + ЮТест.ОжидаетЧто(Запрос) + .Метод("ВТаблицуЗначений") + .ВыбрасываетИсключение("{(6, 37)}: Неверные параметры в операции сравнения. Нельзя сравнивать поля + | неограниченной длины и поля несовместимых типов. + |РеализацияТоваровУслуг.Комментарий <>= &Параметр_0"); + +КонецПроцедуры + +Процедура УсловиеНаПолеБесконечнойДлиныСВыразить() Экспорт + + ОписаниеТипа = Новый ОписаниеТипов("Строка",, Новый КвалификаторыСтроки(1024)); + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Документ.РеализацияТоваровУслуг") + .Где(СхЗапрос.Предикат() + .РеквизитВыразить("Комментарий", ОписаниеТипа).Равно("")) + .ВТаблицуЗначений() + ; + +КонецПроцедуры + +#КонецОбласти + +#Область Соединения + +Процедура СоединениеПоИсточникуСтроке(ТипСоединения) Экспорт + + ПредикатДляСоединения = СхЗапрос.Предикат() + .Реквизит("НоменклатураСоединение.Ссылка").Равно("Номенклатура.Родитель") + ; + + Запрос = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") + .Выбрать("Номенклатура.Ссылка, + |НоменклатураСоединение.Ссылка КАК НоменклатураСоединениеСсылка") + ; + Если ТипСоединения = "Левое" Тогда + Запрос + .ЛевоеСоединение("Справочник.Номенклатура КАК НоменклатураСоединение", ПредикатДляСоединения) + ; + ИначеЕсли ТипСоединения = "Правое" Тогда + Запрос + .ПравоеСоединение("Справочник.Номенклатура КАК НоменклатураСоединение", ПредикатДляСоединения) + ; + Иначе // Если ТипСоединения = "Внутреннее" Тогда + Запрос + .ВнутреннееСоединение("Справочник.Номенклатура КАК НоменклатураСоединение", ПредикатДляСоединения) + ; + КонецЕсли; + + ТаблицаЗначений = Запрос.ВТаблицуЗначений(); + + ЮТест.ОжидаетЧто(ТаблицаЗначений) + .ИмеетТип("Массив") + ; + ЮТест.ОжидаетЧто(ТаблицаЗначений.Количество()) + .Больше(0) + ; + ЮТест.ОжидаетЧто(ТаблицаЗначений[0]) + .ИмеетСвойство("Ссылка") + .ИмеетСвойство("НоменклатураСоединениеСсылка") + ; + +КонецПроцедуры + +Процедура ЛевоеСоединениеПоИсточникуЗапросу() Экспорт + + ЗапросДляСоединения = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") + .Псевдоним("НоменклатураСоединение") + ; + ПредикатДляСоединения = СхЗапрос.Предикат() + .Реквизит("Ссылка").Равно("Родитель") + ; + + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") + .Выбрать("Номенклатура.Ссылка, + |НоменклатураСоединение.Ссылка КАК НоменклатураСоединениеСсылка") + .ЛевоеСоединение(ЗапросДляСоединения, ПредикатДляСоединения) + .ВТаблицуЗначений() + ; + + ЮТест.ОжидаетЧто(ТаблицаЗначений) + .ИмеетТип("Массив") + ; + ЮТест.ОжидаетЧто(ТаблицаЗначений.Количество()) + .Больше(0) + ; + ЮТест.ОжидаетЧто(ТаблицаЗначений[0]) + .ИмеетСвойство("Ссылка") + .ИмеетСвойство("НоменклатураСоединениеСсылка") + ; + +КонецПроцедуры + +Процедура ЛевоеСоединениеСГлубокоВложеннымЗапросом() Экспорт + + ВложенныйЗапрос = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") + .Выбрать("Ссылка, Родитель") + .Псевдоним("ВложенныйЗапрос_0") + ; + + Для Сч = 1 По 9 Цикл + ВложенныйЗапрос = СхЗапрос.НовыйЗапрос(ВложенныйЗапрос) + .Выбрать("Ссылка, Родитель") + .Псевдоним("ВложенныйЗапрос_" + Сч) + ; + КонецЦикла; + + ПредикатДляСоединения = СхЗапрос.Предикат() + .Реквизит("Ссылка").Равно("Родитель") + ; + + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") + .Выбрать("Номенклатура.Ссылка, + |ВложенныйЗапрос_9.Ссылка КАК ВложенныйЗапрос_9Ссылка") + .ЛевоеСоединение(ВложенныйЗапрос, ПредикатДляСоединения) + .ВТаблицуЗначений() + ; + + ЮТест.ОжидаетЧто(ТаблицаЗначений) + .ИмеетТип("Массив") + .ИмеетДлинуБольше(0) + .КаждыйЭлементСоответствуетПредикату(ЮТест.Предикат() + .Реквизит("Ссылка").Заполнено()) + .ЛюбойЭлементСоответствуетПредикату(ЮТест.Предикат() + .Реквизит("ВложенныйЗапрос_9Ссылка").Заполнено()) + ; + +КонецПроцедуры + +Процедура ЛевоеСоединениеБезПредиката() Экспорт + + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("РегистрСведений.ПримененияЕНВД") + .Выбрать("ПримененияЕНВД.Организация КАК Организация, + |ПримененияЕНВДСоединение.Склад КАК Склад") + .ЛевоеСоединение("РегистрСведений.ПримененияЕНВД КАК ПримененияЕНВДСоединение") + .ВТаблицуЗначений() + ; + + ЮТест.ОжидаетЧто(ТаблицаЗначений) + .ИмеетТип("Массив") + ; + ЮТест.ОжидаетЧто(ТаблицаЗначений.Количество()) + .Больше(0) + ; + ЮТест.ОжидаетЧто(ТаблицаЗначений[0]) + .ИмеетСвойство("Организация") + .ИмеетСвойство("Склад") + ; + +КонецПроцедуры + +Процедура ЛевоеСоединениеНесколькоУсловийВПредикате() Экспорт + + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") + .Выбрать("Номенклатура.Ссылка, + |НоменклатураСоединение.Ссылка КАК НоменклатураСоединениеСсылка") + .ЛевоеСоединение("Справочник.Номенклатура КАК НоменклатураСоединение", СхЗапрос.Предикат() + .Реквизит("НоменклатураСоединение.Ссылка").Равно("Номенклатура.Родитель") + .Реквизит("НоменклатураСоединение.ЭтоГруппа").Равно("ИСТИНА")) + .ВТаблицуЗначений() + ; + + ЮТест.ОжидаетЧто(ТаблицаЗначений) + .ИмеетТип("Массив") + ; + ЮТест.ОжидаетЧто(ТаблицаЗначений.Количество()) + .Больше(0) + ; + ЮТест.ОжидаетЧто(ТаблицаЗначений[0]) + .ИмеетСвойство("Ссылка") + .ИмеетСвойство("НоменклатураСоединениеСсылка") + ; + +КонецПроцедуры + +Процедура ЛевоеСоединениеПредикатЭтоПараметр() Экспорт + + // Подготовка + МассивПараметров = Новый Массив; + МассивПараметров.Добавить(Новый Структура("ИмяПараметра, Значение", + "Родитель", СхЗапросТестСлужебныйВызовСервера.ПолучитьГруппуНоменклатуры())); + + // Выполнение + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") + .Выбрать("Номенклатура.Ссылка, + |НоменклатураСоединение.Ссылка КАК НоменклатураСоединениеСсылка") + .ЛевоеСоединение("Справочник.Номенклатура КАК НоменклатураСоединение", СхЗапрос.Предикат() + .Реквизит("НоменклатураСоединение.Родитель").Равно("&Родитель")) + .Параметры(МассивПараметров) + .ВТаблицуЗначений() + ; + + // Проверки + ЮТест.ОжидаетЧто(ТаблицаЗначений) + .ИмеетТип("Массив") + ; + ЮТест.ОжидаетЧто(ТаблицаЗначений.Количество()) + .Больше(0) + ; + ЮТест.ОжидаетЧто(ТаблицаЗначений[0]) + .ИмеетСвойство("Ссылка") + .ИмеетСвойство("НоменклатураСоединениеСсылка") + ; + +КонецПроцедуры + +Процедура ЛевоеСоединениеБезПсевдонимовВСоединении() Экспорт + + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") + .Выбрать("Номенклатура.Ссылка, Номенклатура1.Ссылка") + .ЛевоеСоединение("Справочник.Номенклатура", СхЗапрос.Предикат() + .Реквизит("Ссылка").Равно("Родитель") + .Реквизит("ЭтоГруппа").Равно("ИСТИНА")) + .ВТаблицуЗначений() + ; + + ЮТест.ОжидаетЧто(ТаблицаЗначений) + .ИмеетТип("Массив") + ; + ЮТест.ОжидаетЧто(ТаблицаЗначений.Количество()) + .Больше(0) + ; + ЮТест.ОжидаетЧто(ТаблицаЗначений[0]) + .ИмеетСвойство("Ссылка") + .ИмеетСвойство("Ссылка1") + ; + +КонецПроцедуры + +Процедура НесколькоЛевыхСоединений() Экспорт + + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") + .Выбрать("Номенклатура.Ссылка, Номенклатура1.Ссылка, Номенклатура2.Ссылка") + .ЛевоеСоединение("Справочник.Номенклатура", СхЗапрос.Предикат() + .Реквизит("Ссылка").Равно("Родитель") + .Реквизит("ЭтоГруппа").Равно("ИСТИНА")) + .ЛевоеСоединение("Справочник.Номенклатура", СхЗапрос.Предикат() + .Реквизит("Ссылка").Равно("Родитель") + .Реквизит("ЭтоГруппа").Равно("ИСТИНА")) + .ВТаблицуЗначений() + ; + + ЮТест.ОжидаетЧто(ТаблицаЗначений) + .ИмеетТип("Массив") + ; + ЮТест.ОжидаетЧто(ТаблицаЗначений.Количество()) + .Больше(0) + ; + ЮТест.ОжидаетЧто(ТаблицаЗначений[0]) + .ИмеетСвойство("Ссылка") + .ИмеетСвойство("Ссылка1") + .ИмеетСвойство("Ссылка2") + ; + +КонецПроцедуры + +#КонецОбласти + +#Область ВложенныеЗапросы + +Процедура ИсключениеВложенныйЗапросБезПсевдонима() Экспорт + + ВложенныйЗапрос = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура"); + + Запрос = СхЗапрос.НовыйЗапрос(ВложенныйЗапрос); + + ЮТест.ОжидаетЧто(Запрос) + .Метод("ВТаблицуЗначений") + .ВыбрасываетИсключение("У вложенного запроса обязательно должен быть псевдоним"); + +КонецПроцедуры + +Процедура ВложенныйЗапрос() Экспорт + + ВложенныйЗапрос = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") + .Псевдоним("ВложенныйЗапрос") + ; + + ТаблицаЗначений = СхЗапрос.НовыйЗапрос(ВложенныйЗапрос) + .ВТаблицуЗначений() + ; + + ЮТест.ОжидаетЧто(ТаблицаЗначений) + .ИмеетТип("Массив") + .ИмеетДлинуБольше(0) + ; + +КонецПроцедуры + +Процедура ОченьГлубокоВложенныйЗапрос() Экспорт + + ВложенныйЗапрос = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") + .Псевдоним("ВложенныйЗапрос_0") + ; + + Для Сч = 1 По 9 Цикл + ВложенныйЗапрос = СхЗапрос.НовыйЗапрос(ВложенныйЗапрос) + .Псевдоним("ВложенныйЗапрос_" + Сч) + ; + КонецЦикла; + + ТаблицаЗначений = СхЗапрос.НовыйЗапрос(ВложенныйЗапрос) + .ВТаблицуЗначений() + ; + + ЮТест.ОжидаетЧто(ТаблицаЗначений) + .ИмеетТип("Массив") + .ИмеетДлинуБольше(0) + ; + +КонецПроцедуры + +#КонецОбласти + +#Область Объединить + +Процедура Объединить() Экспорт + + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Документ.ПриобретениеТоваровУслуг") + .Объединить("Документ.РеализацияТоваровУслуг") + .ВТаблицуЗначений() + ; + + ЮТест.ОжидаетЧто(ТаблицаЗначений) + .ИмеетТип("Массив") + .ИмеетДлинуБольше(0) + .ЛюбойЭлементСоответствуетПредикату(ЮТест.Предикат() + .Реквизит("Ссылка").ИмеетТип("ДокументСсылка.ПриобретениеТоваровУслуг")) + .ЛюбойЭлементСоответствуетПредикату(ЮТест.Предикат() + .Реквизит("Ссылка").ИмеетТип("ДокументСсылка.РеализацияТоваровУслуг")) + ; + +КонецПроцедуры + +Процедура ОбъединитьВсе() Экспорт + + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Документ.ПриобретениеТоваровУслуг") + .ОбъединитьВсе("Документ.РеализацияТоваровУслуг") + .ВТаблицуЗначений() + ; + + ЮТест.ОжидаетЧто(ТаблицаЗначений) + .ИмеетТип("Массив") + .ИмеетДлинуБольше(0) + .ЛюбойЭлементСоответствуетПредикату(ЮТест.Предикат() + .Реквизит("Ссылка").ИмеетТип("ДокументСсылка.ПриобретениеТоваровУслуг")) + .ЛюбойЭлементСоответствуетПредикату(ЮТест.Предикат() + .Реквизит("Ссылка").ИмеетТип("ДокументСсылка.РеализацияТоваровУслуг")) + ; + +КонецПроцедуры + +Процедура ОбъединитьВсеНаЧетыреИсточника() Экспорт + + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Документ.ПриобретениеТоваровУслуг") + .ОбъединитьВсе("Документ.РеализацияТоваровУслуг") + .ОбъединитьВсе("Документ.ВозвратТоваровОтКлиента") + .ОбъединитьВсе("Документ.ВозвратТоваровПоставщику") + .ВТаблицуЗначений() + ; + + ЮТест.ОжидаетЧто(ТаблицаЗначений) + .ИмеетТип("Массив") + .ИмеетДлинуБольше(0) + .ЛюбойЭлементСоответствуетПредикату(ЮТест.Предикат() + .Реквизит("Ссылка").ИмеетТип("ДокументСсылка.ПриобретениеТоваровУслуг")) + .ЛюбойЭлементСоответствуетПредикату(ЮТест.Предикат() + .Реквизит("Ссылка").ИмеетТип("ДокументСсылка.РеализацияТоваровУслуг")) + .ЛюбойЭлементСоответствуетПредикату(ЮТест.Предикат() + .Реквизит("Ссылка").ИмеетТип("ДокументСсылка.ВозвратТоваровОтКлиента")) + .ЛюбойЭлементСоответствуетПредикату(ЮТест.Предикат() + .Реквизит("Ссылка").ИмеетТип("ДокументСсылка.ВозвратТоваровПоставщику")) + ; + +КонецПроцедуры + +Процедура ОбъединитьВсеСПолями() Экспорт + + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Документ.ПриобретениеТоваровУслуг") + .Выбрать("Ссылка, Дата, Номер") + .ОбъединитьВсе(СхЗапрос.НовыйЗапрос("Документ.РеализацияТоваровУслуг") + .Выбрать("Ссылка, Дата, Номер")) + .ВТаблицуЗначений() + ; + + ЮТест.ОжидаетЧто(ТаблицаЗначений) + .ИмеетТип("Массив") + .ИмеетДлинуБольше(0) + .ЛюбойЭлементСоответствуетПредикату(ЮТест.Предикат() + .Реквизит("Ссылка").ИмеетТип("ДокументСсылка.ПриобретениеТоваровУслуг")) + .ЛюбойЭлементСоответствуетПредикату(ЮТест.Предикат() + .Реквизит("Ссылка").ИмеетТип("ДокументСсылка.РеализацияТоваровУслуг")) + .КаждыйЭлементСоответствуетПредикату(ЮТест.Предикат() + .Реквизит("Дата").Заполнено() + .Реквизит("Номер").Заполнено()) + ; + +КонецПроцедуры + +Процедура ОбъединитьВсеСРазнымКоличествомПолей() Экспорт + + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Документ.ПриобретениеТоваровУслуг") + .Выбрать("Ссылка, Дата, Номер") + .ОбъединитьВсе(СхЗапрос.НовыйЗапрос("Документ.РеализацияТоваровУслуг") + .Выбрать("Ссылка, Дата, Номер, Партнер")) + .ВТаблицуЗначений() + ; + + ЮТест.ОжидаетЧто(ТаблицаЗначений) + .ИмеетТип("Массив") + .ИмеетДлинуБольше(0) + .ЛюбойЭлементСоответствуетПредикату(ЮТест.Предикат() + .Реквизит("Ссылка").ИмеетТип("ДокументСсылка.ПриобретениеТоваровУслуг") + .Реквизит("Партнер").Пусто()) + .ЛюбойЭлементСоответствуетПредикату(ЮТест.Предикат() + .Реквизит("Ссылка").ИмеетТип("ДокументСсылка.РеализацияТоваровУслуг") + .Реквизит("Партнер").Заполнено()) + .КаждыйЭлементСоответствуетПредикату(ЮТест.Предикат() + .Реквизит("Дата").Заполнено() + .Реквизит("Номер").Заполнено()) + ; + +КонецПроцедуры + +Процедура ОбъединитьВсеСВложеннымЗапросом() Экспорт + + ВложенныйЗапрос = СхЗапрос.НовыйЗапрос("Документ.РеализацияТоваровУслуг") + .Псевдоним("ВложенныйЗапрос") + .Выбрать("Ссылка, Дата, Номер, Партнер") + ; + + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Документ.ПриобретениеТоваровУслуг") + .Выбрать("Ссылка, Дата, Номер") + .ОбъединитьВсе(СхЗапрос.НовыйЗапрос(ВложенныйЗапрос) + .Выбрать("Ссылка, Дата, Номер")) + .ВТаблицуЗначений() + ; + + ЮТест.ОжидаетЧто(ТаблицаЗначений) + .ИмеетТип("Массив") + .ИмеетДлинуБольше(0) + .ЛюбойЭлементСоответствуетПредикату(ЮТест.Предикат() + .Реквизит("Ссылка").ИмеетТип("ДокументСсылка.ПриобретениеТоваровУслуг")) + .ЛюбойЭлементСоответствуетПредикату(ЮТест.Предикат() + .Реквизит("Ссылка").ИмеетТип("ДокументСсылка.РеализацияТоваровУслуг")) + .КаждыйЭлементСоответствуетПредикату(ЮТест.Предикат() + .Реквизит("Дата").Заполнено() + .Реквизит("Номер").Заполнено()) + ; + +КонецПроцедуры + +#КонецОбласти + +#Область Группировать + +Процедура Группировать() Экспорт + + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") + .Выбрать("Ссылка, ЭтоГруппа") + .Сгруппировать("ЭтоГруппа") + .ВТаблицуЗначений() + ; + + ЮТест.ОжидаетЧто(ТаблицаЗначений) + .ИмеетТип("Массив") + .ИмеетДлинуБольше(0) + ; + +КонецПроцедуры + +Процедура ГруппироватьКоличествоСтрокой() Экспорт + + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") + .Выбрать("КОЛИЧЕСТВО(Номенклатура.Ссылка) КАК КоличествоСсылок, ЭтоГруппа") + .Сгруппировать("ЭтоГруппа") + .ВТаблицуЗначений() + ; + + ЮТест.ОжидаетЧто(ТаблицаЗначений) + .ИмеетТип("Массив") + .ИмеетДлинуБольше(0) + ; + +КонецПроцедуры + +Процедура ГруппироватьКоличествоФункциейПолеСтрокой() Экспорт + + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") + .Выбрать("ЭтоГруппа") + .Количество("Ссылка КАК КоличествоСсылок") + .Сгруппировать("ЭтоГруппа") + .ВТаблицуЗначений() + ; + + ЮТест.ОжидаетЧто(ТаблицаЗначений) + .ИмеетТип("Массив") + .ИмеетДлину(2) + ; + +КонецПроцедуры + +Процедура ГруппироватьКоличествоФункциейПолеСтруктурой() Экспорт + + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") + .Количество(СхЗапрос.НовоеПоле("Ссылка",, "КоличествоСсылок")) + .Сгруппировать("ЭтоГруппа") + .ВТаблицуЗначений() + ; + + ЮТест.ОжидаетЧто(ТаблицаЗначений) + .ИмеетТип("Массив") + .ИмеетДлину(2) + ; + +КонецПроцедуры + +Процедура ГруппироватьСуммаФункциейПолеСтрокой() Экспорт + + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Документ.РеализацияТоваровУслуг.Товары") + .Выбрать("Номенклатура") + .Сумма("Количество КАК КоличествоНоменклатуры") + .Сгруппировать("Номенклатура") + .ВТаблицуЗначений() + ; + + ЮТест.ОжидаетЧто(ТаблицаЗначений) + .ИмеетТип("Массив") + .ИмеетДлинуБольше(0) + ; + +КонецПроцедуры + +Процедура ГруппироватьМинимумФункциейПолеСтрокой() Экспорт + + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Документ.РеализацияТоваровУслуг.Товары") + .Выбрать("Номенклатура") + .Минимум("Количество КАК МинимальноеКоличествоНоменклатуры") + .Сгруппировать("Номенклатура") + .ВТаблицуЗначений() + ; + + ЮТест.ОжидаетЧто(ТаблицаЗначений) + .ИмеетТип("Массив") + .ИмеетДлинуБольше(0) + .КаждыйЭлементСоответствуетПредикату(ЮТест.Предикат() + .Реквизит("МинимальноеКоличествоНоменклатуры").Меньше(200)) + ; + +КонецПроцедуры + +Процедура ГруппироватьМаксимумФункциейПолеСтрокой() Экспорт + + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Документ.РеализацияТоваровУслуг.Товары") + .Выбрать("Номенклатура") + .Максимум("Количество КАК МаксимальноеКоличествоНоменклатуры") + .Сгруппировать("Номенклатура") + .ВТаблицуЗначений() + ; + + ЮТест.ОжидаетЧто(ТаблицаЗначений) + .ИмеетТип("Массив") + .ИмеетДлинуБольше(0) + .КаждыйЭлементСоответствуетПредикату(ЮТест.Предикат() + .Реквизит("МаксимальноеКоличествоНоменклатуры").Больше(0)) + ; + +КонецПроцедуры + +#КонецОбласти + +#Область Прочее + +Процедура Порядок() Экспорт + + // Выполнение + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") + .Выбрать("Ссылка, ЭтоГруппа") + .Упорядочить("ЭтоГруппа, Наименование") + .ВТаблицуЗначений() + ; + + // Проверки + СпсисокЭлементов = Новый СписокЗначений; + Сч = 0; + Для каждого СтрокаТаблицы Из ТаблицаЗначений Цикл + Если Не СтрокаТаблицы.ЭтоГруппа Тогда + СпсисокЭлементов.Добавить(Сч); + Иначе + Прервать; + КонецЕсли; + Сч = Сч + 1; + КонецЦикла; + СпсисокЭлементов.СортироватьПоЗначению(НаправлениеСортировки.Убыв); + Для каждого СтрокаТаблицыЭлементы Из СпсисокЭлементов Цикл + ТаблицаЗначений.Удалить(СтрокаТаблицыЭлементы.Значение); + КонецЦикла; + + ЮТест.ОжидаетЧто(СпсисокЭлементов.Количество(), "Количество элементов") + .Больше(0) + ; + ЮТест.ОжидаетЧто(ТаблицаЗначений) + .ИмеетТип("Массив") + .ИмеетДлинуБольше(0, "Количество групп") + .КаждыйЭлементСоответствуетПредикату(ЮТест.Предикат() + .Реквизит("ЭтоГруппа").Равно(Истина)) + ; + +КонецПроцедуры + +Процедура ПорядокУбывания() Экспорт + + // Выполнение + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") + .Выбрать("Ссылка, ЭтоГруппа") + .Упорядочить("ЭтоГруппа УБЫВ, Наименование") + .ВТаблицуЗначений() + ; + + // Проверки + СпсисокГрупп = Новый СписокЗначений; + Сч = 0; + Для каждого СтрокаТаблицы Из ТаблицаЗначений Цикл + Если СтрокаТаблицы.ЭтоГруппа Тогда + СпсисокГрупп.Добавить(Сч); + Иначе + Прервать; + КонецЕсли; + Сч = Сч + 1; + КонецЦикла; + СпсисокГрупп.СортироватьПоЗначению(НаправлениеСортировки.Убыв); + Для каждого СтрокаТаблицыГруппы Из СпсисокГрупп Цикл + ТаблицаЗначений.Удалить(СтрокаТаблицыГруппы.Значение); + КонецЦикла; + + ЮТест.ОжидаетЧто(СпсисокГрупп.Количество(), "Количество групп") + .Больше(0) + ; + ЮТест.ОжидаетЧто(ТаблицаЗначений) + .ИмеетТип("Массив") + .ИмеетДлинуБольше(0, "Количество элементов") + .КаждыйЭлементСоответствуетПредикату(ЮТест.Предикат() + .Реквизит("ЭтоГруппа").Равно(Ложь)) + ; + +КонецПроцедуры + +Процедура Итоги() Экспорт + + ТаблицаЗначений = СхЗапрос.НовыйЗапрос("Справочник.Номенклатура") + .Итоги("ЭтоГруппа") + .ВТаблицуЗначений() + ; + + ЮТест.ОжидаетЧто(ТаблицаЗначений) + .ИмеетТип("Массив") + .ИмеетДлинуБольше(0) + .ЛюбойЭлементСодержитСвойство("ссылка", Null) + ; + +КонецПроцедуры + +#КонецОбласти + +#Область РеальныеЗапросы + +Процедура АдресныйКлассификаторСлужебный_ТаблицаАдресныхСокращений() Экспорт + + // Подготовка + НаименованияАдресныхОбъектов = Новый Массив; + НаименованияАдресныхОбъектов.Добавить("Абонентский Ящик"); + + // Выполнение + Запрос = СхЗапрос.НовыйЗапрос("РегистрСведений.УровниСокращенийАдресныхСведений") + .Выбрать("Значение КАК Наименование, Сокращение") + .Сгруппировать("Значение, Сокращение") + .Упорядочить("Наименование"); + + Если ТипЗнч(НаименованияАдресныхОбъектов) = Тип("Массив") И НаименованияАдресныхОбъектов.Количество() > 0 Тогда + Запрос = Запрос + .Где(СхЗапрос.Предикат() + .Реквизит("Значение").ВСписке(НаименованияАдресныхОбъектов)); + КонецЕсли; + + Результат = Запрос.ВТаблицуЗначений(); + + // Проверки + ЮТест.ОжидаетЧто(Результат) + .ИмеетТип("Массив") + ; + ЮТест.ОжидаетЧто(Результат.Количество()) + .Равно(1) + ; + +КонецПроцедуры + +#КонецОбласти + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Процедура ПодготовитьСписокНоменклатуры() + + ВидНоменклатуры = ЮТест.Данные().КонструкторОбъекта("Справочники.ВидыНоменклатуры") + .Фикция("Наименование") + .Установить("ТипНоменклатуры", ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Товар")) + .Записать() + ; + + Массив = Новый Массив; + + Для Сч = 1 По 5 Цикл + + Номенклатура = ЮТест.Данные().КонструкторОбъекта("Справочники.Номенклатура") + .Фикция("Наименование") + .Установить("ВидНоменклатуры", ВидНоменклатуры) + .Установить("ТипНоменклатуры", ПредопределенноеЗначение("Перечисление.ТипыНоменклатуры.Товар")) + .Установить("ИспользованиеХарактеристик", + ПредопределенноеЗначение("Перечисление.ВариантыИспользованияХарактеристикНоменклатуры.НеИспользовать")) + .Записать() + ; + + Массив.Добавить(Номенклатура); + + КонецЦикла; + + Контекст = ЮТест.КонтекстТеста(); + Контекст.Вставить("МассивНоменклатуры", Массив); + +КонецПроцедуры + +#КонецОбласти diff --git a/src/cfe/CommonModules/СЗ_ЗапросТестСлужебныйВызовСервера.xml b/src/cfe/CommonModules/СхЗапросТестСлужебныйВызовСервера.xml similarity index 93% rename from src/cfe/CommonModules/СЗ_ЗапросТестСлужебныйВызовСервера.xml rename to src/cfe/CommonModules/СхЗапросТестСлужебныйВызовСервера.xml index b3c2baf..5d36a9a 100644 --- a/src/cfe/CommonModules/СЗ_ЗапросТестСлужебныйВызовСервера.xml +++ b/src/cfe/CommonModules/СхЗапросТестСлужебныйВызовСервера.xml @@ -1,23 +1,23 @@ - - - - - СЗ_ЗапросТестСлужебныйВызовСервера - - - ru - Схема запроса: запрос тест служебный вызов сервера - - - - false - false - true - false - false - true - false - DontUse - - + + + + + СхЗапросТестСлужебныйВызовСервера + + + ru + Схема запроса: запрос тест служебный вызов сервера + + + + false + false + true + false + false + true + false + DontUse + + \ No newline at end of file diff --git a/src/cfe/CommonModules/СЗ_ЗапросТестСлужебныйВызовСервера/Ext/Module.bsl b/src/cfe/CommonModules/СхЗапросТестСлужебныйВызовСервера/Ext/Module.bsl similarity index 97% rename from src/cfe/CommonModules/СЗ_ЗапросТестСлужебныйВызовСервера/Ext/Module.bsl rename to src/cfe/CommonModules/СхЗапросТестСлужебныйВызовСервера/Ext/Module.bsl index d4bd3bb..89ce16b 100644 --- a/src/cfe/CommonModules/СЗ_ЗапросТестСлужебныйВызовСервера/Ext/Module.bsl +++ b/src/cfe/CommonModules/СхЗапросТестСлужебныйВызовСервера/Ext/Module.bsl @@ -1,49 +1,49 @@ - -Функция ПолучитьГруппуНоменклатуры() Экспорт - - Запрос = Новый Запрос; - Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 - | Номенклатура.Ссылка КАК Ссылка - |ИЗ - | Справочник.Номенклатура КАК Номенклатура - |ГДЕ - | Номенклатура.ЭтоГруппа"; - - Выборка = Запрос.Выполнить().Выбрать(); - Выборка.Следующий(); - - Возврат Выборка.Ссылка; - -КонецФункции - -Функция ПолучитьНоменклатуруНеСписке(МассивНоменклатуры) Экспорт - - Запрос = Новый Запрос; - Запрос.Текст = "ВЫБРАТЬ - | Номенклатура.Ссылка КАК Ссылка - |ИЗ - | Справочник.Номенклатура КАК Номенклатура - |ГДЕ - | Номенклатура.Ссылка НЕ В (&МассивНоменклатуры)"; - - Запрос.УстановитьПараметр("МассивНоменклатуры", МассивНоменклатуры); - - Возврат Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"); - -КонецФункции - -Процедура ПроверитьПодобноПоРегулярномуВыражению(ТаблицаЗначений) Экспорт - - ЮТест.ОжидаетЧто(ТаблицаЗначений) - .КаждыйЭлементСоответствуетПредикату(ЮТест.Предикат() - .Реквизит("Наименование").СодержитСтрокуПоШаблону("(Х|х)леб")) - -КонецПроцедуры - -Процедура ПроверитьНеПодобноПоРегулярномуВыражению(ТаблицаЗначений) Экспорт - - ЮТест.ОжидаетЧто(ТаблицаЗначений) - .КаждыйЭлементСоответствуетПредикату(ЮТест.Предикат() - .Реквизит("Наименование").НеСодержитСтрокуПоШаблону("(Х|х)леб")) - -КонецПроцедуры + +Функция ПолучитьГруппуНоменклатуры() Экспорт + + Запрос = Новый Запрос; + Запрос.Текст = "ВЫБРАТЬ ПЕРВЫЕ 1 + | Номенклатура.Ссылка КАК Ссылка + |ИЗ + | Справочник.Номенклатура КАК Номенклатура + |ГДЕ + | Номенклатура.ЭтоГруппа"; + + Выборка = Запрос.Выполнить().Выбрать(); + Выборка.Следующий(); + + Возврат Выборка.Ссылка; + +КонецФункции + +Функция ПолучитьНоменклатуруНеСписке(МассивНоменклатуры) Экспорт + + Запрос = Новый Запрос; + Запрос.Текст = "ВЫБРАТЬ + | Номенклатура.Ссылка КАК Ссылка + |ИЗ + | Справочник.Номенклатура КАК Номенклатура + |ГДЕ + | Номенклатура.Ссылка НЕ В (&МассивНоменклатуры)"; + + Запрос.УстановитьПараметр("МассивНоменклатуры", МассивНоменклатуры); + + Возврат Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("Ссылка"); + +КонецФункции + +Процедура ПроверитьПодобноПоРегулярномуВыражению(ТаблицаЗначений) Экспорт + + ЮТест.ОжидаетЧто(ТаблицаЗначений) + .КаждыйЭлементСоответствуетПредикату(ЮТест.Предикат() + .Реквизит("Наименование").СодержитСтрокуПоШаблону("(Х|х)леб")) + +КонецПроцедуры + +Процедура ПроверитьНеПодобноПоРегулярномуВыражению(ТаблицаЗначений) Экспорт + + ЮТест.ОжидаетЧто(ТаблицаЗначений) + .КаждыйЭлементСоответствуетПредикату(ЮТест.Предикат() + .Реквизит("Наименование").НеСодержитСтрокуПоШаблону("(Х|х)леб")) + +КонецПроцедуры diff --git a/src/cfe/CommonModules/СхОбщегоНазначенийКлиентСервер.xml b/src/cfe/CommonModules/СхОбщегоНазначенийКлиентСервер.xml new file mode 100644 index 0000000..3d160bc --- /dev/null +++ b/src/cfe/CommonModules/СхОбщегоНазначенийКлиентСервер.xml @@ -0,0 +1,23 @@ + + + + + СхОбщегоНазначенийКлиентСервер + + + ru + Схема запроса: общего назначений клиент-сервер + + + + false + true + true + false + false + false + false + DontUse + + + \ No newline at end of file diff --git a/src/cfe/CommonModules/СхОбщегоНазначенийКлиентСервер/Ext/Module.bsl b/src/cfe/CommonModules/СхОбщегоНазначенийКлиентСервер/Ext/Module.bsl new file mode 100644 index 0000000..171a5c6 --- /dev/null +++ b/src/cfe/CommonModules/СхОбщегоНазначенийКлиентСервер/Ext/Module.bsl @@ -0,0 +1,49 @@ + +#Область ПрограммныйИнтерфейс + +Функция ПодготовиьРеквизитСУчетомФункции(Предикат) Экспорт + + Если ПустаяСтрока(Предикат.ИмяФункции) Тогда + Возврат Предикат.ИмяРеквизита; + КонецЕсли; + + Если Предикат.ИмяФункции = "Выразить" Тогда + Возврат СтрШаблон("ВЫРАЗИТЬ(%1 КАК %2)", + Предикат.ИмяРеквизита, + ПолучитьТипИзОписания(Предикат.ПараметрыФункции[0])); + ИначеЕсли Предикат.ИмяФункции = "ВыборКогда" Тогда + ВызватьИсключение "ПодготовиьРеквизитСУчетомФункции: не реализовано"; + + Возврат СтрШаблон("ВЫБОР + | КОГДА %1 + | ТОГДА %2 + | ИНАЧЕ %3 + |КОНЕЦ", , , ); + КонецЕсли; + + ТекстИсключения = СтрШаблон("ПодготовиьРеквизитСУчетомФункции: неизвестная функция %1", + Предикат.ИмяФункции); + ВызватьИсключение ТекстИсключения; + +КонецФункции + +Функция ПолучитьТипИзОписания(ОписаниеТипа) Экспорт + + Если ОписаниеТипа.СодержитТип(Тип("Строка")) Тогда + Возврат СтрШаблон("СТРОКА(%1)", + Формат(ОписаниеТипа.КвалификаторыСтроки.Длина, "ЧГ=0")) + ИначеЕсли ОписаниеТипа.СодержитТип(Тип("Число")) Тогда + Возврат СтрШаблон("ЧИСЛО(%1.%2)", + Формат(ОписаниеТипа.КвалификаторыЧисла.Разрядность, "ЧГ=0"), + Формат(ОписаниеТипа.КвалификаторыЧисла.Разрядность.ДробнойЧасти, "ЧГ=0")) + ИначеЕсли ОписаниеТипа.СодержитТип(Тип("Дата")) Тогда + Возврат "ДАТА"; + Иначе + // TODO: Ссылочные типы данных + КонецЕсли; + + ВызватьИсключение "ПолучитьТипИзОписания: неизвестный тип данных для выражения"; + +КонецФункции + +#КонецОбласти diff --git a/src/cfe/CommonModules/СЗ_ПроцессорыПредикатовКлиентСервер.xml b/src/cfe/CommonModules/СхПроцессорыПредикатовКлиентСервер.xml similarity index 93% rename from src/cfe/CommonModules/СЗ_ПроцессорыПредикатовКлиентСервер.xml rename to src/cfe/CommonModules/СхПроцессорыПредикатовКлиентСервер.xml index 41ea9b9..3f41274 100644 --- a/src/cfe/CommonModules/СЗ_ПроцессорыПредикатовКлиентСервер.xml +++ b/src/cfe/CommonModules/СхПроцессорыПредикатовКлиентСервер.xml @@ -2,7 +2,7 @@ - СЗ_ПроцессорыПредикатовКлиентСервер + СхПроцессорыПредикатовКлиентСервер ru diff --git a/src/cfe/CommonModules/СЗ_ПроцессорыПредикатовКлиентСервер/Ext/Module.bsl b/src/cfe/CommonModules/СхПроцессорыПредикатовКлиентСервер/Ext/Module.bsl similarity index 85% rename from src/cfe/CommonModules/СЗ_ПроцессорыПредикатовКлиентСервер/Ext/Module.bsl rename to src/cfe/CommonModules/СхПроцессорыПредикатовКлиентСервер/Ext/Module.bsl index 806afcd..a9f9877 100644 --- a/src/cfe/CommonModules/СЗ_ПроцессорыПредикатовКлиентСервер/Ext/Module.bsl +++ b/src/cfe/CommonModules/СхПроцессорыПредикатовКлиентСервер/Ext/Module.bsl @@ -4,15 +4,15 @@ // Возвращает обработку с контекстом и методами наполнения контекста предиката // // Возвращаемое значение: -// - ОбработкаОбъект.СЗ_ПроцессорПредикатов - менеджер для серверного формирования предиката +// - ОбработкаОбъект.СхПроцессорПредикатов - менеджер для серверного формирования предиката // - ФормаКлиентскогоПриложения - менеджер для клиентского формирования предиката // Функция НовыйПроцессорПредикатов() Экспорт #Если Клиент Тогда - ПроцессорПредикатов = ПолучитьФорму("Обработка.СЗ_ПроцессорПредикатов.Форма.Форма"); + ПроцессорПредикатов = ПолучитьФорму("Обработка.СхПроцессорПредикатов.Форма.Форма"); #Иначе - ПроцессорПредикатов = Обработки.СЗ_ПроцессорПредикатов.Создать(); + ПроцессорПредикатов = Обработки.СхПроцессорПредикатов.Создать(); #КонецЕсли Возврат ПроцессорПредикатов; diff --git a/src/cfe/CommonModules/СЗ_ПроцессорыПредикатовСлужебныйКлиентСервер.xml b/src/cfe/CommonModules/СхПроцессорыПредикатовСлужебныйКлиентСервер.xml similarity index 92% rename from src/cfe/CommonModules/СЗ_ПроцессорыПредикатовСлужебныйКлиентСервер.xml rename to src/cfe/CommonModules/СхПроцессорыПредикатовСлужебныйКлиентСервер.xml index 34f2de9..d622449 100644 --- a/src/cfe/CommonModules/СЗ_ПроцессорыПредикатовСлужебныйКлиентСервер.xml +++ b/src/cfe/CommonModules/СхПроцессорыПредикатовСлужебныйКлиентСервер.xml @@ -2,7 +2,7 @@ - СЗ_ПроцессорыПредикатовСлужебныйКлиентСервер + СхПроцессорыПредикатовСлужебныйКлиентСервер ru diff --git a/src/cfe/CommonModules/СхПроцессорыПредикатовСлужебныйКлиентСервер/Ext/Module.bsl b/src/cfe/CommonModules/СхПроцессорыПредикатовСлужебныйКлиентСервер/Ext/Module.bsl new file mode 100644 index 0000000..e58ebf5 --- /dev/null +++ b/src/cfe/CommonModules/СхПроцессорыПредикатовСлужебныйКлиентСервер/Ext/Module.bsl @@ -0,0 +1,81 @@ + +#Область ПрограммныйИнтерфейс + +// Устанавливает имя реквизита, все последующие условия будут относится к нему +// +// Параметры: +// Предикат - +// ИмяРеквизита - Строка - имя реквизита +// +Процедура УстановитьИмяРеквизита(Предикат, ИмяРеквизита) Экспорт + + Если Предикат = Неопределено Тогда + Предикат = Новый Структура("ИмяРеквизита, ИмяФункции, ПараметрыФункции, Условия", + "", "", Новый Массив, Новый Массив); + КонецЕсли; + + Предикат.ИмяРеквизита = ИмяРеквизита; + +КонецПроцедуры + +// +// +Процедура УстановитьРеквизитВыборКогда(Предикат, ИмяРеквизита, ЗначениеИстина, ЗначениеЛожь) Экспорт + + Если Предикат = Неопределено Тогда + Предикат = Новый Структура("ИмяРеквизита, ИмяФункции, ПараметрыФункции, Условия", + "", "", Новый Массив, Новый Массив); + КонецЕсли; + + ПараметрыФункции = Новый Массив; + ПараметрыФункции.Добавить(ЗначениеИстина); + ПараметрыФункции.Добавить(ЗначениеЛожь); + + Предикат.ИмяРеквизита = ИмяРеквизита; + Предикат.ИмяФункции = "ВыборКогда"; + Предикат.ПараметрыФункции = ПараметрыФункции; + +КонецПроцедуры + +// +// +Процедура УстановитьРеквизитВыразить(Предикат, ИмяРеквизита, ОписаниеТипа) Экспорт + + Если Предикат = Неопределено Тогда + Предикат = Новый Структура("ИмяРеквизита, ИмяФункции, ПараметрыФункции, Условия", + "", "", Новый Массив, Новый Массив); + КонецЕсли; + + ПараметрыФункции = Новый Массив; + ПараметрыФункции.Добавить(ОписаниеТипа); + + Предикат.ИмяРеквизита = ИмяРеквизита; + Предикат.ИмяФункции = "Выразить"; + Предикат.ПараметрыФункции = ПараметрыФункции; + +КонецПроцедуры + +// Устанавливает вид и значение сравнения для условия +// +// Параметры: +// Предикат - ОбработкаОбъект.СхПроцессорПредикатов - +// - ФормаКлиентскогоПриложения - +// ВидСравнения - Строка - +// Значение - Производьный - +// +Процедура УстановитьПредикат(Предикат, ВидСравнения, Значение) Экспорт + + Если Предикат = Неопределено Или ПустаяСтрока(Предикат.ИмяРеквизита) Тогда + ВызватьИсключение "Ошибочный порядок вызова функций формирования предиката"; + КонецЕсли; + + Условие = Новый Структура("ИмяРеквизита, ВидСравнения, Значение", + СхОбщегоНазначенийКлиентСервер.ПодготовиьРеквизитСУчетомФункции(Предикат), + ВидСравнения, + Значение); + + Предикат.Условия.Добавить(Условие); + +КонецПроцедуры + +#КонецОбласти diff --git a/src/cfe/CommonModules/СЗ_ПроцессорыСхемЗапросаКлиентСервер.xml b/src/cfe/CommonModules/СхПроцессорыСхемЗапросаКлиентСервер.xml similarity index 93% rename from src/cfe/CommonModules/СЗ_ПроцессорыСхемЗапросаКлиентСервер.xml rename to src/cfe/CommonModules/СхПроцессорыСхемЗапросаКлиентСервер.xml index bd27893..57e827c 100644 --- a/src/cfe/CommonModules/СЗ_ПроцессорыСхемЗапросаКлиентСервер.xml +++ b/src/cfe/CommonModules/СхПроцессорыСхемЗапросаКлиентСервер.xml @@ -2,7 +2,7 @@ - СЗ_ПроцессорыСхемЗапросаКлиентСервер + СхПроцессорыСхемЗапросаКлиентСервер ru diff --git a/src/cfe/CommonModules/СЗ_ПроцессорыСхемЗапросаКлиентСервер/Ext/Module.bsl b/src/cfe/CommonModules/СхПроцессорыСхемЗапросаКлиентСервер/Ext/Module.bsl similarity index 81% rename from src/cfe/CommonModules/СЗ_ПроцессорыСхемЗапросаКлиентСервер/Ext/Module.bsl rename to src/cfe/CommonModules/СхПроцессорыСхемЗапросаКлиентСервер/Ext/Module.bsl index 3c6453b..6ff9698 100644 --- a/src/cfe/CommonModules/СЗ_ПроцессорыСхемЗапросаКлиентСервер/Ext/Module.bsl +++ b/src/cfe/CommonModules/СхПроцессорыСхемЗапросаКлиентСервер/Ext/Module.bsl @@ -10,15 +10,15 @@ // Разрешенные - Булево - признак ограничения выборки с применением RLS // // Возвращаемое значение: -// - ОбработкаОбъект.СЗ_ПроцессорСхемЗапроса - менеджер для серверного формирования запроса +// - ОбработкаОбъект.СхПроцессорСхемЗапроса - менеджер для серверного формирования запроса // - ФормаКлиентскогоПриложения - менеджер для клиентского формирования запроса // Функция НовыйПроцессорСхемЗапроса(ИсточникДанных, Первые, Различные, Разрешенные) Экспорт #Если Клиент Тогда - ПроцессорСхемЗапроса = ПолучитьФорму("Обработка.СЗ_ПроцессорСхемЗапроса.Форма.Форма"); + ПроцессорСхемЗапроса = ПолучитьФорму("Обработка.СхПроцессорСхемЗапроса.Форма.Форма"); #Иначе - ПроцессорСхемЗапроса = Обработки.СЗ_ПроцессорСхемЗапроса.Создать(); + ПроцессорСхемЗапроса = Обработки.СхПроцессорСхемЗапроса.Создать(); #КонецЕсли ПроцессорСхемЗапроса.УстановитьИсточникДанных(ИсточникДанных, Первые, Различные, Разрешенные); diff --git a/src/cfe/CommonModules/СЗ_ПроцессорыСхемЗапросаСлужебный.xml b/src/cfe/CommonModules/СхПроцессорыСхемЗапросаСлужебный.xml similarity index 93% rename from src/cfe/CommonModules/СЗ_ПроцессорыСхемЗапросаСлужебный.xml rename to src/cfe/CommonModules/СхПроцессорыСхемЗапросаСлужебный.xml index f7c21d9..ec22527 100644 --- a/src/cfe/CommonModules/СЗ_ПроцессорыСхемЗапросаСлужебный.xml +++ b/src/cfe/CommonModules/СхПроцессорыСхемЗапросаСлужебный.xml @@ -2,7 +2,7 @@ - СЗ_ПроцессорыСхемЗапросаСлужебный + СхПроцессорыСхемЗапросаСлужебный ru diff --git a/src/cfe/CommonModules/СЗ_ПроцессорыСхемЗапросаСлужебный/Ext/Module.bsl b/src/cfe/CommonModules/СхПроцессорыСхемЗапросаСлужебный/Ext/Module.bsl similarity index 91% rename from src/cfe/CommonModules/СЗ_ПроцессорыСхемЗапросаСлужебный/Ext/Module.bsl rename to src/cfe/CommonModules/СхПроцессорыСхемЗапросаСлужебный/Ext/Module.bsl index fc02b60..ba9c56b 100644 --- a/src/cfe/CommonModules/СЗ_ПроцессорыСхемЗапросаСлужебный/Ext/Module.bsl +++ b/src/cfe/CommonModules/СхПроцессорыСхемЗапросаСлужебный/Ext/Module.bsl @@ -59,7 +59,7 @@ // Соединения добавляются раньше всех чтобы к моменту добавления полей у нас // уже были все возможные источники данных ДобавитьСоединения(Оператор, Запрос, СтруктураСхемыЗапроса); - ДобавитьПоля(ЗапросПакета, Оператор, СтруктураСхемыЗапроса, ЭтоПоляИзВложенногоЗапроса); + ДобавитьПоля(ЗапросПакета, Оператор, Запрос, СтруктураСхемыЗапроса, ЭтоПоляИзВложенногоЗапроса); ДобавитьУсловия(Оператор, Запрос, СтруктураСхемыЗапроса); ДобавитьГруппировку(Оператор, СтруктураСхемыЗапроса); ДобавитьПорядок(ЗапросПакета, СтруктураСхемыЗапроса); @@ -124,35 +124,38 @@ КонецФункции -Процедура ДобавитьПоля(ЗапросПакета, Оператор, СтруктураСхемыЗапроса, ЭтоПоляИзВложенногоЗапроса = Ложь) +Процедура ДобавитьПоля(ЗапросПакета, Оператор, Запрос, СтруктураСхемыЗапроса, ЭтоПоляИзВложенногоЗапроса = Ложь) Если СтруктураСхемыЗапроса.Свойство("Поля") И ТипЗнч(СтруктураСхемыЗапроса.Поля) = Тип("Массив") И СтруктураСхемыЗапроса.Поля.Количество() > 0 Тогда Для каждого Поле Из СтруктураСхемыЗапроса.Поля Цикл + Если Не Поле.Источник = Неопределено Тогда ИсточникПоля = Оператор.Источники.НайтиПоПсевдониму(Поле.Источник); Иначе ИсточникПоля = Оператор.Источники[0]; КонецЕсли; - Если Не ИсточникПоля = Неопределено Тогда - ДоступноеПоле = ИсточникПоля.Источник.ДоступныеПоля.Найти(Поле.ИмяПоля); - Если Не ДоступноеПоле = Неопределено Тогда - Если Не ЭтоПоляИзВложенногоЗапроса Тогда - НовоеПоле = Оператор.ВыбираемыеПоля.Добавить(ДоступноеПоле); - Иначе - НовоеПоле = Оператор.ВыбираемыеПоля.Добавить(ДоступноеПоле, - ИсточникПоля.Источник.ДоступныеПоля.Индекс(ДоступноеПоле)); - КонецЕсли; - Если Не Поле.Псевдоним = Неопределено Тогда - ЗапросПакета.Колонки[ЗапросПакета.Колонки.Количество() - 1].Псевдоним = Поле.Псевдоним; - КонецЕсли; + ДоступноеПоле = ИсточникПоля.Источник.ДоступныеПоля.Найти(Поле.ИмяПоля); + Если Не ДоступноеПоле = Неопределено Тогда + Если Не ЭтоПоляИзВложенногоЗапроса Тогда + Оператор.ВыбираемыеПоля.Добавить(ДоступноеПоле); Иначе - ВызватьИсключение СтрШаблон("Поле %1 в источнике не определено", Поле.ИмяПоля); + Оператор.ВыбираемыеПоля.Добавить(ДоступноеПоле, + ИсточникПоля.Источник.ДоступныеПоля.Индекс(ДоступноеПоле)); КонецЕсли; + ИначеЕсли Поле.Источник = Неопределено Тогда + Оператор.ВыбираемыеПоля.Добавить(Поле.ИмяПоля); + Иначе + ВызватьИсключение СтрШаблон("ДобавитьПоля: поле %1 в источнике не определено", Поле.ИмяПоля); КонецЕсли; + + Если Не Поле.Псевдоним = Неопределено Тогда + ЗапросПакета.Колонки[ЗапросПакета.Колонки.Количество() - 1].Псевдоним = Поле.Псевдоним; + КонецЕсли; + КонецЦикла; Иначе ЕстьСсылка = Ложь; @@ -179,10 +182,13 @@ Если СтруктураСхемыЗапроса.Свойство("Условия") И ТипЗнч(СтруктураСхемыЗапроса.Условия) = Тип("Массив") Тогда Для каждого Условие Из СтруктураСхемыЗапроса.Условия Цикл - // Такая ситуация может возникнуть когда передают два параметра для функции МЕЖДУ + // Такая ситуация может возникнуть когда передают два параметра для функции МЕЖДУ. + // Второй параметр в массиве условий идёт с пустрой строкой в переменной УсловиеСтрокой Если Не ПустаяСтрока(Условие.УсловиеСтрокой) Тогда Оператор.Отбор.Добавить(Условие.УсловиеСтрокой); КонецЕсли; + // TODO: Можно Условие.ИмяПараметра и Условие.Значение отсюда убрать + // и перенести это в секцию "Параметры". Рефакторинг! Запрос.УстановитьПараметр(Условие.ИмяПараметра, Условие.Значение); КонецЦикла; КонецЕсли; diff --git a/src/cfe/CommonModules/СЗ_ПроцессорыСхемЗапросаСлужебныйВызовСервера.xml b/src/cfe/CommonModules/СхПроцессорыСхемЗапросаСлужебныйВызовСервера.xml similarity index 92% rename from src/cfe/CommonModules/СЗ_ПроцессорыСхемЗапросаСлужебныйВызовСервера.xml rename to src/cfe/CommonModules/СхПроцессорыСхемЗапросаСлужебныйВызовСервера.xml index aaa5f16..35eb09a 100644 --- a/src/cfe/CommonModules/СЗ_ПроцессорыСхемЗапросаСлужебныйВызовСервера.xml +++ b/src/cfe/CommonModules/СхПроцессорыСхемЗапросаСлужебныйВызовСервера.xml @@ -2,7 +2,7 @@ - СЗ_ПроцессорыСхемЗапросаСлужебныйВызовСервера + СхПроцессорыСхемЗапросаСлужебныйВызовСервера ru diff --git a/src/cfe/CommonModules/СЗ_ПроцессорыСхемЗапросаСлужебныйВызовСервера/Ext/Module.bsl b/src/cfe/CommonModules/СхПроцессорыСхемЗапросаСлужебныйВызовСервера/Ext/Module.bsl similarity index 90% rename from src/cfe/CommonModules/СЗ_ПроцессорыСхемЗапросаСлужебныйВызовСервера/Ext/Module.bsl rename to src/cfe/CommonModules/СхПроцессорыСхемЗапросаСлужебныйВызовСервера/Ext/Module.bsl index 2eadc1f..be094aa 100644 --- a/src/cfe/CommonModules/СЗ_ПроцессорыСхемЗапросаСлужебныйВызовСервера/Ext/Module.bsl +++ b/src/cfe/CommonModules/СхПроцессорыСхемЗапросаСлужебныйВызовСервера/Ext/Module.bsl @@ -1,53 +1,53 @@ - -#Область ПрограммныйИнтерфейс - -Функция ПолучитьТаблицуЗначений(СтруктураСхемыЗапроса) Экспорт - ТаблицаЗначений = СЗ_ПроцессорыСхемЗапросаСлужебный - .ПолучитьРезультатЗапроса(СтруктураСхемыЗапроса) - .Выгрузить(); - Возврат ПреобразоватьТаблицуЗначенийВМассивСтруктур(ТаблицаЗначений); -КонецФункции - -Функция ПолучитьМассив(СтруктураСхемыЗапроса, ИмяКолонки) Экспорт - Возврат СЗ_ПроцессорыСхемЗапросаСлужебный - .ПолучитьРезультатЗапроса(СтруктураСхемыЗапроса) - .Выгрузить() - .ВыгрузитьКолонку(ИмяКолонки); -КонецФункции - -#КонецОбласти - -#Область СлужебныеПроцедурыИФункции - -Функция ПреобразоватьТаблицуЗначенийВМассивСтруктур(ТаблицаЗначений) - - Массив = Новый Массив(); - - СтруктураСтрокой = ""; - НужнаЗапятая = Ложь; - - ОписаниеТаблицыЗначений = Новый ОписаниеТипов("ТаблицаЗначений"); - Для Каждого Колонка Из ТаблицаЗначений.Колонки Цикл - Если Колонка.ТипЗначения = ОписаниеТаблицыЗначений Тогда - Продолжить; - КонецЕсли; - Если НужнаЗапятая Тогда - СтруктураСтрокой = СтруктураСтрокой + ","; - КонецЕсли; - - СтруктураСтрокой = СтруктураСтрокой + Колонка.Имя; - НужнаЗапятая = Истина; - КонецЦикла; - - Для Каждого Строка Из ТаблицаЗначений Цикл - НоваяСтрока = Новый Структура(СтруктураСтрокой); - ЗаполнитьЗначенияСвойств(НоваяСтрока, Строка); - - Массив.Добавить(НоваяСтрока); - КонецЦикла; - - Возврат Массив; - -КонецФункции - -#КонецОбласти + +#Область ПрограммныйИнтерфейс + +Функция ПолучитьТаблицуЗначений(СтруктураСхемыЗапроса) Экспорт + ТаблицаЗначений = СхПроцессорыСхемЗапросаСлужебный + .ПолучитьРезультатЗапроса(СтруктураСхемыЗапроса) + .Выгрузить(); + Возврат ПреобразоватьТаблицуЗначенийВМассивСтруктур(ТаблицаЗначений); +КонецФункции + +Функция ПолучитьМассив(СтруктураСхемыЗапроса, ИмяКолонки) Экспорт + Возврат СхПроцессорыСхемЗапросаСлужебный + .ПолучитьРезультатЗапроса(СтруктураСхемыЗапроса) + .Выгрузить() + .ВыгрузитьКолонку(ИмяКолонки); +КонецФункции + +#КонецОбласти + +#Область СлужебныеПроцедурыИФункции + +Функция ПреобразоватьТаблицуЗначенийВМассивСтруктур(ТаблицаЗначений) + + Массив = Новый Массив(); + + СтруктураСтрокой = ""; + НужнаЗапятая = Ложь; + + ОписаниеТаблицыЗначений = Новый ОписаниеТипов("ТаблицаЗначений"); + Для Каждого Колонка Из ТаблицаЗначений.Колонки Цикл + Если Колонка.ТипЗначения = ОписаниеТаблицыЗначений Тогда + Продолжить; + КонецЕсли; + Если НужнаЗапятая Тогда + СтруктураСтрокой = СтруктураСтрокой + ","; + КонецЕсли; + + СтруктураСтрокой = СтруктураСтрокой + Колонка.Имя; + НужнаЗапятая = Истина; + КонецЦикла; + + Для Каждого Строка Из ТаблицаЗначений Цикл + НоваяСтрока = Новый Структура(СтруктураСтрокой); + ЗаполнитьЗначенияСвойств(НоваяСтрока, Строка); + + Массив.Добавить(НоваяСтрока); + КонецЦикла; + + Возврат Массив; + +КонецФункции + +#КонецОбласти diff --git a/src/cfe/CommonModules/СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер.xml b/src/cfe/CommonModules/СхПроцессорыСхемЗапросаСлужебныйКлиентСервер.xml similarity index 87% rename from src/cfe/CommonModules/СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер.xml rename to src/cfe/CommonModules/СхПроцессорыСхемЗапросаСлужебныйКлиентСервер.xml index fdea0b6..4ceebd5 100644 --- a/src/cfe/CommonModules/СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер.xml +++ b/src/cfe/CommonModules/СхПроцессорыСхемЗапросаСлужебныйКлиентСервер.xml @@ -2,11 +2,11 @@ - СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер + СхПроцессорыСхемЗапросаСлужебныйКлиентСервер ru - Схема запроса: процессоры схем запроса служебный клиент сервер + Схема запроса: процессоры схем запроса (служебный) клиент-сервер diff --git a/src/cfe/CommonModules/СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер/Ext/Module.bsl b/src/cfe/CommonModules/СхПроцессорыСхемЗапросаСлужебныйКлиентСервер/Ext/Module.bsl similarity index 66% rename from src/cfe/CommonModules/СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер/Ext/Module.bsl rename to src/cfe/CommonModules/СхПроцессорыСхемЗапросаСлужебныйКлиентСервер/Ext/Module.bsl index 31e99fb..c8f3a64 100644 --- a/src/cfe/CommonModules/СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер/Ext/Module.bsl +++ b/src/cfe/CommonModules/СхПроцессорыСхемЗапросаСлужебныйКлиентСервер/Ext/Module.bsl @@ -79,7 +79,7 @@ Процедура УстановитьУсловие(СхемаЗапроса, Предикат) Экспорт - СхемаЗапроса.Вставить("Условия", ПолучитьУсловияОтбора(Предикат)); + СхемаЗапроса.Вставить("Условия", ПолучитьУсловияОтбора(СхемаЗапроса, Предикат)); КонецПроцедуры @@ -213,10 +213,154 @@ Процедура УстановитьПараметры(СхемаЗапроса, Параметры) Экспорт - СхемаЗапроса.Вставить("Параметры", Параметры); + МассивПараметров = Новый Массив; + Если СхемаЗапроса.Свойство("Параметры") И ТипЗнч(СхемаЗапроса.Параметры) = Тип("Массив") Тогда + МассивПараметров = СхемаЗапроса.Параметры; + КонецЕсли; + + Для каждого Параметр Из Параметры Цикл + МассивПараметров.Добавить(Параметр); + КонецЦикла; + + СхемаЗапроса.Вставить("Параметры", МассивПараметров); КонецПроцедуры +#Область Функции + +Процедура УстановитьВыборКогда(СхемаЗапроса, Предикат, ЗначениеИстина, ЗначениеЛожь, Псевдоним) Экспорт + + МассивПолей = Новый Массив; + Если СхемаЗапроса.Свойство("Поля") И ТипЗнч(СхемаЗапроса.Поля) = Тип("Массив") Тогда + МассивПолей = СхемаЗапроса.Поля; + КонецЕсли; + + МассивПараметров = Новый Массив; + Если СхемаЗапроса.Свойство("Параметры") И ТипЗнч(СхемаЗапроса.Параметры) = Тип("Массив") Тогда + МассивПараметров = СхемаЗапроса.Параметры; + КонецЕсли; + + Условия = ПолучитьУсловияОтбора(СхемаЗапроса, Предикат); + + УсловиеСтрокой = ""; + Для каждого Условие Из Условия Цикл + Если Не ПустаяСтрока(УсловиеСтрокой) Тогда + УсловиеСтрокой = УсловиеСтрокой + " И "; + КонецЕсли; + + УсловиеСтрокой = УсловиеСтрокой + Условие.УсловиеСтрокой; + МассивПараметров.Добавить(Новый Структура("ИмяПараметра, Значение", + Условие.ИмяПараметра, Условие.Значение)); + КонецЦикла; + + ПриведенноеЗначениеИстина = ПривестиЗначение(ЗначениеИстина); + ПриведенноеЗначениеЛожь = ПривестиЗначение(ЗначениеЛожь); + + ШаблонВыборКогда = "ВЫБОР + | КОГДА %1 + | ТОГДА %2 + | ИНАЧЕ %3 + |КОНЕЦ"; + + МассивПолей.Добавить(Новый Структура("ИмяПоля, Источник, Псевдоним", + СтрШаблон(ШаблонВыборКогда, УсловиеСтрокой, ПриведенноеЗначениеИстина, ПриведенноеЗначениеЛожь), + Неопределено, + Псевдоним)); + + СхемаЗапроса.Вставить("Поля", МассивПолей); + СхемаЗапроса.Вставить("Параметры", МассивПараметров); + +КонецПроцедуры + +Процедура УстановитьКоличество(СхемаЗапроса, Поле) Экспорт + + МассивПолей = Новый Массив; + Если СхемаЗапроса.Свойство("Поля") И ТипЗнч(СхемаЗапроса.Поля) = Тип("Массив") Тогда + МассивПолей = СхемаЗапроса.Поля; + КонецЕсли; + + НовоеПоле = ПолучитьПоле(Поле); + НовоеПоле.ИмяПоля = СтрШаблон("КОЛИЧЕСТВО(%1)", НовоеПоле.ИмяПоля); + + МассивПолей.Добавить(НовоеПоле); + СхемаЗапроса.Вставить("Поля", МассивПолей); + +КонецПроцедуры + +Процедура УстановитьСумму(СхемаЗапроса, Поле) Экспорт + + МассивПолей = Новый Массив; + Если СхемаЗапроса.Свойство("Поля") И ТипЗнч(СхемаЗапроса.Поля) = Тип("Массив") Тогда + МассивПолей = СхемаЗапроса.Поля; + КонецЕсли; + + НовоеПоле = ПолучитьПоле(Поле); + НовоеПоле.ИмяПоля = СтрШаблон("СУММА(%1)", НовоеПоле.ИмяПоля); + + МассивПолей.Добавить(НовоеПоле); + СхемаЗапроса.Вставить("Поля", МассивПолей); + +КонецПроцедуры + +Процедура УстановитьМаксимум(СхемаЗапроса, Поле) Экспорт + + МассивПолей = Новый Массив; + Если СхемаЗапроса.Свойство("Поля") И ТипЗнч(СхемаЗапроса.Поля) = Тип("Массив") Тогда + МассивПолей = СхемаЗапроса.Поля; + КонецЕсли; + + НовоеПоле = ПолучитьПоле(Поле); + НовоеПоле.ИмяПоля = СтрШаблон("МАКСИМУМ(%1)", НовоеПоле.ИмяПоля); + + МассивПолей.Добавить(НовоеПоле); + СхемаЗапроса.Вставить("Поля", МассивПолей); + +КонецПроцедуры + +Процедура УстановитьМинимум(СхемаЗапроса, Поле) Экспорт + + МассивПолей = Новый Массив; + Если СхемаЗапроса.Свойство("Поля") И ТипЗнч(СхемаЗапроса.Поля) = Тип("Массив") Тогда + МассивПолей = СхемаЗапроса.Поля; + КонецЕсли; + + НовоеПоле = ПолучитьПоле(Поле); + НовоеПоле.ИмяПоля = СтрШаблон("МИНИМУМ(%1)", НовоеПоле.ИмяПоля); + + МассивПолей.Добавить(НовоеПоле); + СхемаЗапроса.Вставить("Поля", МассивПолей); + +КонецПроцедуры + +Процедура УстановитьВыразить(СхемаЗапроса, Поле, ОписаниеТипа, Псевдоним) Экспорт + + МассивПолей = Новый Массив; + Если СхемаЗапроса.Свойство("Поля") И ТипЗнч(СхемаЗапроса.Поля) = Тип("Массив") Тогда + МассивПолей = СхемаЗапроса.Поля; + КонецЕсли; + + НовоеПоле = ПолучитьПоле(Поле); + Если НовоеПоле.Источник = Неопределено Тогда + ШаблонВыражения = "ВЫРАЗИТЬ(%2 КАК %3)"; + Иначе + ШаблонВыражения = "ВЫРАЗИТЬ(%1.%2 КАК %3)"; + КонецЕсли; + НовоеПоле.ИмяПоля = СтрШаблон(ШаблонВыражения, + НовоеПоле.Источник, + НовоеПоле.ИмяПоля, + СхОбщегоНазначенийКлиентСервер.ПолучитьТипИзОписания(ОписаниеТипа)); + + Если ПустаяСтрока(НовоеПоле.Псевдоним) Тогда + НовоеПоле.Псевдоним = Псевдоним; + КонецЕсли; + + МассивПолей.Добавить(НовоеПоле); + СхемаЗапроса.Вставить("Поля", МассивПолей); + +КонецПроцедуры + +#КонецОбласти + #КонецОбласти #Область СлужебныеПроцедурыИФункции @@ -235,15 +379,38 @@ Функция ПолучитьПоле(Поле) // TODO: Строки проверять на корректность синтаксиса - отсутствие пробелов и спец.символов + // TODO: Не функция, а какая-то жесть получилась. Рефакторить! Если ТипЗнч(Поле) = Тип("Строка") Тогда Если СтрНайти(Поле, " КАК ") > 0 Тогда - ИнформацияОПоле = СтрЗаменить(Поле, " КАК ", Символы.ПС); + Псевдоним = Прав(Поле, СтрДлина(Поле) - СтрНайти(Поле, " КАК ") - 4); + БезПсевдонима = Лев(Поле, СтрНайти(Поле, " КАК ") - 1); + + Если СтрНайти(ВРег(Поле), "ВЫРАЗИТЬ(") > 0 Или + (СтрНайти(ВРег(Поле), "ВЫБОР") > 0 И + СтрНайти(ВРег(Поле), "КОГДА") > 0 И + СтрНайти(ВРег(Поле), "ТОГДА") > 0 И + СтрНайти(ВРег(Поле), "ИНАЧЕ") > 0 И + СтрНайти(ВРег(Поле), "КОНЕЦ") > 0) Тогда + + Возврат Новый Структура("ИмяПоля, Источник, Псевдоним", + БезПсевдонима, + Неопределено, + Псевдоним); + КонецЕсли; + + // Вырезаю поле из агрегатной функции + Если СтрНайти(БезПсевдонима, "(") > 0 И СтрНайти(БезПсевдонима, ")") > 0 Тогда + БезПсевдонима = Сред(БезПсевдонима, + СтрНайти(БезПсевдонима, "(") + 1, + СтрНайти(БезПсевдонима, ")") - СтрНайти(БезПсевдонима, "(") - 1); + КонецЕсли; + Возврат Новый Структура("ИмяПоля, Источник, Псевдоним", - ПолучитьИмяПоляБезИсточника(СтрПолучитьСтроку(ИнформацияОПоле, 1)), - ПолучитьИсточникИзИмениПоля(Поле), - СтрПолучитьСтроку(ИнформацияОПоле, 2)); + ПолучитьИмяПоляБезИсточника(БезПсевдонима), + ПолучитьИсточникИзИмениПоля(БезПсевдонима), + Псевдоним); КонецЕсли; Возврат Новый Структура("ИмяПоля, Источник, Псевдоним", @@ -309,12 +476,14 @@ КонецФункции -Функция ПолучитьУсловияОтбора(Предикат) - - // TODO: Нумерация (Сч) сквозная через все запросы +Функция ПолучитьУсловияОтбора(СхемаЗапроса, Предикат) МассивУсловий = Новый Массив; - Сч = 0; + Если СхемаЗапроса.Свойство("СчетчикПараметров") И ТипЗнч(СхемаЗапроса.СчетчикПараметров) = Тип("Число") Тогда + Сч = СхемаЗапроса.СчетчикПараметров; + Иначе + Сч = 0; + КонецЕсли; Для каждого Условие Из Предикат.Условия Цикл ИмяПараметра = СтрШаблон("Параметр_%1", Сч); @@ -342,6 +511,8 @@ Сч = Сч + 1; КонецЦикла; + СхемаЗапроса.Вставить("СчетчикПараметров", Сч); + Возврат МассивУсловий; КонецФункции @@ -368,7 +539,7 @@ Функция ШаблонУсловия(ВидСравнения, Амперсанд = Истина) - Выражения = СЗ_ПроцессорыПредикатовКлиентСервер.Выражения(); + Выражения = СхПроцессорыПредикатовКлиентСервер.Выражения(); Если ВидСравнения = Выражения.Равно Тогда Шаблон = "%1 = " + ?(Амперсанд, "&", "") + "%2"; @@ -415,4 +586,22 @@ КонецФункции +Функция ПолучитьСтруктуруФункции() + + Возврат Новый Структура("Функция, Параметры"); + +КонецФункции + +Функция ПривестиЗначение(Значение) + + Если ТипЗнч(Значение) = Тип("Число") Тогда + Возврат Формат(Значение, "ЧН=; ЧГ=0"); + ИначеЕсли ТипЗнч(Значение) = Тип("Строка") Тогда + Возврат СтрШаблон("""%1""", Значение); + КонецЕсли; + + ВызватьИсключение "ПривестиЗначение: значение неизвестного типа"; + +КонецФункции + #КонецОбласти diff --git a/src/cfe/ConfigDumpInfo.xml b/src/cfe/ConfigDumpInfo.xml index 90a6c6e..288102f 100644 --- a/src/cfe/ConfigDumpInfo.xml +++ b/src/cfe/ConfigDumpInfo.xml @@ -1,43 +1,45 @@  - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + + + - - - + + + \ No newline at end of file diff --git a/src/cfe/Configuration.xml b/src/cfe/Configuration.xml index 9d23481..c573858 100644 --- a/src/cfe/Configuration.xml +++ b/src/cfe/Configuration.xml @@ -43,11 +43,11 @@ AddOn true - СЗ_ + Сх Version8_3_9 Russian - 0.0.2 + 0.0.3 @@ -57,23 +57,24 @@ Русский - СЗ_Основная - СЗ_Тестирование - СЗ_Обработки + СхОсновная + СхТестирование + СхОбработки СЗ_Логотип - СЗ_Запрос - СЗ_ЗапросТест - СЗ_ЗапросТестКлиент - СЗ_ЗапросТестСлужебныйВызовСервера - СЗ_ПроцессорыПредикатовКлиентСервер - СЗ_ПроцессорыПредикатовСлужебныйКлиентСервер - СЗ_ПроцессорыСхемЗапросаКлиентСервер - СЗ_ПроцессорыСхемЗапросаСлужебный - СЗ_ПроцессорыСхемЗапросаСлужебныйВызовСервера - СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер - СЗ_КонсольФункциональныхЗапросов - СЗ_ПроцессорПредикатов - СЗ_ПроцессорСхемЗапроса + СхЗапрос + СхЗапросТест + СхЗапросТестКлиент + СхЗапросТестСлужебныйВызовСервера + СхОбщегоНазначенийКлиентСервер + СхПроцессорыПредикатовКлиентСервер + СхПроцессорыПредикатовСлужебныйКлиентСервер + СхПроцессорыСхемЗапросаКлиентСервер + СхПроцессорыСхемЗапросаСлужебный + СхПроцессорыСхемЗапросаСлужебныйВызовСервера + СхПроцессорыСхемЗапросаСлужебныйКлиентСервер + СхКонсольФункциональныхЗапросов + СхПроцессорПредикатов + СхПроцессорСхемЗапроса \ No newline at end of file diff --git a/src/cfe/DataProcessors/СЗ_ПроцессорПредикатов/Ext/ObjectModule.bsl b/src/cfe/DataProcessors/СЗ_ПроцессорПредикатов/Ext/ObjectModule.bsl deleted file mode 100644 index a101233..0000000 --- a/src/cfe/DataProcessors/СЗ_ПроцессорПредикатов/Ext/ObjectModule.bsl +++ /dev/null @@ -1,81 +0,0 @@ -#Область ОписаниеПеременных - -Перем Предикат; - -#КонецОбласти - -#Область ПрограммныйИнтерфейс - -Функция Реквизит(ИмяРеквизита) Экспорт - СЗ_ПроцессорыПредикатовСлужебныйКлиентСервер.УстановитьИмяРеквизита(Предикат, ИмяРеквизита); - Возврат ЭтотОбъект; -КонецФункции - -Функция Равно(Значение) Экспорт - СЗ_ПроцессорыПредикатовСлужебныйКлиентСервер.УстановитьПредикат(Предикат, - СЗ_ПроцессорыПредикатовКлиентСервер.Выражения().Равно, Значение); - Возврат ЭтотОбъект; -КонецФункции - -Функция НеРавно(Значение) Экспорт - СЗ_ПроцессорыПредикатовСлужебныйКлиентСервер.УстановитьПредикат(Предикат, - СЗ_ПроцессорыПредикатовКлиентСервер.Выражения().НеРавно, Значение); - Возврат ЭтотОбъект; -КонецФункции - -Функция Больше(Значение) Экспорт - СЗ_ПроцессорыПредикатовСлужебныйКлиентСервер.УстановитьПредикат(Предикат, - СЗ_ПроцессорыПредикатовКлиентСервер.Выражения().Больше, Значение); - Возврат ЭтотОбъект; -КонецФункции - -Функция Меньше(Значение) Экспорт - СЗ_ПроцессорыПредикатовСлужебныйКлиентСервер.УстановитьПредикат(Предикат, - СЗ_ПроцессорыПредикатовКлиентСервер.Выражения().Меньше, Значение); - Возврат ЭтотОбъект; -КонецФункции - -Функция ВСписке(Значение) Экспорт - СЗ_ПроцессорыПредикатовСлужебныйКлиентСервер.УстановитьПредикат(Предикат, - СЗ_ПроцессорыПредикатовКлиентСервер.Выражения().ВСписке, Значение); - Возврат ЭтотОбъект; -КонецФункции - -Функция НеВСписке(Значение) Экспорт - СЗ_ПроцессорыПредикатовСлужебныйКлиентСервер.УстановитьПредикат(Предикат, - СЗ_ПроцессорыПредикатовКлиентСервер.Выражения().НеВСписке, Значение); - Возврат ЭтотОбъект; -КонецФункции - -Функция Подобно(Значение) Экспорт - СЗ_ПроцессорыПредикатовСлужебныйКлиентСервер.УстановитьПредикат(Предикат, - СЗ_ПроцессорыПредикатовКлиентСервер.Выражения().Подобно, Значение); - Возврат ЭтотОбъект; -КонецФункции - -Функция НеПодобно(Значение) Экспорт - СЗ_ПроцессорыПредикатовСлужебныйКлиентСервер.УстановитьПредикат(Предикат, - СЗ_ПроцессорыПредикатовКлиентСервер.Выражения().НеПодобно, Значение); - Возврат ЭтотОбъект; -КонецФункции - -Функция Между(НачалоИнтервала, ОкончаниеИнтервала) Экспорт - - Значения = Новый Массив; - Значения.Добавить(НачалоИнтервала); - Значения.Добавить(ОкончаниеИнтервала); - - СЗ_ПроцессорыПредикатовСлужебныйКлиентСервер.УстановитьПредикат(Предикат, - СЗ_ПроцессорыПредикатовКлиентСервер.Выражения().Между, Значения); - - Возврат ЭтотОбъект; - -КонецФункции - -Функция Получить() Экспорт - - Возврат Предикат; - -КонецФункции - -#КонецОбласти diff --git a/src/cfe/DataProcessors/СЗ_ПроцессорПредикатов/Forms/Форма/Ext/Form/Module.bsl b/src/cfe/DataProcessors/СЗ_ПроцессорПредикатов/Forms/Форма/Ext/Form/Module.bsl deleted file mode 100644 index b3916a1..0000000 --- a/src/cfe/DataProcessors/СЗ_ПроцессорПредикатов/Forms/Форма/Ext/Form/Module.bsl +++ /dev/null @@ -1,93 +0,0 @@ -#Область ОписаниеПеременных - -&НаКлиенте -Перем Предикат; - -#КонецОбласти - -#Область ПрограммныйИнтерфейс - -&НаКлиенте -Функция Реквизит(ИмяРеквизита) Экспорт - СЗ_ПроцессорыПредикатовСлужебныйКлиентСервер.УстановитьИмяРеквизита(Предикат, ИмяРеквизита); - Возврат ЭтотОбъект; -КонецФункции - -&НаКлиенте -Функция Равно(Значение) Экспорт - СЗ_ПроцессорыПредикатовСлужебныйКлиентСервер.УстановитьПредикат(Предикат, - СЗ_ПроцессорыПредикатовКлиентСервер.Выражения().Равно, Значение); - Возврат ЭтотОбъект; -КонецФункции - -&НаКлиенте -Функция НеРавно(Значение) Экспорт - СЗ_ПроцессорыПредикатовСлужебныйКлиентСервер.УстановитьПредикат(Предикат, - СЗ_ПроцессорыПредикатовКлиентСервер.Выражения().НеРавно, Значение); - Возврат ЭтотОбъект; -КонецФункции - -&НаКлиенте -Функция Больше(Значение) Экспорт - СЗ_ПроцессорыПредикатовСлужебныйКлиентСервер.УстановитьПредикат(Предикат, - СЗ_ПроцессорыПредикатовКлиентСервер.Выражения().Больше, Значение); - Возврат ЭтотОбъект; -КонецФункции - -&НаКлиенте -Функция Меньше(Значение) Экспорт - СЗ_ПроцессорыПредикатовСлужебныйКлиентСервер.УстановитьПредикат(Предикат, - СЗ_ПроцессорыПредикатовКлиентСервер.Выражения().Меньше, Значение); - Возврат ЭтотОбъект; -КонецФункции - -&НаКлиенте -Функция ВСписке(Значение) Экспорт - СЗ_ПроцессорыПредикатовСлужебныйКлиентСервер.УстановитьПредикат(Предикат, - СЗ_ПроцессорыПредикатовКлиентСервер.Выражения().ВСписке, Значение); - Возврат ЭтотОбъект; -КонецФункции - -&НаКлиенте -Функция НеВСписке(Значение) Экспорт - СЗ_ПроцессорыПредикатовСлужебныйКлиентСервер.УстановитьПредикат(Предикат, - СЗ_ПроцессорыПредикатовКлиентСервер.Выражения().НеВСписке, Значение); - Возврат ЭтотОбъект; -КонецФункции - -&НаКлиенте -Функция Подобно(Значение) Экспорт - СЗ_ПроцессорыПредикатовСлужебныйКлиентСервер.УстановитьПредикат(Предикат, - СЗ_ПроцессорыПредикатовКлиентСервер.Выражения().Подобно, Значение); - Возврат ЭтотОбъект; -КонецФункции - -&НаКлиенте -Функция НеПодобно(Значение) Экспорт - СЗ_ПроцессорыПредикатовСлужебныйКлиентСервер.УстановитьПредикат(Предикат, - СЗ_ПроцессорыПредикатовКлиентСервер.Выражения().НеПодобно, Значение); - Возврат ЭтотОбъект; -КонецФункции - -&НаКлиенте -Функция Между(НачалоИнтервала, ОкончаниеИнтервала) Экспорт - - Значения = Новый Массив; - Значения.Добавить(НачалоИнтервала); - Значения.Добавить(ОкончаниеИнтервала); - - СЗ_ПроцессорыПредикатовСлужебныйКлиентСервер.УстановитьПредикат(Предикат, - СЗ_ПроцессорыПредикатовКлиентСервер.Выражения().Между, Значения); - - Возврат ЭтотОбъект; - -КонецФункции - -&НаКлиенте -Функция Получить() Экспорт - - Возврат Предикат; - -КонецФункции - -#КонецОбласти diff --git a/src/cfe/DataProcessors/СЗ_КонсольФункциональныхЗапросов.xml b/src/cfe/DataProcessors/СхКонсольФункциональныхЗапросов.xml similarity index 78% rename from src/cfe/DataProcessors/СЗ_КонсольФункциональныхЗапросов.xml rename to src/cfe/DataProcessors/СхКонсольФункциональныхЗапросов.xml index 161e70b..a9d8f3c 100644 --- a/src/cfe/DataProcessors/СЗ_КонсольФункциональныхЗапросов.xml +++ b/src/cfe/DataProcessors/СхКонсольФункциональныхЗапросов.xml @@ -2,17 +2,17 @@ - + 753bd0b9-4226-48e3-8c11-7e4ccd8b855f f4b06689-126e-4582-aeac-b95c903df7d2 - + 0f1adcf6-806a-42a0-8faf-9af5630de7cb 0c6ccdb3-b8e4-4310-9e98-fff187850b11 - СЗ_КонсольФункциональныхЗапросов + СхКонсольФункциональныхЗапросов ru @@ -21,7 +21,7 @@ true - DataProcessor.СЗ_КонсольФункциональныхЗапросов.Form.Форма + DataProcessor.СхКонсольФункциональныхЗапросов.Form.Форма false diff --git a/src/cfe/DataProcessors/СЗ_КонсольФункциональныхЗапросов/Forms/Форма.xml b/src/cfe/DataProcessors/СхКонсольФункциональныхЗапросов/Forms/Форма.xml similarity index 100% rename from src/cfe/DataProcessors/СЗ_КонсольФункциональныхЗапросов/Forms/Форма.xml rename to src/cfe/DataProcessors/СхКонсольФункциональныхЗапросов/Forms/Форма.xml diff --git a/src/cfe/DataProcessors/СЗ_КонсольФункциональныхЗапросов/Forms/Форма/Ext/Form.xml b/src/cfe/DataProcessors/СхКонсольФункциональныхЗапросов/Forms/Форма/Ext/Form.xml similarity index 95% rename from src/cfe/DataProcessors/СЗ_КонсольФункциональныхЗапросов/Forms/Форма/Ext/Form.xml rename to src/cfe/DataProcessors/СхКонсольФункциональныхЗапросов/Forms/Форма/Ext/Form.xml index e7d0db5..c358814 100644 --- a/src/cfe/DataProcessors/СЗ_КонсольФункциональныхЗапросов/Forms/Форма/Ext/Form.xml +++ b/src/cfe/DataProcessors/СхКонсольФункциональныхЗапросов/Forms/Форма/Ext/Form.xml @@ -48,7 +48,7 @@ - cfg:DataProcessorObject.СЗ_КонсольФункциональныхЗапросов + cfg:DataProcessorObject.СхКонсольФункциональныхЗапросов true diff --git a/src/cfe/DataProcessors/СЗ_КонсольФункциональныхЗапросов/Forms/Форма/Ext/Form/Module.bsl b/src/cfe/DataProcessors/СхКонсольФункциональныхЗапросов/Forms/Форма/Ext/Form/Module.bsl similarity index 96% rename from src/cfe/DataProcessors/СЗ_КонсольФункциональныхЗапросов/Forms/Форма/Ext/Form/Module.bsl rename to src/cfe/DataProcessors/СхКонсольФункциональныхЗапросов/Forms/Форма/Ext/Form/Module.bsl index 7c3ef97..aff836c 100644 --- a/src/cfe/DataProcessors/СЗ_КонсольФункциональныхЗапросов/Forms/Форма/Ext/Form/Module.bsl +++ b/src/cfe/DataProcessors/СхКонсольФункциональныхЗапросов/Forms/Форма/Ext/Form/Module.bsl @@ -73,7 +73,7 @@ Оператор = ПакетЗапроса.Операторы[0]; МассивСтрокЗапроса = Новый Массив; - МассивСтрокЗапроса.Добавить(СтрШаблон("СЗ_Запрос.НовыйЗапрос(""%1"")", + МассивСтрокЗапроса.Добавить(СтрШаблон("СхЗапрос.НовыйЗапрос(""%1"")", Оператор.Источники[0].Источник.ИмяТаблицы)); СтрокаПолей = ПолучитьПоля(ПакетЗапроса); @@ -83,7 +83,7 @@ СтрокаОтборов = ПолучитьОтборы(); Если Не ПустаяСтрока(СтрокаОтборов) Тогда - МассивСтрокЗапроса.Добавить(СтрШаблон(Символы.Таб + ".Где(СЗ_Запрос.Предикат() + МассивСтрокЗапроса.Добавить(СтрШаблон(Символы.Таб + ".Где(СхЗапрос.Предикат() | %1)", СтрокаОтборов)); КонецЕсли; diff --git a/src/cfe/DataProcessors/СЗ_ПроцессорПредикатов.xml b/src/cfe/DataProcessors/СхПроцессорПредикатов.xml similarity index 77% rename from src/cfe/DataProcessors/СЗ_ПроцессорПредикатов.xml rename to src/cfe/DataProcessors/СхПроцессорПредикатов.xml index 6832f8b..f973b9e 100644 --- a/src/cfe/DataProcessors/СЗ_ПроцессорПредикатов.xml +++ b/src/cfe/DataProcessors/СхПроцессорПредикатов.xml @@ -2,26 +2,26 @@ - + 20e56103-de11-460e-989e-38009e54630a 207e5e5e-fb17-43ad-959f-910b588f6d68 - + e3602dbd-6e64-429f-99f4-b0c9a7b7102f facb276b-1229-4f98-960f-86720e17c5c9 - СЗ_ПроцессорПредикатов + СхПроцессорПредикатов ru - С з процессор предикатов + Сх процессор предикатов true - DataProcessor.СЗ_ПроцессорПредикатов.Form.Форма + DataProcessor.СхПроцессорПредикатов.Form.Форма false diff --git a/src/cfe/DataProcessors/СхПроцессорПредикатов/Ext/ObjectModule.bsl b/src/cfe/DataProcessors/СхПроцессорПредикатов/Ext/ObjectModule.bsl new file mode 100644 index 0000000..c56b83a --- /dev/null +++ b/src/cfe/DataProcessors/СхПроцессорПредикатов/Ext/ObjectModule.bsl @@ -0,0 +1,88 @@ +#Область ОписаниеПеременных + +Перем Предикат; + +#КонецОбласти + +#Область ПрограммныйИнтерфейс + +Функция Реквизит(ИмяРеквизита) Экспорт + СхПроцессорыПредикатовСлужебныйКлиентСервер + .УстановитьИмяРеквизита(Предикат, ИмяРеквизита); + Возврат ЭтотОбъект; +КонецФункции + +Функция РеквизитВыразить(ИмяРеквизита, ОписаниеТипа) Экспорт + СхПроцессорыПредикатовСлужебныйКлиентСервер + .УстановитьРеквизитВыразить(Предикат, ИмяРеквизита, ОписаниеТипа); + Возврат ЭтотОбъект; +КонецФункции + +Функция Равно(Значение) Экспорт + СхПроцессорыПредикатовСлужебныйКлиентСервер.УстановитьПредикат(Предикат, + СхПроцессорыПредикатовКлиентСервер.Выражения().Равно, Значение); + Возврат ЭтотОбъект; +КонецФункции + +Функция НеРавно(Значение) Экспорт + СхПроцессорыПредикатовСлужебныйКлиентСервер.УстановитьПредикат(Предикат, + СхПроцессорыПредикатовКлиентСервер.Выражения().НеРавно, Значение); + Возврат ЭтотОбъект; +КонецФункции + +Функция Больше(Значение) Экспорт + СхПроцессорыПредикатовСлужебныйКлиентСервер.УстановитьПредикат(Предикат, + СхПроцессорыПредикатовКлиентСервер.Выражения().Больше, Значение); + Возврат ЭтотОбъект; +КонецФункции + +Функция Меньше(Значение) Экспорт + СхПроцессорыПредикатовСлужебныйКлиентСервер.УстановитьПредикат(Предикат, + СхПроцессорыПредикатовКлиентСервер.Выражения().Меньше, Значение); + Возврат ЭтотОбъект; +КонецФункции + +Функция ВСписке(Значение) Экспорт + СхПроцессорыПредикатовСлужебныйКлиентСервер.УстановитьПредикат(Предикат, + СхПроцессорыПредикатовКлиентСервер.Выражения().ВСписке, Значение); + Возврат ЭтотОбъект; +КонецФункции + +Функция НеВСписке(Значение) Экспорт + СхПроцессорыПредикатовСлужебныйКлиентСервер.УстановитьПредикат(Предикат, + СхПроцессорыПредикатовКлиентСервер.Выражения().НеВСписке, Значение); + Возврат ЭтотОбъект; +КонецФункции + +Функция Подобно(Значение) Экспорт + СхПроцессорыПредикатовСлужебныйКлиентСервер.УстановитьПредикат(Предикат, + СхПроцессорыПредикатовКлиентСервер.Выражения().Подобно, Значение); + Возврат ЭтотОбъект; +КонецФункции + +Функция НеПодобно(Значение) Экспорт + СхПроцессорыПредикатовСлужебныйКлиентСервер.УстановитьПредикат(Предикат, + СхПроцессорыПредикатовКлиентСервер.Выражения().НеПодобно, Значение); + Возврат ЭтотОбъект; +КонецФункции + +Функция Между(НачалоИнтервала, ОкончаниеИнтервала) Экспорт + + Значения = Новый Массив; + Значения.Добавить(НачалоИнтервала); + Значения.Добавить(ОкончаниеИнтервала); + + СхПроцессорыПредикатовСлужебныйКлиентСервер.УстановитьПредикат(Предикат, + СхПроцессорыПредикатовКлиентСервер.Выражения().Между, Значения); + + Возврат ЭтотОбъект; + +КонецФункции + +Функция Получить() Экспорт + + Возврат Предикат; + +КонецФункции + +#КонецОбласти diff --git a/src/cfe/DataProcessors/СЗ_ПроцессорПредикатов/Forms/Форма.xml b/src/cfe/DataProcessors/СхПроцессорПредикатов/Forms/Форма.xml similarity index 98% rename from src/cfe/DataProcessors/СЗ_ПроцессорПредикатов/Forms/Форма.xml rename to src/cfe/DataProcessors/СхПроцессорПредикатов/Forms/Форма.xml index 3f71100..a545af9 100644 --- a/src/cfe/DataProcessors/СЗ_ПроцессорПредикатов/Forms/Форма.xml +++ b/src/cfe/DataProcessors/СхПроцессорПредикатов/Forms/Форма.xml @@ -1,22 +1,22 @@ - - -
- - Форма - - - ru - Форма - - - - Managed - false - - PlatformApplication - MobilePlatformApplication - - - -
+ + +
+ + Форма + + + ru + Форма + + + + Managed + false + + PlatformApplication + MobilePlatformApplication + + + +
\ No newline at end of file diff --git a/src/cfe/DataProcessors/СЗ_ПроцессорПредикатов/Forms/Форма/Ext/Form.xml b/src/cfe/DataProcessors/СхПроцессорПредикатов/Forms/Форма/Ext/Form.xml similarity index 91% rename from src/cfe/DataProcessors/СЗ_ПроцессорПредикатов/Forms/Форма/Ext/Form.xml rename to src/cfe/DataProcessors/СхПроцессорПредикатов/Forms/Форма/Ext/Form.xml index 6810b55..5027f2d 100644 --- a/src/cfe/DataProcessors/СЗ_ПроцессорПредикатов/Forms/Форма/Ext/Form.xml +++ b/src/cfe/DataProcessors/СхПроцессорПредикатов/Forms/Форма/Ext/Form.xml @@ -1,12 +1,12 @@ - -
- - - - - cfg:DataProcessorObject.СЗ_ПроцессорПредикатов - - true - - + + + + + + + cfg:DataProcessorObject.СхПроцессорПредикатов + + true + + \ No newline at end of file diff --git a/src/cfe/DataProcessors/СхПроцессорПредикатов/Forms/Форма/Ext/Form/Module.bsl b/src/cfe/DataProcessors/СхПроцессорПредикатов/Forms/Форма/Ext/Form/Module.bsl new file mode 100644 index 0000000..7dc5cc8 --- /dev/null +++ b/src/cfe/DataProcessors/СхПроцессорПредикатов/Forms/Форма/Ext/Form/Module.bsl @@ -0,0 +1,100 @@ +#Область ОписаниеПеременных + +&НаКлиенте +Перем Предикат; + +#КонецОбласти + +#Область ПрограммныйИнтерфейс + +&НаКлиенте +Функция Реквизит(ИмяРеквизита) Экспорт + СхПроцессорыПредикатовСлужебныйКлиентСервер.УстановитьИмяРеквизита(Предикат, ИмяРеквизита); + Возврат ЭтотОбъект; +КонецФункции + +&НаКлиенте +Функция РеквизитВыразить(ИмяРеквизита, ОписаниеТипа) Экспорт + СхПроцессорыПредикатовСлужебныйКлиентСервер + .УстановитьРеквизитВыразить(Предикат, ИмяРеквизита, ОписаниеТипа); + Возврат ЭтотОбъект; +КонецФункции + +&НаКлиенте +Функция Равно(Значение) Экспорт + СхПроцессорыПредикатовСлужебныйКлиентСервер.УстановитьПредикат(Предикат, + СхПроцессорыПредикатовКлиентСервер.Выражения().Равно, Значение); + Возврат ЭтотОбъект; +КонецФункции + +&НаКлиенте +Функция НеРавно(Значение) Экспорт + СхПроцессорыПредикатовСлужебныйКлиентСервер.УстановитьПредикат(Предикат, + СхПроцессорыПредикатовКлиентСервер.Выражения().НеРавно, Значение); + Возврат ЭтотОбъект; +КонецФункции + +&НаКлиенте +Функция Больше(Значение) Экспорт + СхПроцессорыПредикатовСлужебныйКлиентСервер.УстановитьПредикат(Предикат, + СхПроцессорыПредикатовКлиентСервер.Выражения().Больше, Значение); + Возврат ЭтотОбъект; +КонецФункции + +&НаКлиенте +Функция Меньше(Значение) Экспорт + СхПроцессорыПредикатовСлужебныйКлиентСервер.УстановитьПредикат(Предикат, + СхПроцессорыПредикатовКлиентСервер.Выражения().Меньше, Значение); + Возврат ЭтотОбъект; +КонецФункции + +&НаКлиенте +Функция ВСписке(Значение) Экспорт + СхПроцессорыПредикатовСлужебныйКлиентСервер.УстановитьПредикат(Предикат, + СхПроцессорыПредикатовКлиентСервер.Выражения().ВСписке, Значение); + Возврат ЭтотОбъект; +КонецФункции + +&НаКлиенте +Функция НеВСписке(Значение) Экспорт + СхПроцессорыПредикатовСлужебныйКлиентСервер.УстановитьПредикат(Предикат, + СхПроцессорыПредикатовКлиентСервер.Выражения().НеВСписке, Значение); + Возврат ЭтотОбъект; +КонецФункции + +&НаКлиенте +Функция Подобно(Значение) Экспорт + СхПроцессорыПредикатовСлужебныйКлиентСервер.УстановитьПредикат(Предикат, + СхПроцессорыПредикатовКлиентСервер.Выражения().Подобно, Значение); + Возврат ЭтотОбъект; +КонецФункции + +&НаКлиенте +Функция НеПодобно(Значение) Экспорт + СхПроцессорыПредикатовСлужебныйКлиентСервер.УстановитьПредикат(Предикат, + СхПроцессорыПредикатовКлиентСервер.Выражения().НеПодобно, Значение); + Возврат ЭтотОбъект; +КонецФункции + +&НаКлиенте +Функция Между(НачалоИнтервала, ОкончаниеИнтервала) Экспорт + + Значения = Новый Массив; + Значения.Добавить(НачалоИнтервала); + Значения.Добавить(ОкончаниеИнтервала); + + СхПроцессорыПредикатовСлужебныйКлиентСервер.УстановитьПредикат(Предикат, + СхПроцессорыПредикатовКлиентСервер.Выражения().Между, Значения); + + Возврат ЭтотОбъект; + +КонецФункции + +&НаКлиенте +Функция Получить() Экспорт + + Возврат Предикат; + +КонецФункции + +#КонецОбласти diff --git a/src/cfe/DataProcessors/СЗ_ПроцессорСхемЗапроса.xml b/src/cfe/DataProcessors/СхПроцессорСхемЗапроса.xml similarity index 80% rename from src/cfe/DataProcessors/СЗ_ПроцессорСхемЗапроса.xml rename to src/cfe/DataProcessors/СхПроцессорСхемЗапроса.xml index b27445a..64be9bd 100644 --- a/src/cfe/DataProcessors/СЗ_ПроцессорСхемЗапроса.xml +++ b/src/cfe/DataProcessors/СхПроцессорСхемЗапроса.xml @@ -2,17 +2,17 @@ - + 8fa76ff0-784b-4ebd-a63a-5bfed72f02c2 4b2cbc6f-5517-4354-9cca-09e37ffb6ef4 - + 4c35d9a4-671c-4413-b87e-b984a2286b1e 2db60e26-72c2-46c7-adef-d744c9274c32 - СЗ_ПроцессорСхемЗапроса + СхПроцессорСхемЗапроса ru @@ -21,7 +21,7 @@ true - DataProcessor.СЗ_ПроцессорСхемЗапроса.Form.Форма + DataProcessor.СхПроцессорСхемЗапроса.Form.Форма false diff --git a/src/cfe/DataProcessors/СЗ_ПроцессорСхемЗапроса/Ext/ObjectModule.bsl b/src/cfe/DataProcessors/СхПроцессорСхемЗапроса/Ext/ObjectModule.bsl similarity index 60% rename from src/cfe/DataProcessors/СЗ_ПроцессорСхемЗапроса/Ext/ObjectModule.bsl rename to src/cfe/DataProcessors/СхПроцессорСхемЗапроса/Ext/ObjectModule.bsl index 5b66912..621bf17 100644 --- a/src/cfe/DataProcessors/СЗ_ПроцессорСхемЗапроса/Ext/ObjectModule.bsl +++ b/src/cfe/DataProcessors/СхПроцессорСхемЗапроса/Ext/ObjectModule.bsl @@ -12,13 +12,13 @@ Если ТипЗнч(ИсточникДанных) = Тип("Строка") Тогда _ИсточникДанных = ИсточникДанных; - ИначеЕсли ТипЗнч(ИсточникДанных) = Тип("ОбработкаОбъект.СЗ_ПроцессорСхемЗапроса") Тогда + ИначеЕсли ТипЗнч(ИсточникДанных) = Тип("ОбработкаОбъект.СхПроцессорСхемЗапроса") Тогда _ИсточникДанных = ИсточникДанных.Получить(); Иначе ВызватьИсключение "Объединить: неверный тип источника данных"; КонецЕсли; - СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер.УстановитьИсточникДанных(СхемаЗапроса, + СхПроцессорыСхемЗапросаСлужебныйКлиентСервер.УстановитьИсточникДанных(СхемаЗапроса, _ИсточникДанных, Первые, Различные, Разрешенные); КонецПроцедуры @@ -26,7 +26,7 @@ // // Функция Псевдоним(ИмяПсевдонима) Экспорт - СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер + СхПроцессорыСхемЗапросаСлужебныйКлиентСервер .УстановитьПсевдонимИсточника(СхемаЗапроса, ИмяПсевдонима); Возврат ЭтотОбъект; КонецФункции @@ -34,7 +34,7 @@ // // Функция ВТаблицуЗначений() Экспорт - ТаблицаЗначений = СЗ_ПроцессорыСхемЗапросаСлужебный + ТаблицаЗначений = СхПроцессорыСхемЗапросаСлужебный .ПолучитьРезультатЗапроса(СхемаЗапроса).Выгрузить(); Возврат ТаблицаЗначений; КонецФункции @@ -42,7 +42,7 @@ // // Функция ВМассив(ИмяКолонки) Экспорт - ТаблицаЗначений = СЗ_ПроцессорыСхемЗапросаСлужебный + ТаблицаЗначений = СхПроцессорыСхемЗапросаСлужебный .ПолучитьРезультатЗапроса(СхемаЗапроса).Выгрузить(); Возврат ТаблицаЗначений.ВыгрузитьКолонку(ИмяКолонки); КонецФункции @@ -50,7 +50,7 @@ // // Функция Первые(Количество) Экспорт - СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер + СхПроцессорыСхемЗапросаСлужебныйКлиентСервер .УстановитьПервые(СхемаЗапроса, Количество); Возврат ЭтотОбъект; КонецФункции @@ -58,7 +58,7 @@ // // Функция Различные() Экспорт - СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер + СхПроцессорыСхемЗапросаСлужебныйКлиентСервер .УстановитьРазличные(СхемаЗапроса); Возврат ЭтотОбъект; КонецФункции @@ -66,7 +66,7 @@ // // Функция Разрешенные() Экспорт - СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер + СхПроцессорыСхемЗапросаСлужебныйКлиентСервер .УстановитьРазрешенные(СхемаЗапроса); Возврат ЭтотОбъект; КонецФункции @@ -74,7 +74,7 @@ // // Функция Выбрать(Поля) Экспорт - СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер + СхПроцессорыСхемЗапросаСлужебныйКлиентСервер .УстановитьПоляВыборки(СхемаЗапроса, Поля); Возврат ЭтотОбъект; КонецФункции @@ -82,7 +82,7 @@ // // Функция ВыбратьВсе() Экспорт - СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер + СхПроцессорыСхемЗапросаСлужебныйКлиентСервер .УстановитьВыборВсехПолей(СхемаЗапроса); Возврат ЭтотОбъект; КонецФункции @@ -90,7 +90,7 @@ // // Функция Поместить(ИмяВременнойТаблицы) Экспорт - СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер + СхПроцессорыСхемЗапросаСлужебныйКлиентСервер .УстановитьИмяВременнойТаблицы(СхемаЗапроса, ИмяВременнойТаблицы); Возврат ЭтотОбъект; КонецФункции @@ -101,14 +101,15 @@ Если ТипЗнч(Предикат) = Тип("Структура") Тогда _Предикат = Предикат; - ИначеЕсли ТипЗнч(Предикат) = Тип("ОбработкаОбъект.СЗ_ПроцессорПредикатов") Тогда + ИначеЕсли ТипЗнч(Предикат) = Тип("ОбработкаОбъект.СхПроцессорПредикатов") Тогда _Предикат = Предикат.Получить(); Иначе ВызватьИсключение "Неверный тип предиката в методе ""Где"""; КонецЕсли; - СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер.УстановитьУсловие(СхемаЗапроса, _Предикат); + СхПроцессорыСхемЗапросаСлужебныйКлиентСервер.УстановитьУсловие(СхемаЗапроса, _Предикат); Возврат ЭтотОбъект; + КонецФункции // @@ -135,15 +136,73 @@ // // Функция Сгруппировать(Поля) Экспорт - СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер + СхПроцессорыСхемЗапросаСлужебныйКлиентСервер .УстановитьГруппировку(СхемаЗапроса, Поля); Возврат ЭтотОбъект; КонецФункции +// +// +Функция ВыборКогда(Предикат, ЗначениеИстина, ЗначениеЛожь, Псевдоним = "") Экспорт + + Если ТипЗнч(Предикат) = Тип("Структура") Тогда + _Предикат = Предикат; + ИначеЕсли ТипЗнч(Предикат) = Тип("ОбработкаОбъект.СхПроцессорПредикатов") Тогда + _Предикат = Предикат.Получить(); + Иначе + ВызватьИсключение "Неверный тип предиката в методе ""ВыборКогда"""; + КонецЕсли; + + СхПроцессорыСхемЗапросаСлужебныйКлиентСервер + .УстановитьВыборКогда(СхемаЗапроса, _Предикат, ЗначениеИстина, ЗначениеЛожь, Псевдоним); + Возврат ЭтотОбъект; + +КонецФункции + +// +// +Функция Количество(Поле) Экспорт + СхПроцессорыСхемЗапросаСлужебныйКлиентСервер + .УстановитьКоличество(СхемаЗапроса, Поле); + Возврат ЭтотОбъект; +КонецФункции + +// +// +Функция Сумма(Поле) Экспорт + СхПроцессорыСхемЗапросаСлужебныйКлиентСервер + .УстановитьСумму(СхемаЗапроса, Поле); + Возврат ЭтотОбъект; +КонецФункции + +// +// +Функция Максимум(Поле) Экспорт + СхПроцессорыСхемЗапросаСлужебныйКлиентСервер + .УстановитьМаксимум(СхемаЗапроса, Поле); + Возврат ЭтотОбъект; +КонецФункции + +// +// +Функция Минимум(Поле) Экспорт + СхПроцессорыСхемЗапросаСлужебныйКлиентСервер + .УстановитьМинимум(СхемаЗапроса, Поле); + Возврат ЭтотОбъект; +КонецФункции + +// +// +Функция Выразить(Поле, ОписаниеТипа, Псевдоним = "") Экспорт + СхПроцессорыСхемЗапросаСлужебныйКлиентСервер + .УстановитьВыразить(СхемаЗапроса, Поле, ОписаниеТипа, Псевдоним); + Возврат ЭтотОбъект; +КонецФункции + // // Функция Упорядочить(Поля) Экспорт - СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер + СхПроцессорыСхемЗапросаСлужебныйКлиентСервер .УстановитьПорядок(СхемаЗапроса, Поля); Возврат ЭтотОбъект; КонецФункции @@ -151,7 +210,7 @@ // // Функция Итоги(Поля) Экспорт - СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер + СхПроцессорыСхемЗапросаСлужебныйКлиентСервер .УстановитьИтоги(СхемаЗапроса, Поля); Возврат ЭтотОбъект; КонецФункции @@ -162,13 +221,13 @@ Если ТипЗнч(ИсточникДанных) = Тип("Строка") Тогда _ИсточникДанных = ИсточникДанных; - ИначеЕсли ТипЗнч(ИсточникДанных) = Тип("ОбработкаОбъект.СЗ_ПроцессорСхемЗапроса") Тогда + ИначеЕсли ТипЗнч(ИсточникДанных) = Тип("ОбработкаОбъект.СхПроцессорСхемЗапроса") Тогда _ИсточникДанных = ИсточникДанных.Получить(); Иначе ВызватьИсключение "Объединить: неверный тип источника данных"; КонецЕсли; - СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер + СхПроцессорыСхемЗапросаСлужебныйКлиентСервер .УстановитьОбъединение(СхемаЗапроса, _ИсточникДанных); Возврат ЭтотОбъект; @@ -180,13 +239,13 @@ Если ТипЗнч(ИсточникДанных) = Тип("Строка") Тогда _ИсточникДанных = ИсточникДанных; - ИначеЕсли ТипЗнч(ИсточникДанных) = Тип("ОбработкаОбъект.СЗ_ПроцессорСхемЗапроса") Тогда + ИначеЕсли ТипЗнч(ИсточникДанных) = Тип("ОбработкаОбъект.СхПроцессорСхемЗапроса") Тогда _ИсточникДанных = ИсточникДанных.Получить(); Иначе ВызватьИсключение "Объединить: неверный тип источника данных"; КонецЕсли; - СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер + СхПроцессорыСхемЗапросаСлужебныйКлиентСервер .УстановитьОбъединениеВсе(СхемаЗапроса, _ИсточникДанных); Возврат ЭтотОбъект; @@ -195,7 +254,7 @@ // // Функция Параметры(Параметры) Экспорт - СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер.УстановитьПараметры(СхемаЗапроса, Параметры); + СхПроцессорыСхемЗапросаСлужебныйКлиентСервер.УстановитьПараметры(СхемаЗапроса, Параметры); Возврат ЭтотОбъект; КонецФункции @@ -216,7 +275,7 @@ // TODO: ИсточникДанных может быть структурой? Что делать в этом случае? Если ТипЗнч(ИсточникДанных) = Тип("Строка") Тогда _ИсточникДанных = ИсточникДанных; - ИначеЕсли ТипЗнч(ИсточникДанных) = Тип("ОбработкаОбъект.СЗ_ПроцессорСхемЗапроса") Тогда + ИначеЕсли ТипЗнч(ИсточникДанных) = Тип("ОбработкаОбъект.СхПроцессорСхемЗапроса") Тогда _ИсточникДанных = ИсточникДанных.Получить(); Иначе ВызватьИсключение "ЛевоеСоединение: неверный тип источника данных"; @@ -224,13 +283,13 @@ Если ТипЗнч(Предикат) = Тип("Структура") Или Предикат = Неопределено Тогда _Предикат = Предикат; - ИначеЕсли ТипЗнч(Предикат) = Тип("ОбработкаОбъект.СЗ_ПроцессорПредикатов") Тогда + ИначеЕсли ТипЗнч(Предикат) = Тип("ОбработкаОбъект.СхПроцессорПредикатов") Тогда _Предикат = Предикат.Получить(); Иначе ВызватьИсключение "ЛевоеСоединение: неверный тип предиката"; КонецЕсли; - СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер.ДобавитьСоединение( + СхПроцессорыСхемЗапросаСлужебныйКлиентСервер.ДобавитьСоединение( СхемаЗапроса, ТипСоединения, _ИсточникДанных, _Предикат); КонецПроцедуры diff --git a/src/cfe/DataProcessors/СЗ_ПроцессорСхемЗапроса/Forms/Форма.xml b/src/cfe/DataProcessors/СхПроцессорСхемЗапроса/Forms/Форма.xml similarity index 100% rename from src/cfe/DataProcessors/СЗ_ПроцессорСхемЗапроса/Forms/Форма.xml rename to src/cfe/DataProcessors/СхПроцессорСхемЗапроса/Forms/Форма.xml diff --git a/src/cfe/DataProcessors/СЗ_ПроцессорСхемЗапроса/Forms/Форма/Ext/Form.xml b/src/cfe/DataProcessors/СхПроцессорСхемЗапроса/Forms/Форма/Ext/Form.xml similarity index 91% rename from src/cfe/DataProcessors/СЗ_ПроцессорСхемЗапроса/Forms/Форма/Ext/Form.xml rename to src/cfe/DataProcessors/СхПроцессорСхемЗапроса/Forms/Форма/Ext/Form.xml index 5939c6a..dda9a02 100644 --- a/src/cfe/DataProcessors/СЗ_ПроцессорСхемЗапроса/Forms/Форма/Ext/Form.xml +++ b/src/cfe/DataProcessors/СхПроцессорСхемЗапроса/Forms/Форма/Ext/Form.xml @@ -4,7 +4,7 @@ - cfg:DataProcessorObject.СЗ_ПроцессорСхемЗапроса + cfg:DataProcessorObject.СхПроцессорСхемЗапроса true diff --git a/src/cfe/DataProcessors/СЗ_ПроцессорСхемЗапроса/Forms/Форма/Ext/Form/Module.bsl b/src/cfe/DataProcessors/СхПроцессорСхемЗапроса/Forms/Форма/Ext/Form/Module.bsl similarity index 64% rename from src/cfe/DataProcessors/СЗ_ПроцессорСхемЗапроса/Forms/Форма/Ext/Form/Module.bsl rename to src/cfe/DataProcessors/СхПроцессорСхемЗапроса/Forms/Форма/Ext/Form/Module.bsl index f780ceb..7d501c6 100644 --- a/src/cfe/DataProcessors/СЗ_ПроцессорСхемЗапроса/Forms/Форма/Ext/Form/Module.bsl +++ b/src/cfe/DataProcessors/СхПроцессорСхемЗапроса/Forms/Форма/Ext/Form/Module.bsl @@ -15,63 +15,63 @@ _ИсточникДанных = ИсточникДанных.Получить(); КонецЕсли; - СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер.УстановитьИсточникДанных(СхемаЗапроса, + СхПроцессорыСхемЗапросаСлужебныйКлиентСервер.УстановитьИсточникДанных(СхемаЗапроса, _ИсточникДанных, Первые, Различные, Разрешенные); КонецПроцедуры &НаКлиенте Функция Псевдоним(ИмяПсевдонима) Экспорт - СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер + СхПроцессорыСхемЗапросаСлужебныйКлиентСервер .УстановитьПсевдонимИсточника(СхемаЗапроса, ИмяПсевдонима); Возврат ЭтотОбъект; КонецФункции &НаКлиенте Функция ВТаблицуЗначений() Экспорт - ТаблицаЗначений = СЗ_ПроцессорыСхемЗапросаСлужебныйВызовСервера + ТаблицаЗначений = СхПроцессорыСхемЗапросаСлужебныйВызовСервера .ПолучитьТаблицуЗначений(СхемаЗапроса); Возврат ТаблицаЗначений; КонецФункции &НаКлиенте Функция ВМассив(ИмяКолонки) Экспорт - Массив = СЗ_ПроцессорыСхемЗапросаСлужебныйВызовСервера + Массив = СхПроцессорыСхемЗапросаСлужебныйВызовСервера .ПолучитьМассив(СхемаЗапроса, ИмяКолонки); Возврат Массив; КонецФункции &НаКлиенте Функция Первые(Количество) Экспорт - СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер + СхПроцессорыСхемЗапросаСлужебныйКлиентСервер .УстановитьПервые(СхемаЗапроса, Количество); Возврат ЭтотОбъект; КонецФункции &НаКлиенте Функция Различные() Экспорт - СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер + СхПроцессорыСхемЗапросаСлужебныйКлиентСервер .УстановитьРазличные(СхемаЗапроса); Возврат ЭтотОбъект; КонецФункции &НаКлиенте Функция Разрешенные() Экспорт - СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер + СхПроцессорыСхемЗапросаСлужебныйКлиентСервер .УстановитьРазрешенные(СхемаЗапроса); Возврат ЭтотОбъект; КонецФункции &НаКлиенте Функция Выбрать(Поля) Экспорт - СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер + СхПроцессорыСхемЗапросаСлужебныйКлиентСервер .УстановитьПоляВыборки(СхемаЗапроса, Поля); Возврат ЭтотОбъект; КонецФункции &НаКлиенте Функция ВыбратьВсе() Экспорт - СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер + СхПроцессорыСхемЗапросаСлужебныйКлиентСервер .УстановитьВыборВсехПолей(СхемаЗапроса); Возврат ЭтотОбъект; КонецФункции @@ -87,7 +87,7 @@ ВызватьИсключение "Неверный тип предиката в методе ""Где"""; КонецЕсли; - СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер.УстановитьУсловие(СхемаЗапроса, _Предикат); + СхПроцессорыСхемЗапросаСлужебныйКлиентСервер.УстановитьУсловие(СхемаЗапроса, _Предикат); Возврат ЭтотОбъект; КонецФункции @@ -111,21 +111,73 @@ &НаКлиенте Функция Сгруппировать(Поля) Экспорт - СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер + СхПроцессорыСхемЗапросаСлужебныйКлиентСервер .УстановитьГруппировку(СхемаЗапроса, Поля); Возврат ЭтотОбъект; КонецФункции +&НаКлиенте +Функция ВыборКогда(Предикат, ЗначениеИстина, ЗначениеЛожь, Псевдоним = "") Экспорт + + Если ТипЗнч(Предикат) = Тип("Структура") Тогда + _Предикат = Предикат; + ИначеЕсли ТипЗнч(Предикат) = Тип("ФормаКлиентскогоПриложения") Тогда + _Предикат = Предикат.Получить(); + Иначе + ВызватьИсключение "Неверный тип предиката в методе ""ВыборКогда"""; + КонецЕсли; + + СхПроцессорыСхемЗапросаСлужебныйКлиентСервер + .УстановитьВыборКогда(СхемаЗапроса, _Предикат, ЗначениеИстина, ЗначениеЛожь, Псевдоним); + Возврат ЭтотОбъект; + +КонецФункции + +&НаКлиенте +Функция Количество(Поле) Экспорт + СхПроцессорыСхемЗапросаСлужебныйКлиентСервер + .УстановитьКоличество(СхемаЗапроса, Поле); + Возврат ЭтотОбъект; +КонецФункции + +&НаКлиенте +Функция Сумма(Поле) Экспорт + СхПроцессорыСхемЗапросаСлужебныйКлиентСервер + .УстановитьСумму(СхемаЗапроса, Поле); + Возврат ЭтотОбъект; +КонецФункции + +&НаКлиенте +Функция Максимум(Поле) Экспорт + СхПроцессорыСхемЗапросаСлужебныйКлиентСервер + .УстановитьМаксимум(СхемаЗапроса, Поле); + Возврат ЭтотОбъект; +КонецФункции + +&НаКлиенте +Функция Минимум(Поле) Экспорт + СхПроцессорыСхемЗапросаСлужебныйКлиентСервер + .УстановитьМинимум(СхемаЗапроса, Поле); + Возврат ЭтотОбъект; +КонецФункции + +&НаКлиенте +Функция Выразить(Поле, ОписаниеТипа, Псевдоним = "") Экспорт + СхПроцессорыСхемЗапросаСлужебныйКлиентСервер + .УстановитьВыразить(СхемаЗапроса, Поле, ОписаниеТипа, Псевдоним); + Возврат ЭтотОбъект; +КонецФункции + &НаКлиенте Функция Упорядочить(Поля) Экспорт - СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер + СхПроцессорыСхемЗапросаСлужебныйКлиентСервер .УстановитьПорядок(СхемаЗапроса, Поля); Возврат ЭтотОбъект; КонецФункции &НаКлиенте Функция Итоги(Поля) Экспорт - СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер + СхПроцессорыСхемЗапросаСлужебныйКлиентСервер .УстановитьИтоги(СхемаЗапроса, Поля); Возврат ЭтотОбъект; КонецФункции @@ -141,7 +193,7 @@ ВызватьИсключение "Объединить: неверный тип источника данных"; КонецЕсли; - СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер + СхПроцессорыСхемЗапросаСлужебныйКлиентСервер .УстановитьОбъединение(СхемаЗапроса, _ИсточникДанных); Возврат ЭтотОбъект; @@ -158,7 +210,7 @@ ВызватьИсключение "Объединить: неверный тип источника данных"; КонецЕсли; - СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер + СхПроцессорыСхемЗапросаСлужебныйКлиентСервер .УстановитьОбъединениеВсе(СхемаЗапроса, _ИсточникДанных); Возврат ЭтотОбъект; @@ -166,7 +218,7 @@ &НаКлиенте Функция Параметры(Параметры) Экспорт - СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер.УстановитьПараметры(СхемаЗапроса, Параметры); + СхПроцессорыСхемЗапросаСлужебныйКлиентСервер.УстановитьПараметры(СхемаЗапроса, Параметры); Возврат ЭтотОбъект; КонецФункции @@ -201,7 +253,7 @@ ВызватьИсключение "ЛевоеСоединение: неверный тип предиката"; КонецЕсли; - СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер.ДобавитьСоединение( + СхПроцессорыСхемЗапросаСлужебныйКлиентСервер.ДобавитьСоединение( СхемаЗапроса, ТипСоединения, _ИсточникДанных, _Предикат); КонецПроцедуры diff --git a/src/cfe/Subsystems/СЗ_Основная.xml b/src/cfe/Subsystems/СЗ_Основная.xml deleted file mode 100644 index cc98031..0000000 --- a/src/cfe/Subsystems/СЗ_Основная.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - - - СЗ_Основная - - - ru - Схема запроса: основная - - - - true - false - false - - - - CommonModule.СЗ_Запрос - CommonModule.СЗ_ПроцессорыПредикатовКлиентСервер - CommonModule.СЗ_ПроцессорыПредикатовСлужебныйКлиентСервер - CommonModule.СЗ_ПроцессорыСхемЗапросаКлиентСервер - CommonModule.СЗ_ПроцессорыСхемЗапросаСлужебный - CommonModule.СЗ_ПроцессорыСхемЗапросаСлужебныйВызовСервера - CommonModule.СЗ_ПроцессорыСхемЗапросаСлужебныйКлиентСервер - DataProcessor.СЗ_ПроцессорСхемЗапроса - DataProcessor.СЗ_ПроцессорПредикатов - - - - - \ No newline at end of file diff --git a/src/cfe/Subsystems/СЗ_Обработки.xml b/src/cfe/Subsystems/СхОбработки.xml similarity index 89% rename from src/cfe/Subsystems/СЗ_Обработки.xml rename to src/cfe/Subsystems/СхОбработки.xml index cb463f2..1ddce7d 100644 --- a/src/cfe/Subsystems/СЗ_Обработки.xml +++ b/src/cfe/Subsystems/СхОбработки.xml @@ -2,7 +2,7 @@ - СЗ_Обработки + СхОбработки ru @@ -20,7 +20,7 @@ CommonPicture.СЗ_Логотип - DataProcessor.СЗ_КонсольФункциональныхЗапросов + DataProcessor.СхКонсольФункциональныхЗапросов diff --git a/src/cfe/Subsystems/СхОсновная.xml b/src/cfe/Subsystems/СхОсновная.xml new file mode 100644 index 0000000..8a54423 --- /dev/null +++ b/src/cfe/Subsystems/СхОсновная.xml @@ -0,0 +1,24 @@ + + + + + СхОсновная + + + ru + Схема запроса: основная + + + + true + false + false + + + + CommonModule.СхЗапрос + + + + + \ No newline at end of file diff --git a/src/cfe/Subsystems/СЗ_Тестирование.xml b/src/cfe/Subsystems/СхТестирование.xml similarity index 90% rename from src/cfe/Subsystems/СЗ_Тестирование.xml rename to src/cfe/Subsystems/СхТестирование.xml index 64a51cb..473fe22 100644 --- a/src/cfe/Subsystems/СЗ_Тестирование.xml +++ b/src/cfe/Subsystems/СхТестирование.xml @@ -2,7 +2,7 @@ - СЗ_Тестирование + СхТестирование ru @@ -16,7 +16,7 @@ - CommonModule.СЗ_ЗапросТест + CommonModule.СхЗапросТест