развертывание запросов "представлений"
This commit is contained in:
parent
b74ecef790
commit
e4d768bd9a
@ -2134,6 +2134,26 @@
|
|||||||
Возврат ИмяТипа;
|
Возврат ИмяТипа;
|
||||||
КонецФункции
|
КонецФункции
|
||||||
|
|
||||||
|
Функция SPS_РазвернутьТекстЗапроса(ТекстЗапроса, ПараметрыЗапроса) Экспорт
|
||||||
|
// Массив текстов запросов.
|
||||||
|
МассивТекстов = ПостроитьМассивТекстовЗапросов(ТекстЗапроса);
|
||||||
|
|
||||||
|
ТекстЗапроса = СтрЗаменить(ТекстЗапроса ,"\;", ";"); // Экранирование точки с запятой.
|
||||||
|
Запрос = Новый Запрос(ТекстЗапроса);
|
||||||
|
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц();
|
||||||
|
|
||||||
|
// Загрузка параметров.
|
||||||
|
ЗагрузкаПараметровВЗапрос(Запрос, ПараметрыЗапроса);
|
||||||
|
|
||||||
|
///SPS
|
||||||
|
SPS_ЗаполнениеОбщихНаборовДанных(Запрос);
|
||||||
|
МассивТекстов = ПостроитьМассивТекстовЗапросов(Запрос.Текст);
|
||||||
|
SPS_ЗаполнитьЗначенияПараметровИзЗапроса(Запрос, ПараметрыЗапроса);
|
||||||
|
///SPS||
|
||||||
|
|
||||||
|
Возврат Запрос.Текст;
|
||||||
|
КонецФункции
|
||||||
|
|
||||||
#Область Копии_ЗарплатаКадрыОбщиеНаборыДанных
|
#Область Копии_ЗарплатаКадрыОбщиеНаборыДанных
|
||||||
Процедура SPS_ЗаменитьОбщийТекстЗапросаОбщиеЗапросы(ТекстЗапросаПриемник, ТолькоРазрешенные)
|
Процедура SPS_ЗаменитьОбщийТекстЗапросаОбщиеЗапросы(ТекстЗапросаПриемник, ТолькоРазрешенные)
|
||||||
Попытка
|
Попытка
|
||||||
|
@ -203,12 +203,31 @@
|
|||||||
<ContextMenu name="Декорация1КонтекстноеМеню" id="193"/>
|
<ContextMenu name="Декорация1КонтекстноеМеню" id="193"/>
|
||||||
<ExtendedTooltip name="Декорация1РасширеннаяПодсказка" id="194"/>
|
<ExtendedTooltip name="Декорация1РасширеннаяПодсказка" id="194"/>
|
||||||
</PictureDecoration>
|
</PictureDecoration>
|
||||||
<CheckBoxField name="ИспользоватьПредставления" id="189">
|
<UsualGroup name="SPS_Представления_Группа1" id="195">
|
||||||
<DataPath>Объект.ИспользоватьПредставления</DataPath>
|
<Title>
|
||||||
<CheckBoxType>Auto</CheckBoxType>
|
<v8:item>
|
||||||
<ContextMenu name="ИспользоватьПредставленияКонтекстноеМеню" id="190"/>
|
<v8:lang>ru</v8:lang>
|
||||||
<ExtendedTooltip name="ИспользоватьПредставленияРасширеннаяПодсказка" id="191"/>
|
<v8:content>SPS представления группа1</v8:content>
|
||||||
</CheckBoxField>
|
</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>
|
||||||
|
<ContextMenu name="ИспользоватьПредставленияКонтекстноеМеню" id="190"/>
|
||||||
|
<ExtendedTooltip name="ИспользоватьПредставленияРасширеннаяПодсказка" id="191"/>
|
||||||
|
</CheckBoxField>
|
||||||
|
</ChildItems>
|
||||||
|
</UsualGroup>
|
||||||
</ChildItems>
|
</ChildItems>
|
||||||
</UsualGroup>
|
</UsualGroup>
|
||||||
<Table name="Параметры" id="1">
|
<Table name="Параметры" id="1">
|
||||||
@ -369,6 +388,11 @@
|
|||||||
<CommandName>Form.Command.СоздатьТекстЗапросаДляКонфигуратора</CommandName>
|
<CommandName>Form.Command.СоздатьТекстЗапросаДляКонфигуратора</CommandName>
|
||||||
<ExtendedTooltip name="ТекстЗапросаКонтекстноеМенюСоздатьТекстЗапросаДляКонфигуратораExtendedTooltip" id="79"/>
|
<ExtendedTooltip name="ТекстЗапросаКонтекстноеМенюСоздатьТекстЗапросаДляКонфигуратораExtendedTooltip" id="79"/>
|
||||||
</Button>
|
</Button>
|
||||||
|
<Button name="ТекстЗапросаКонтекстноеМенюSPS_РазвернутьТекстЗапроса" id="197">
|
||||||
|
<Type>CommandBarButton</Type>
|
||||||
|
<CommandName>Form.Command.SPS_РазвернутьТекстЗапроса</CommandName>
|
||||||
|
<ExtendedTooltip name="ТекстЗапросаКонтекстноеМенюSPS_РазвернутьТекстЗапросаРасширеннаяПодсказка" id="198"/>
|
||||||
|
</Button>
|
||||||
</ChildItems>
|
</ChildItems>
|
||||||
</ButtonGroup>
|
</ButtonGroup>
|
||||||
<Popup name="ТекстЗапросаКонтекстноеМенюГруппаОформление" id="170">
|
<Popup name="ТекстЗапросаКонтекстноеМенюГруппаОформление" id="170">
|
||||||
@ -1018,6 +1042,22 @@
|
|||||||
<Action>ЗадатьУникальныйИдентификатор</Action>
|
<Action>ЗадатьУникальныйИдентификатор</Action>
|
||||||
<CurrentRowUse>DontUse</CurrentRowUse>
|
<CurrentRowUse>DontUse</CurrentRowUse>
|
||||||
</Command>
|
</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>
|
</Commands>
|
||||||
<Parameters>
|
<Parameters>
|
||||||
<Parameter name="ДействиеВыбора">
|
<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