развертывание запросов "представлений"
This commit is contained in:
parent
b74ecef790
commit
e4d768bd9a
@ -2134,6 +2134,26 @@
|
||||
Возврат ИмяТипа;
|
||||
КонецФункции
|
||||
|
||||
Функция SPS_РазвернутьТекстЗапроса(ТекстЗапроса, ПараметрыЗапроса) Экспорт
|
||||
// Массив текстов запросов.
|
||||
МассивТекстов = ПостроитьМассивТекстовЗапросов(ТекстЗапроса);
|
||||
|
||||
ТекстЗапроса = СтрЗаменить(ТекстЗапроса ,"\;", ";"); // Экранирование точки с запятой.
|
||||
Запрос = Новый Запрос(ТекстЗапроса);
|
||||
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц();
|
||||
|
||||
// Загрузка параметров.
|
||||
ЗагрузкаПараметровВЗапрос(Запрос, ПараметрыЗапроса);
|
||||
|
||||
///SPS
|
||||
SPS_ЗаполнениеОбщихНаборовДанных(Запрос);
|
||||
МассивТекстов = ПостроитьМассивТекстовЗапросов(Запрос.Текст);
|
||||
SPS_ЗаполнитьЗначенияПараметровИзЗапроса(Запрос, ПараметрыЗапроса);
|
||||
///SPS||
|
||||
|
||||
Возврат Запрос.Текст;
|
||||
КонецФункции
|
||||
|
||||
#Область Копии_ЗарплатаКадрыОбщиеНаборыДанных
|
||||
Процедура SPS_ЗаменитьОбщийТекстЗапросаОбщиеЗапросы(ТекстЗапросаПриемник, ТолькоРазрешенные)
|
||||
Попытка
|
||||
|
@ -203,6 +203,23 @@
|
||||
<ContextMenu name="Декорация1КонтекстноеМеню" id="193"/>
|
||||
<ExtendedTooltip name="Декорация1РасширеннаяПодсказка" id="194"/>
|
||||
</PictureDecoration>
|
||||
<UsualGroup name="SPS_Представления_Группа1" id="195">
|
||||
<Title>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>SPS представления группа1</v8:content>
|
||||
</v8:item>
|
||||
</Title>
|
||||
<ToolTip>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>SPS представления группа1</v8:content>
|
||||
</v8:item>
|
||||
</ToolTip>
|
||||
<Representation>None</Representation>
|
||||
<ShowTitle>false</ShowTitle>
|
||||
<ExtendedTooltip name="SPS_Представления_Группа1РасширеннаяПодсказка" id="196"/>
|
||||
<ChildItems>
|
||||
<CheckBoxField name="ИспользоватьПредставления" id="189">
|
||||
<DataPath>Объект.ИспользоватьПредставления</DataPath>
|
||||
<CheckBoxType>Auto</CheckBoxType>
|
||||
@ -211,6 +228,8 @@
|
||||
</CheckBoxField>
|
||||
</ChildItems>
|
||||
</UsualGroup>
|
||||
</ChildItems>
|
||||
</UsualGroup>
|
||||
<Table name="Параметры" id="1">
|
||||
<CommandBarLocation>None</CommandBarLocation>
|
||||
<Width>90</Width>
|
||||
@ -369,6 +388,11 @@
|
||||
<CommandName>Form.Command.СоздатьТекстЗапросаДляКонфигуратора</CommandName>
|
||||
<ExtendedTooltip name="ТекстЗапросаКонтекстноеМенюСоздатьТекстЗапросаДляКонфигуратораExtendedTooltip" id="79"/>
|
||||
</Button>
|
||||
<Button name="ТекстЗапросаКонтекстноеМенюSPS_РазвернутьТекстЗапроса" id="197">
|
||||
<Type>CommandBarButton</Type>
|
||||
<CommandName>Form.Command.SPS_РазвернутьТекстЗапроса</CommandName>
|
||||
<ExtendedTooltip name="ТекстЗапросаКонтекстноеМенюSPS_РазвернутьТекстЗапросаРасширеннаяПодсказка" id="198"/>
|
||||
</Button>
|
||||
</ChildItems>
|
||||
</ButtonGroup>
|
||||
<Popup name="ТекстЗапросаКонтекстноеМенюГруппаОформление" id="170">
|
||||
@ -1018,6 +1042,22 @@
|
||||
<Action>ЗадатьУникальныйИдентификатор</Action>
|
||||
<CurrentRowUse>DontUse</CurrentRowUse>
|
||||
</Command>
|
||||
<Command name="SPS_РазвернутьТекстЗапроса" id="20">
|
||||
<Title>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Развернуть текст запроса</v8:content>
|
||||
</v8:item>
|
||||
</Title>
|
||||
<ToolTip>
|
||||
<v8:item>
|
||||
<v8:lang>ru</v8:lang>
|
||||
<v8:content>Получить используемый текст запроса (без представлений)</v8:content>
|
||||
</v8:item>
|
||||
</ToolTip>
|
||||
<Action>SPS_РазвернутьТекстЗапроса</Action>
|
||||
<ModifiesSavedData>true</ModifiesSavedData>
|
||||
</Command>
|
||||
</Commands>
|
||||
<Parameters>
|
||||
<Parameter name="ДействиеВыбора">
|
||||
|
@ -1686,5 +1686,91 @@
|
||||
ТекущаяСтрока.ЗначениеВФорме = ЗначениеПараметраУникальныйИдентификатор;
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область ДоработкиSPS
|
||||
|
||||
&НаКлиенте
|
||||
Процедура SPS_РазвернутьТекстЗапроса(Команда)
|
||||
Если НЕ Объект.ИспользоватьПредставления Тогда
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
// СЗахватывается" текущий запрос из списка запросов.
|
||||
ИндексТекущегоЗапроса = ИндексТекущегоВопроса();
|
||||
Если ИндексТекущегоЗапроса = Неопределено Тогда
|
||||
ТекстСообщения = НСтр("ru = 'Выберите запрос.'");
|
||||
ПоказатьСообщениеПользователю(ТекстСообщения, "Объект");
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
НеотформатированныйТекст = ТекстЗапроса.ПолучитьТекст();
|
||||
ОтформатированныйТекст = СтрЗаменить(НеотформатированныйТекст, "|", "");
|
||||
|
||||
Если ПустаяСтрока(ОтформатированныйТекст) Тогда
|
||||
ТекстПредупреждения = НСтр("ru = 'Введите текст запроса.'");
|
||||
ПоказатьПредупреждение(, ТекстПредупреждения );
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
ТекстЗапроса.УстановитьТекст(ОтформатированныйТекст);
|
||||
Объект.Запросы.Получить(ИндексТекущегоЗапроса - 1).Текст = ОтформатированныйТекст;
|
||||
|
||||
// Определение текста запроса.
|
||||
ВыделенныйТекст = Элементы.ТекстЗапроса.ВыделенныйТекст;
|
||||
Если Не ПустаяСтрока(ВыделенныйТекст) Тогда
|
||||
Текст = ВыделенныйТекст;
|
||||
Иначе
|
||||
Текст = Объект.Запросы.Получить(ИндексТекущегоЗапроса - 1).Текст;
|
||||
КонецЕсли;
|
||||
|
||||
ВыводитьИдентификатор = Объект.ВыводитьВРезультатахЗапросаЗначенияСсылок;
|
||||
|
||||
ТекстСообщения = "";
|
||||
|
||||
// Серверная часть для выполнения запроса.
|
||||
// ВыполнитьЗапросСервер(ИндексТекущегоЗапроса, РезультатЗапроса, ВыводитьВременныеТаблицы, ВыводитьИдентификатор, Текст, ТекстСообщения);
|
||||
|
||||
|
||||
ТекстРезультат = SPS_РазвернутьТекстЗапросаНаСервере(ИндексТекущегоЗапроса, Текст);
|
||||
|
||||
Если НЕ ТекстРезультат = Текст Тогда
|
||||
Если Не ПустаяСтрока(ВыделенныйТекст) Тогда
|
||||
НовыйТекст = СтрЗаменить(ОтформатированныйТекст, ВыделенныйТекст, ТекстРезультат);
|
||||
Иначе
|
||||
НовыйТекст = ТекстРезультат;
|
||||
КонецЕсли;
|
||||
|
||||
ТекстЗапроса.УстановитьТекст(НовыйТекст);
|
||||
Объект.Запросы.Получить(ИндексТекущегоЗапроса - 1).Текст = НовыйТекст;
|
||||
КонецЕсли;
|
||||
КонецПроцедуры
|
||||
|
||||
&НаСервере
|
||||
Функция SPS_РазвернутьТекстЗапросаНаСервере(ИндексТекущегоЗапроса, ТекстЗапроса)
|
||||
// Заполнение параметров.
|
||||
ЗаполнитьПараметрыПриВыполненииЗапроса(ТекстЗапроса);
|
||||
|
||||
// Убрать строки с комментариями.
|
||||
КоличествоСтрок = СтрЧислоСтрок(ТекстЗапроса);
|
||||
Текст = "";
|
||||
Для НомерСтроки = 1 По КоличествоСтрок Цикл
|
||||
Фрагмент = СтрПолучитьСтроку(ТекстЗапроса, НомерСтроки);
|
||||
Если Лев(СокрЛ(Фрагмент), 2) <> "//" Тогда
|
||||
Текст = Текст + Фрагмент + Символы.ПС;
|
||||
КонецЕсли;
|
||||
КонецЦикла;
|
||||
|
||||
// Выбор текущего запроса.
|
||||
ТекущийЗапрос = Объект.Запросы.Получить(ИндексТекущегоЗапроса - 1);
|
||||
// Выбор параметров по текущему запросу.
|
||||
Фильтр = Новый Структура;
|
||||
Фильтр.Вставить("ИдентификаторЗапроса", ТекущийЗапрос.Идентификатор);
|
||||
МассивПараметров = Объект.Параметры.НайтиСтроки(Фильтр);
|
||||
|
||||
РезультатТекст = ОбъектОбработки().SPS_РазвернутьТекстЗапроса(ТекстЗапроса, МассивПараметров);
|
||||
|
||||
Возврат РезультатТекст;
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
Loading…
Reference in New Issue
Block a user