Генерация параметров запроса

Добавил: bolsun, 13 марта 2018 07:59, обновлено: 02 июня 2018 14:43

Раздел: Обсуждение TurboConf

TurboConf Расширения Скрипты Уроки OneScript Обучение

Скачать

Вставляет в модуль шаблон установки параметров запроса

Image https://turboconf.ru/Content/Images/TurboConf_QueryParameters.gif

Использование

Установите курсор ниже текста запроса и нажмите 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


Скачать К списку тем

Комментарии

bolsun
02 июня 2018 14:43: #1

Улучшенная версия. Скрипт входит основную поставку.


TurboConf

Расширение возможностей

Конфигуратора 1С

Скачать

Бесплатный пробный период 14 дней