From e4d768bd9ac134bbd7f6cc3583d4fc558011574c Mon Sep 17 00:00:00 2001 From: Dmitry Date: Thu, 28 Feb 2019 13:34:23 +0300 Subject: [PATCH] =?UTF-8?q?=D1=80=D0=B0=D0=B7=D0=B2=D0=B5=D1=80=D1=82?= =?UTF-8?q?=D1=8B=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=B7=D0=B0=D0=BF=D1=80?= =?UTF-8?q?=D0=BE=D1=81=D0=BE=D0=B2=20"=D0=BF=D1=80=D0=B5=D0=B4=D1=81?= =?UTF-8?q?=D1=82=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B9"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Ext/ObjectModule.bsl | 20 +++++ .../Forms/Форма/Ext/Form.xml | 52 +++++++++-- .../Forms/Форма/Ext/Form/Module.bsl | 86 +++++++++++++++++++ 3 files changed, 152 insertions(+), 6 deletions(-) diff --git a/src/ИнструментыРазработчикаКонсольЗапросов/Ext/ObjectModule.bsl b/src/ИнструментыРазработчикаКонсольЗапросов/Ext/ObjectModule.bsl index 813f62d..8198f4d 100644 --- a/src/ИнструментыРазработчикаКонсольЗапросов/Ext/ObjectModule.bsl +++ b/src/ИнструментыРазработчикаКонсольЗапросов/Ext/ObjectModule.bsl @@ -2134,6 +2134,26 @@ Возврат ИмяТипа; КонецФункции +Функция SPS_РазвернутьТекстЗапроса(ТекстЗапроса, ПараметрыЗапроса) Экспорт + // Массив текстов запросов. + МассивТекстов = ПостроитьМассивТекстовЗапросов(ТекстЗапроса); + + ТекстЗапроса = СтрЗаменить(ТекстЗапроса ,"\;", ";"); // Экранирование точки с запятой. + Запрос = Новый Запрос(ТекстЗапроса); + Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц(); + + // Загрузка параметров. + ЗагрузкаПараметровВЗапрос(Запрос, ПараметрыЗапроса); + + ///SPS + SPS_ЗаполнениеОбщихНаборовДанных(Запрос); + МассивТекстов = ПостроитьМассивТекстовЗапросов(Запрос.Текст); + SPS_ЗаполнитьЗначенияПараметровИзЗапроса(Запрос, ПараметрыЗапроса); + ///SPS|| + + Возврат Запрос.Текст; +КонецФункции + #Область Копии_ЗарплатаКадрыОбщиеНаборыДанных Процедура SPS_ЗаменитьОбщийТекстЗапросаОбщиеЗапросы(ТекстЗапросаПриемник, ТолькоРазрешенные) Попытка diff --git a/src/ИнструментыРазработчикаКонсольЗапросов/Forms/Форма/Ext/Form.xml b/src/ИнструментыРазработчикаКонсольЗапросов/Forms/Форма/Ext/Form.xml index 8e1349b..7dd502d 100644 --- a/src/ИнструментыРазработчикаКонсольЗапросов/Forms/Форма/Ext/Form.xml +++ b/src/ИнструментыРазработчикаКонсольЗапросов/Forms/Форма/Ext/Form.xml @@ -203,12 +203,31 @@ - - Объект.ИспользоватьПредставления - Auto - - - + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>SPS представления группа1</v8:content> + </v8:item> + + + + ru + SPS представления группа1 + + + None + false + + + + Объект.ИспользоватьПредставления + Auto + + + + + @@ -369,6 +388,11 @@ Form.Command.СоздатьТекстЗапросаДляКонфигуратора + @@ -1018,6 +1042,22 @@ ЗадатьУникальныйИдентификатор DontUse + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Развернуть текст запроса</v8:content> + </v8:item> + + + + ru + Получить используемый текст запроса (без представлений) + + + SPS_РазвернутьТекстЗапроса + true + diff --git a/src/ИнструментыРазработчикаКонсольЗапросов/Forms/Форма/Ext/Form/Module.bsl b/src/ИнструментыРазработчикаКонсольЗапросов/Forms/Форма/Ext/Form/Module.bsl index 2ff09f5..a90ca90 100644 --- a/src/ИнструментыРазработчикаКонсольЗапросов/Forms/Форма/Ext/Form/Module.bsl +++ b/src/ИнструментыРазработчикаКонсольЗапросов/Forms/Форма/Ext/Form/Module.bsl @@ -1686,5 +1686,91 @@ ТекущаяСтрока.ЗначениеВФорме = ЗначениеПараметраУникальныйИдентификатор; КонецПроцедуры +#КонецОбласти + +#Область ДоработкиSPS + +&НаКлиенте +Процедура SPS_РазвернутьТекстЗапроса(Команда) + Если НЕ Объект.ИспользоватьПредставления Тогда + Возврат; + КонецЕсли; + + // СЗахватывается" текущий запрос из списка запросов. + ИндексТекущегоЗапроса = ИндексТекущегоВопроса(); + Если ИндексТекущегоЗапроса = Неопределено Тогда + ТекстСообщения = НСтр("ru = 'Выберите запрос.'"); + ПоказатьСообщениеПользователю(ТекстСообщения, "Объект"); + Возврат; + КонецЕсли; + + НеотформатированныйТекст = ТекстЗапроса.ПолучитьТекст(); + ОтформатированныйТекст = СтрЗаменить(НеотформатированныйТекст, "|", ""); + + Если ПустаяСтрока(ОтформатированныйТекст) Тогда + ТекстПредупреждения = НСтр("ru = 'Введите текст запроса.'"); + ПоказатьПредупреждение(, ТекстПредупреждения ); + Возврат; + КонецЕсли; + + ТекстЗапроса.УстановитьТекст(ОтформатированныйТекст); + Объект.Запросы.Получить(ИндексТекущегоЗапроса - 1).Текст = ОтформатированныйТекст; + + // Определение текста запроса. + ВыделенныйТекст = Элементы.ТекстЗапроса.ВыделенныйТекст; + Если Не ПустаяСтрока(ВыделенныйТекст) Тогда + Текст = ВыделенныйТекст; + Иначе + Текст = Объект.Запросы.Получить(ИндексТекущегоЗапроса - 1).Текст; + КонецЕсли; + + ВыводитьИдентификатор = Объект.ВыводитьВРезультатахЗапросаЗначенияСсылок; + + ТекстСообщения = ""; + + // Серверная часть для выполнения запроса. + // ВыполнитьЗапросСервер(ИндексТекущегоЗапроса, РезультатЗапроса, ВыводитьВременныеТаблицы, ВыводитьИдентификатор, Текст, ТекстСообщения); + + + ТекстРезультат = SPS_РазвернутьТекстЗапросаНаСервере(ИндексТекущегоЗапроса, Текст); + + Если НЕ ТекстРезультат = Текст Тогда + Если Не ПустаяСтрока(ВыделенныйТекст) Тогда + НовыйТекст = СтрЗаменить(ОтформатированныйТекст, ВыделенныйТекст, ТекстРезультат); + Иначе + НовыйТекст = ТекстРезультат; + КонецЕсли; + + ТекстЗапроса.УстановитьТекст(НовыйТекст); + Объект.Запросы.Получить(ИндексТекущегоЗапроса - 1).Текст = НовыйТекст; + КонецЕсли; +КонецПроцедуры + +&НаСервере +Функция SPS_РазвернутьТекстЗапросаНаСервере(ИндексТекущегоЗапроса, ТекстЗапроса) + // Заполнение параметров. + ЗаполнитьПараметрыПриВыполненииЗапроса(ТекстЗапроса); + + // Убрать строки с комментариями. + КоличествоСтрок = СтрЧислоСтрок(ТекстЗапроса); + Текст = ""; + Для НомерСтроки = 1 По КоличествоСтрок Цикл + Фрагмент = СтрПолучитьСтроку(ТекстЗапроса, НомерСтроки); + Если Лев(СокрЛ(Фрагмент), 2) <> "//" Тогда + Текст = Текст + Фрагмент + Символы.ПС; + КонецЕсли; + КонецЦикла; + + // Выбор текущего запроса. + ТекущийЗапрос = Объект.Запросы.Получить(ИндексТекущегоЗапроса - 1); + // Выбор параметров по текущему запросу. + Фильтр = Новый Структура; + Фильтр.Вставить("ИдентификаторЗапроса", ТекущийЗапрос.Идентификатор); + МассивПараметров = Объект.Параметры.НайтиСтроки(Фильтр); + + РезультатТекст = ОбъектОбработки().SPS_РазвернутьТекстЗапроса(ТекстЗапроса, МассивПараметров); + + Возврат РезультатТекст; +КонецФункции #КонецОбласти