|
Вставляет в модуль шаблон установки параметров запроса
Установите курсор ниже текста запроса и нажмите Ctrl+Shift+Q
Поместите скрипт в папку Scripts и перезагрузите скрипты Ctrl+Shift+R
//@script_name SetQueryParameters
//@script_display_name Установить параметры запроса
//@script_description Вставляет в модуль шаблон для установки параметров запроса
//@script_author m.bolsun
//@script_developer_url https://turboconf.ru
//@script_version 2
//Скрипт будет вызываться по Control+Shift+Q
//@script_hotkey Control+Shift+Q
//Восстанавливать буфер обмена после завершения скрипта
//@retain_clipboard 1
//Скрипт доступен в режиме Предприятия
//@enterprise_mode 1
//Скрывать манипуляции с конфигуратором
//@hide_actions 1
Процедура ВставитьШаблонУстановкиПараметров()
ТК = Новый ТурбоКонф;
Поз = 0;
ВыделенныйТекст = "";
Текст = ТК.ПолучитьТекстМодуля(ВыделенныйТекст, Поз);
//Отсекаем текст ниже от курсора
Текст = Лев(Текст, Поз);
//Ищем начало запроса
РегВыражение = Новый РегулярноеВыражение("""[\s|]*(?:выбрать|select)");
РегВыражение.ИгнорироватьРегистр = Истина;
Совпадения = РегВыражение.НайтиСовпадения(Текст);
Если Совпадения.Количество() = 0 Тогда
Возврат;
КонецЕсли;
//Берем последнее совпадение, это начало искомого текст запроса
ТекстЗапроса = Сред(Текст, Совпадения[Совпадения.Количество()-1].Индекс);
Сообщить(ТекстЗапроса);
//Ищем параметры
//Найти все сопадения, которые начинаются с символа & и следующими за ним буквами, цифрами и _
//Имя параметра поместить в группу
РегВыражение = Новый РегулярноеВыражение("&([\w\d_]+)");
Совпадения = РегВыражение.НайтиСовпадения(ТекстЗапроса);
Если Совпадения.Количество() = 0 Тогда
Возврат;
КонецЕсли;
//Заполняем список только уникальными параметрами
Параметры = Новый СписокЗначений;
Для каждого Совпадение Из Совпадения Цикл
Параметр = Совпадение.Группы[1].Значение;
Если Параметры.НайтиПоЗначению(Параметр) = Неопределено Тогда
Параметры.Добавить(Параметр);
КонецЕсли;
КонецЦикла;
ИмяЗапроса = "Запрос";
Отступ = "";
//Ищем имя запроса
РегВыражение = Новый РегулярноеВыражение("(?[\t ]*)(?[\w\d_]+)\s*=\s*(?:новый|new)\s*(?:запрос|query)");
РегВыражение.ИгнорироватьРегистр = Истина;
Совпадения = РегВыражение.НайтиСовпадения(Текст);
Если Совпадения.Количество() > 0 Тогда
//Берем последнее совпадение, это искомое имя запроса
Отступ = Совпадения[Совпадения.Количество()-1].Группы[1].Значение;
ИмяЗапроса = Совпадения[Совпадения.Количество()-1].Группы[2].Значение;
КонецЕсли;
//Формируем текст для вставки
ТекстШаблона = "";
Для каждого Параметр Из Параметры Цикл
ТекстШаблона = ТекстШаблона + Отступ + ИмяЗапроса + ".УстановитьПараметр(""" + Параметр.Значение + """, );";
ТекстШаблона = ТекстШаблона + Символы.ПС;
КонецЦикла;
ТК.Клавиша(Keys.End);
ТК.Клавиша(Keys.Enter);
ТК.ВставитьТекст(СокрЛ(ТекстШаблона));
КонецПроцедуры
ВставитьШаблонУстановкиПараметров();
Страница разработки в соцсетях: https://vk.com/turboconf
Улучшенная версия. Скрипт входит основную поставку.