|
Иногда штатных скриптов может не хватать и нет времени ждать когда выйдет официальный. Есть решение! Можно использовать SDK TurboConf + OneScript.
Текущее SDK TurboConf:
https://turboconf.ru/Forum/Details/1468
https://turboconf.ru/Forum/Details/1469
Visual Studio Code
https://code.visualstudio.com/А также расширение языка 1С для него:
https://marketplace.visualstudio.com/items?itemName=xDrivenDevelopment.language-1c-bslОчень большим плюсом турбоконфа по моему мнению, это использование языка OneScript для разработки скриптов (за то, что OneScript появился на свет, отдельное спасибо Андрею Овсянкину, он же Evil Beaver). Что же это все значит... А ровно то, что любой уважающий себя одинэснег сможет без труда написать скрип для турбоконфа, потому что OneScript работает на языке 1С. Есть совсем небольшие отличия, например плюсом OneScript является то, что он понимает регулярные выражения.
http://oscript.io/ https://habr.com/post/301064/ https://infostart.ru/public/548028/В каталоге турбоконфа есть каталог "scripts", там и создаем наш новый скрипт. Вставляем директивы Турбоконфа (найти их описание можно в стандартном демоскрипте HeloWorld в том же каталоге):
// Обязательный аттрибут. Имя скрипта, без пробелов. Должно быть уникально в папке со скриптами. Может содержать буквы, цифры и знак _
//@script_name HelloWorld
// Представление имени скрипта
//@script_display_name Hello, World!
// Краткое описание скрипта
//@script_description Скрипт демонстрирует основы работы с TurboConf
// Автор скрипта
//@script_author m.bolsun
// Сайт разработчика
//@script_developer_url https://turboconf.ru
// Сочетание клавиш для вызова скрипта. Может быть переопределено пользователем в программе.
// Формат {Модификатор1}+{Модификатор2}+{Модификатор3}+Клавиша
// Значения клавиш содержатся в перечислении Клавиши (Keys)
// Примеры сочетаний: Control+Alt+Shift+A, Control+Alt+D1, Control+Shift+OemTilda, Alt+F
//@script_hotkey Control+D5
//Восстанавливать буфер обмена после выполнения скрипта.
//Если в процессе выполнения скрипта был использован буфер обмена, может быть полезно восстановить пользовательское значение после завершения работы
//@retain_clipboard 1
// Скрипт будет доступен в режиме Предприятия
//@enterprise_mode 1
// Во время выполнения скрипта, скрывать от пользователя все служебные действия с Конфигуратором
//@hide_actions 1
Нам нужен скрипт для преобразования процедуры в функцию и обратно. Скрипт будет запускаться по горячим клавишам Alt+S .
Далее пишем сам метод и его реализацию:
Не забываем сохранить и в конфигураторе нажать Ctrl+SHIFT+R - перезагрузка скриптов турбоконфа.
Сам скрипт в работе:
Текст скрипта:
//@script_name ProcFunc
//@script_display_name Из процедуры в функцию и обратно
//@script_description Заменяет процедуру на функцию и обратно
//@script_author nytlenc
//@script_developer_url https://infostart.ru/profile/44476/
//@script_hotkey Alt+S ИзменитьМетод
//@retain_clipboard 1
//@enterprise_mode 0
//@hide_actions 1
//@script_version 2
Процедура ИзменитьМетод()
ТК = Новый ТурбоКонф;
Поз = 0;
ВыделенныйТекст = "";
Текст = ТК.ПолучитьТекстМодуля(ВыделенныйТекст, Поз);
// Русский язык
РегВыражениеПроцедура = Новый РегулярноеВыражение("(?:конецпроцедуры)");
РегВыражениеПроцедура.ИгнорироватьРегистр = Истина;
Если РегВыражениеПроцедура.Совпадает(ВыделенныйТекст) Тогда
ТекстПослеЗамены = РегВыражениеПроцедура.Заменить(ВыделенныйТекст, "КонецФункции");
РегВыражениеПроцедура = Новый РегулярноеВыражение("(?:процедура)");
РегВыражениеПроцедура.ИгнорироватьРегистр = Истина;
ТекстПослеЗамены = РегВыражениеПроцедура.Заменить(ТекстПослеЗамены, "Функция");
ТК.ВставитьТекст(ТекстПослеЗамены);
Возврат;
КонецЕсли;
РегВыражениеФункция = Новый РегулярноеВыражение("(?:конецфункции)");
РегВыражениеФункция.ИгнорироватьРегистр = Истина;
Если РегВыражениеФункция.Совпадает(ВыделенныйТекст) Тогда
ТекстПослеЗамены = РегВыражениеФункция.Заменить(ВыделенныйТекст, "КонецПроцедуры");
РегВыражениеФункция = Новый РегулярноеВыражение("(?:функция)");
РегВыражениеФункция.ИгнорироватьРегистр = Истина;
ТекстПослеЗамены = РегВыражениеФункция.Заменить(ТекстПослеЗамены, "Процедура");
ТК.ВставитьТекст(ТекстПослеЗамены);
Возврат;
КонецЕсли;
// Английский язык
РегВыражениеПроцедура = Новый РегулярноеВыражение("(?:endprocedure)");
РегВыражениеПроцедура.ИгнорироватьРегистр = Истина;
Если РегВыражениеПроцедура.Совпадает(ВыделенныйТекст) Тогда
ТекстПослеЗамены = РегВыражениеПроцедура.Заменить(ВыделенныйТекст, "EndFunction");
РегВыражениеПроцедура = Новый РегулярноеВыражение("(?:procedure)");
РегВыражениеПроцедура.ИгнорироватьРегистр = Истина;
ТекстПослеЗамены = РегВыражениеПроцедура.Заменить(ТекстПослеЗамены, "Function");
ТК.ВставитьТекст(ТекстПослеЗамены);
Возврат;
КонецЕсли;
РегВыражениеФункция = Новый РегулярноеВыражение("(?:endfunction)");
РегВыражениеФункция.ИгнорироватьРегистр = Истина;
Если РегВыражениеФункция.Совпадает(ВыделенныйТекст) Тогда
ТекстПослеЗамены = РегВыражениеФункция.Заменить(ВыделенныйТекст, "EndProcedure");
РегВыражениеФункция = Новый РегулярноеВыражение("(?:function)");
РегВыражениеФункция.ИгнорироватьРегистр = Истина;
ТекстПослеЗамены = РегВыражениеФункция.Заменить(ТекстПослеЗамены, "Procedure");
ТК.ВставитьТекст(ТекстПослеЗамены);
Возврат;
КонецЕсли;
КонецПроцедуры
Сайт разработчика: http://turboconf.ru
Страница разработки в соцсетях: https://vk.com/turboconf
+1
Спасибо за публикацию!