//@script_hotkey None СохранитьСкриптВФайлПоХоткею ИР Сохранить модуль в файл (по хоткею)
//+/bolsun@, 2023-11-21
//&ТолькоТекстовыеДокументы
Процедура СохранитьСкриптВФайлПоХоткею()
Если ТурбоКонф.ПолучитьВерсиюAPI() >= 6 Тогда
Если ТурбоКонф.ЭтоСкрипт Тогда
СохранитьМодульВФайл();
Возврат;
КонецЕсли;
КонецЕсли;
ТурбоКонф.КонтролКлавиша(Клавиши.S);
КонецПроцедуры
//+/bolsun@, 2023-11-21
0 0
ред. 01 декабря 2023 21:12
Недостаточно рейтинга для добавления отрицательного голоса. Шаблон будет скрыт из ваших результатов поиска.
Комментарии
tormozit #1, 01 декабря 2023 18:39
Что за свойство ЭтоСкрипт? Когда оно будет Истина?
tormozit изменил статус на Открыто
0
bolsun #2, 01 декабря 2023 18:40
(1) tormozit, это свойство Истина, когда в данный момент фокус в документе и этот документ - скрипт TurboConf.
0
tormozit #3, ред. 01 декабря 2023 18:45
Как ты определяешь что "документ - скрипт"?
Я определяю по наличию специальной строки.
Пример такой строки //#Дублировать в файл C:\Portable\TurboConf\user_scripts\RDT.os
Мой код
//&ТолькоТекстовыеДокументы
Процедура СохранитьМодульВФайл()
ПодключениеИР = ПодключениеИР(,, Ложь);
Если ПодключениеИР = Неопределено Тогда
Возврат;
КонецЕсли;
Если Не ЗначениеЗаполнено(ТекстМодуля) Или Не ЭтоДокумент() Тогда
Возврат;
КонецЕсли;
МодулиИР = МодулиИР(ПодключениеИР);
Маркер = "//#Дублировать" + " в файл "; // Разделено для не обнаружения себя же
ИмяФайла = СокрЛП(МодулиИР.ирОбщий.ТекстМеждуМаркерамиЛкс(ТекстМодуля, Маркер, Символы.ПС, Ложь));
Если ЗначениеЗаполнено(ИмяФайла) Тогда
Текст = Новый ТекстовыйДокумент;
Текст.УстановитьТекст(ТекстМодуля);
Текст.Записать(ИмяФайла);
ТурбоКонф.ПоказатьВсплывающееУведомление(НазваниеСкрипта(), СтрШаблон("Текст модуля сохранен в файл %1", ИмяФайла), 2000);
Иначе
ТурбоКонф.ПоказатьВсплывающееУведомление(НазваниеСкрипта(), "Модуль не связан с файлом. В тексте модуля должна быть строка
|" + Маркер + "<Полное имя файла>", 4000);
КонецЕсли;
ТурбоКонф.КонтролКлавиша(Клавиши.S);
КонецПроцедуры
0
bolsun #4, 01 декабря 2023 18:56
(3) tormozit, проверяю наличие "//@script" - достаточно верный признак, что это скрипт.
0
tormozit #5, ред. 01 декабря 2023 20:47
И куда мне сохранять тогда текст документа, если нужный мне указатель на файл в тексте отсутствует? Так что он полюбому должен присутствовать. А значит и другие маркеры не нужны.
0
bolsun #6, ред. 01 декабря 2023 20:55
(5) tormozit, ты же делаешь проверку в методе СохранитьМодульВФайл(), если нет маркера, то ты и не сохраняешь. Не вижу проблемы.
Наличие //#Дублировать в файл - признак что это скрипт
Отсутствие //#Дублировать в файл - Не является флагом, что это не скрипт.
Проверка ЭтоСкрипт сделана для того, чтобы не вызывать лишний код при каждом сохранении любого окна конфигуратора. Она очень быстрая и не вызывает вот этот код:
ПодключениеИР = ПодключениеИР(,, Ложь);
Если ПодключениеИР = Неопределено Тогда
Возврат;
КонецЕсли;
Если Не ЗначениеЗаполнено(ТекстМодуля) Или Не ЭтоДокумент() Тогда
Возврат;
КонецЕсли;
МодулиИР = МодулиИР(ПодключениеИР);
Либо придется дублировать проверку в методе, с вызовом ИР
Маркер = "//#Дублировать" + " в файл "; // Разделено для не обнаружения себя же
ИмяФайла = СокрЛП(МодулиИР.ирОбщий.ТекстМеждуМаркерамиЛкс(ТекстМодуля, Маркер, Символы.ПС, Ложь));
Что не имеет никакого смысла для обычного модуля конфигуратора
0
bolsun #7, ред. 01 декабря 2023 21:01
Основное назначение этой команды, навесить сохранение скрипта на Ctrl+S и ИР (COM) не должны вызываться в случае, если это не скрипт.
0
bolsun #8, ред. 01 декабря 2023 21:06
В идеале добавить просто этот код, к текущей команде СохранитьМодульВФайл. Но у пользователей с API 5 не будет работать быстрая проверка ЭтоСкрипт
0
bolsun #9, 01 декабря 2023 21:07
Мне в принципе не сложно создать маленький дополнительный скрипт с этой командой.
Но конечно было бы удобнее, чтобы все было в одном месте.
0
bolsun #10, 01 декабря 2023 21:12
Так и сделаю, т.к. скорее всего у меня будут там еще другие утилиты и каждый раз согласовывать правки, долго.
bolsun изменил статус на Закрыто
#1, 01 декабря 2023 18:39
Что за свойство ЭтоСкрипт? Когда оно будет Истина?
tormozit изменил статус на Открыто
#2, 01 декабря 2023 18:40
(1) tormozit, это свойство Истина, когда в данный момент фокус в документе и этот документ - скрипт TurboConf.
#3, ред. 01 декабря 2023 18:45
Как ты определяешь что "документ - скрипт"?
Я определяю по наличию специальной строки.
Пример такой строки
//#Дублировать в файл C:\Portable\TurboConf\user_scripts\RDT.os
Мой код
#4, 01 декабря 2023 18:56
(3) tormozit, проверяю наличие "//@script" - достаточно верный признак, что это скрипт.
#5, ред. 01 декабря 2023 20:47
И куда мне сохранять тогда текст документа, если нужный мне указатель на файл в тексте отсутствует? Так что он полюбому должен присутствовать. А значит и другие маркеры не нужны.
#6, ред. 01 декабря 2023 20:55
(5) tormozit, ты же делаешь проверку в методе СохранитьМодульВФайл(), если нет маркера, то ты и не сохраняешь. Не вижу проблемы.
Наличие //#Дублировать в файл - признак что это скрипт
Отсутствие //#Дублировать в файл - Не является флагом, что это не скрипт.
Проверка ЭтоСкрипт сделана для того, чтобы не вызывать лишний код при каждом сохранении любого окна конфигуратора. Она очень быстрая и не вызывает вот этот код:
Либо придется дублировать проверку в методе, с вызовом ИР
Что не имеет никакого смысла для обычного модуля конфигуратора
#7, ред. 01 декабря 2023 21:01
Основное назначение этой команды, навесить сохранение скрипта на Ctrl+S и ИР (COM) не должны вызываться в случае, если это не скрипт.
#8, ред. 01 декабря 2023 21:06
В идеале добавить просто этот код, к текущей команде СохранитьМодульВФайл. Но у пользователей с API 5 не будет работать быстрая проверка ЭтоСкрипт
#9, 01 декабря 2023 21:07
Мне в принципе не сложно создать маленький дополнительный скрипт с этой командой.
Но конечно было бы удобнее, чтобы все было в одном месте.
#10, 01 декабря 2023 21:12
Так и сделаю, т.к. скорее всего у меня будут там еще другие утилиты и каждый раз согласовывать правки, долго.
bolsun изменил статус на Закрыто