2_4_3_162
This commit is contained in:
1 parent
ea835989f1
commit
234fd4687a
645 files changed
+52897
-17884
No files matched your search
@@ -6,13 +6,13 @@
|
||||
#Область СлужебныйПрограммныйИнтерфейс
|
||||
|
||||
// Параметры:
|
||||
// Контекст - Структура - контекст процедуры:
|
||||
// * Оповещение - ОписаниеОповещения - .
|
||||
// * Идентификатор - Строка - .
|
||||
// * Местоположение - Строка - .
|
||||
// * Кэшировать - Булево - .
|
||||
// * ПредложитьУстановить - Булево - .
|
||||
// * ТекстПояснения - Строка - .
|
||||
// Контекст - Структура - контекст процедуры:
|
||||
// * Оповещение - ОписаниеОповещения - .
|
||||
// * Идентификатор - Строка - .
|
||||
// * Местоположение - Строка - .
|
||||
// * Кэшировать - Булево - .
|
||||
// * ПредложитьУстановить - Булево - .
|
||||
// * ТекстПояснения - Строка - .
|
||||
//
|
||||
Процедура ПодключитьКомпоненту(Контекст) Экспорт
|
||||
|
||||
@@ -44,23 +44,23 @@
|
||||
КонецЕсли;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
СимволическоеИмя = "С" + СтрЗаменить(Строка(Новый УникальныйИдентификатор), "-", ""); //генерация уникального имени
|
||||
Контекст.Вставить("СимволическоеИмя", СимволическоеИмя);
|
||||
|
||||
Оповещение = Новый ОписаниеОповещения(
|
||||
"ПодключитьКомпонентуЗавершение", ЭтотОбъект, Контекст,
|
||||
"ПодключитьКомпонентуЗавершениеПоОшибке", ЭтотОбъект);
|
||||
|
||||
|
||||
НачатьПодключениеВнешнейКомпоненты(Оповещение, Контекст.Местоположение, СимволическоеИмя);
|
||||
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Параметры:
|
||||
// Контекст - Структура - контекст процедуры:
|
||||
// * Оповещение - ОписаниеОповещения - .
|
||||
// * Местоположение - Строка - .
|
||||
// * ТекстПояснения - Строка - .
|
||||
// Контекст - Структура - контекст процедуры:
|
||||
// * Оповещение - ОписаниеОповещения - .
|
||||
// * Местоположение - Строка - .
|
||||
// * ТекстПояснения - Строка - .
|
||||
//
|
||||
Процедура УстановитьКомпоненту(Контекст) Экспорт
|
||||
|
||||
@@ -81,6 +81,18 @@
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Проверяет, является ли переданная строка внутренней навигационной ссылкой.
|
||||
//
|
||||
// Параметры:
|
||||
// Строка - Строка - навигационная ссылка.
|
||||
//
|
||||
Функция ЭтоНавигационнаяСсылка(Строка) Экспорт
|
||||
|
||||
Возврат СтрНачинаетсяС(Строка, "e1c:")
|
||||
Или СтрНачинаетсяС(Строка, "e1cib/");
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область СлужебныеПроцедурыИФункции
|
||||
@@ -320,13 +332,13 @@
|
||||
Возврат;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
Результат.Вставить("ОписаниеОшибки", НСтр("ru = 'Ошибка при подключении внешней компоненты'"));
|
||||
ВыполнитьОбработкуОповещения(Контекст.Оповещение, Результат);
|
||||
Возврат;
|
||||
|
||||
КонецЕсли;
|
||||
|
||||
|
||||
Попытка
|
||||
|
||||
Если Контекст.ИдентификаторыСозданияОбъектов.Количество() = 0 Тогда
|
||||
@@ -340,7 +352,7 @@
|
||||
Иначе
|
||||
|
||||
ПодключаемыеМодули = Новый Соответствие;
|
||||
Для Каждого Идентификатор Из Контекст.ИдентификаторыСозданияОбъектов Цикл
|
||||
Для каждого Идентификатор Из Контекст.ИдентификаторыСозданияОбъектов Цикл
|
||||
|
||||
ПодключаемыйМодуль = Новый("AddIn." + Контекст.СимволическоеИмя + "." + Идентификатор);
|
||||
|
||||
@@ -360,7 +372,7 @@
|
||||
Результат.Вставить("Подключено" , Ложь);
|
||||
Результат.Вставить("ОписаниеОшибки", КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
|
||||
КонецПопытки;
|
||||
|
||||
|
||||
Если Контекст.Кэшировать Тогда
|
||||
|
||||
// Помещение в кэш экземпляра внешней компоненты.
|
||||
@@ -416,7 +428,7 @@
|
||||
|
||||
Контекст.ПредложитьУстановить = Ложь; // Одна попытка установки уже прошла.
|
||||
ПодключитьКомпоненту(Контекст);
|
||||
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Продолжение процедуры ПодключитьКомпоненту.
|
||||
@@ -467,9 +479,6 @@
|
||||
"УстановитьКомпонентуЗавершение", ЭтотОбъект, Контекст,
|
||||
"УстановитьКомпонентуЗавершениеПоОшибке", ЭтотОбъект);
|
||||
|
||||
// Если компонента была ранее подключена, то выдается интерактивное сообщение платформой вместо исключения.
|
||||
// Скорее всего ошибка платформы.
|
||||
|
||||
НачатьУстановкуВнешнейКомпоненты(Оповещение, Контекст.Местоположение);
|
||||
|
||||
КонецПроцедуры
|
||||
@@ -499,4 +508,462 @@
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область ОткрытьПроводник
|
||||
|
||||
// Продолжение процедуры ОбщегоНазначенияКлиент.ОткрытьПроводник.
|
||||
Процедура ОткрытьПроводникПослеПроверкиРасширенияРаботыСФайлами(РасширениеПодключено, Контекст) Экспорт
|
||||
|
||||
ФайлИнфо = Контекст.ФайлИнфо;
|
||||
|
||||
Если РасширениеПодключено Тогда
|
||||
Оповещение = Новый ОписаниеОповещения("ОткрытьПроводникПослеПроверкиСуществования", ЭтотОбъект, Контекст);
|
||||
ФайлИнфо.НачатьПроверкуСуществования(Оповещение);
|
||||
Иначе
|
||||
ОписаниеОшибки = НСтр("ru = 'Расширение для работы с файлами не установлено, открытие папки не возможно.'");
|
||||
ОткрытьПроводникОповеститьОбОшибке(ОписаниеОшибки, Контекст);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Продолжение процедуры ОбщегоНазначенияКлиент.ОткрытьПроводник.
|
||||
Процедура ОткрытьПроводникПослеПроверкиСуществования(Существует, Контекст) Экспорт
|
||||
|
||||
ФайлИнфо = Контекст.ФайлИнфо;
|
||||
|
||||
Если Существует Тогда
|
||||
Оповещение = Новый ОписаниеОповещения("ОткрытьПроводникПослеПроверкиЭтоФайл", ЭтотОбъект, Контекст);
|
||||
ФайлИнфо.НачатьПроверкуЭтоФайл(Оповещение);
|
||||
Иначе
|
||||
ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Не найдена папка, которую требуется открыть в проводнике:
|
||||
|""%1""'"),
|
||||
ФайлИнфо.ПолноеИмя);
|
||||
ОткрытьПроводникОповеститьОбОшибке(ОписаниеОшибки, Контекст);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Продолжение процедуры ОбщегоНазначенияКлиент.ОткрытьПроводник.
|
||||
Процедура ОткрытьПроводникПослеПроверкиЭтоФайл(ЭтоФайл, Контекст) Экспорт
|
||||
|
||||
ФайлИнфо = Контекст.ФайлИнфо;
|
||||
|
||||
Оповещение = Новый ОписаниеОповещения("ОткрытьПроводникПослеОткрытияКаталога", ЭтотОбъект);
|
||||
Если ЭтоФайл Тогда
|
||||
Если ОбщегоНазначенияКлиентСервер.ЭтоWindowsКлиент() Тогда
|
||||
НачатьЗапускПриложения(Оповещение, "explorer.exe /select, """ + ФайлИнфо.ПолноеИмя + """");
|
||||
Иначе // Это Linux или MacOS.
|
||||
НачатьЗапускПриложения(Оповещение, "file:///" + ФайлИнфо.Путь);
|
||||
КонецЕсли;
|
||||
Иначе // Это каталог.
|
||||
НачатьЗапускПриложения(Оповещение, "file:///" + ФайлИнфо.ПолноеИмя);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Продолжение процедуры ОбщегоНазначенияКлиент.ОткрытьПроводник.
|
||||
Процедура ОткрытьПроводникПослеОткрытияКаталога(КодВозврата, Контекст) Экспорт
|
||||
|
||||
Возврат;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Продолжение процедуры ОбщегоНазначенияКлиент.ОткрытьНавигационнуюСсылку.
|
||||
Процедура ОткрытьПроводникОповеститьОбОшибке(ОписаниеОшибки, Контекст)
|
||||
|
||||
Если Не ПустаяСтрока(ОписаниеОшибки) Тогда
|
||||
ПоказатьПредупреждение(, ОписаниеОшибки);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область ОткрытьФайлВПрограммеПросмотра
|
||||
|
||||
// Продолжение процедуры ОбщегоНазначенияКлиент.ОткрытьФайлВПрограммеПросмотра.
|
||||
Процедура ОткрытьФайлВПрограммеПросмотраПослеПроверкиРасширенияРаботыСФайлами(РасширениеПодключено, Контекст) Экспорт
|
||||
|
||||
ФайлИнфо = Контекст.ФайлИнфо;
|
||||
|
||||
Если РасширениеПодключено Тогда
|
||||
Оповещение = Новый ОписаниеОповещения("ОткрытьФайлВПрограммеПросмотраПослеПроверкиСуществования",
|
||||
ЭтотОбъект, Контекст);
|
||||
ФайлИнфо.НачатьПроверкуСуществования(Оповещение);
|
||||
Иначе
|
||||
ОписаниеОшибки = НСтр("ru = 'Расширение для работы с файлами не установлено, открытие файла невозможно.'");
|
||||
ОткрытьФайлВПрограммеПросмотраОповеститьОбОшибке(ОписаниеОшибки, Контекст);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Продолжение процедуры ОбщегоНазначенияКлиент.ОткрытьФайлВПрограммеПросмотра.
|
||||
Процедура ОткрытьФайлВПрограммеПросмотраПослеПроверкиСуществования(Существует, Контекст) Экспорт
|
||||
|
||||
ФайлИнфо = Контекст.ФайлИнфо;
|
||||
|
||||
Если Существует Тогда
|
||||
Оповещение = Новый ОписаниеОповещения("ОткрытьФайлВПрограммеПросмотраПослеПроверкиЭтоФайл",
|
||||
ЭтотОбъект, Контекст);
|
||||
ФайлИнфо.НачатьПроверкуЭтоФайл(Оповещение);
|
||||
Иначе
|
||||
ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Не найден файл, который требуется открыть:
|
||||
|%1'"),
|
||||
ФайлИнфо.ПолноеИмя);
|
||||
ОткрытьФайлВПрограммеПросмотраОповеститьОбОшибке(ОписаниеОшибки, Контекст);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Продолжение процедуры ОбщегоНазначенияКлиент.ОткрытьФайлВПрограммеПросмотра.
|
||||
Процедура ОткрытьФайлВПрограммеПросмотраПослеПроверкиЭтоФайл(ЭтоФайл, Контекст) Экспорт
|
||||
|
||||
ФайлИнфо = Контекст.ФайлИнфо;
|
||||
|
||||
Если ЭтоФайл Тогда
|
||||
|
||||
Если ПустаяСтрока(ФайлИнфо.Расширение) Тогда
|
||||
ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Имя файла не содержит расширения:
|
||||
|%1'"),
|
||||
ФайлИнфо.ПолноеИмя);
|
||||
ОткрытьФайлВПрограммеПросмотраОповеститьОбОшибке(ОписаниеОшибки, Контекст);
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Если ЭтоРасширениеИсполняемогоФайла(ФайлИнфо.Расширение) Тогда
|
||||
ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Исполняемые файлы открывать запрещено:
|
||||
|%1'"),
|
||||
ФайлИнфо.ПолноеИмя);
|
||||
ОткрытьФайлВПрограммеПросмотраОповеститьОбОшибке(ОписаниеОшибки, Контекст);
|
||||
Возврат;
|
||||
КонецЕсли;
|
||||
|
||||
Оповещение = Контекст.Оповещение;
|
||||
ДождатьсяЗавершения = (Оповещение <> Неопределено);
|
||||
|
||||
Оповещение = Новый ОписаниеОповещения("ОткрытьФайлВПрограммеПросмотраПослеЗапускаПриложения", ЭтотОбъект, Контекст,
|
||||
"ОткрытьФайлВПрограммеПросмотраПриОбработкеОшибки", ЭтотОбъект);
|
||||
НачатьЗапускПриложения(Оповещение, ФайлИнфо.ПолноеИмя,, ДождатьсяЗавершения);
|
||||
|
||||
Иначе
|
||||
ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Не найден файл, который требуется открыть:
|
||||
|%1'"),
|
||||
ФайлИнфо.ПолноеИмя);
|
||||
ОткрытьФайлВПрограммеПросмотраОповеститьОбОшибке(ОписаниеОшибки, Контекст);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Продолжение процедуры ОбщегоНазначенияКлиент.ОткрытьФайлВПрограммеПросмотра.
|
||||
Процедура ОткрытьФайлВПрограммеПросмотраПослеЗапускаПриложения(КодВозврата, Контекст) Экспорт
|
||||
|
||||
Оповещение = Контекст.Оповещение;
|
||||
|
||||
Если Оповещение <> Неопределено Тогда
|
||||
ПриложениеЗапущено = (КодВозврата = 0);
|
||||
ВыполнитьОбработкуОповещения(Оповещение, ПриложениеЗапущено);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Продолжение процедуры ОбщегоНазначенияКлиент.ОткрытьФайлВПрограммеПросмотра.
|
||||
Процедура ОткрытьФайлВПрограммеПросмотраПриОбработкеОшибки(ИнформацияОбОшибке, СтандартнаяОбработка, Контекст) Экспорт
|
||||
|
||||
СтандартнаяОбработка = Ложь;
|
||||
ОткрытьФайлВПрограммеПросмотраОповеститьОбОшибке("", Контекст);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Продолжение процедуры ОбщегоНазначенияКлиент.ОткрытьФайлВПрограммеПросмотра.
|
||||
Процедура ОткрытьФайлВПрограммеПросмотраОповеститьОбОшибке(ОписаниеОшибки, Контекст)
|
||||
|
||||
Оповещение = Контекст.Оповещение;
|
||||
|
||||
Если Оповещение = Неопределено Тогда
|
||||
Если Не ПустаяСтрока(ОписаниеОшибки) Тогда
|
||||
ПоказатьПредупреждение(, ОписаниеОшибки);
|
||||
КонецЕсли;
|
||||
Иначе
|
||||
ПриложениеЗапущено = Ложь;
|
||||
ВыполнитьОбработкуОповещения(Оповещение, ПриложениеЗапущено);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Параметры:
|
||||
// Расширение - Строка - свойство Расширение объекта Файл.
|
||||
//
|
||||
Функция ЭтоРасширениеИсполняемогоФайла(Знач Расширение)
|
||||
|
||||
Расширение = ВРег(Расширение);
|
||||
|
||||
// Windows
|
||||
Возврат Расширение = ".BAT" // Batch File
|
||||
Или Расширение = ".BIN" // Binary Executable
|
||||
Или Расширение = ".CMD" // Command Script
|
||||
Или Расширение = ".COM" // Приложение MS-DOS
|
||||
Или Расширение = ".CPL" // Control Panel Extension
|
||||
Или Расширение = ".EXE" // Исполняемый файл
|
||||
Или Расширение = ".GADGET" // Binary Executable
|
||||
Или Расширение = ".HTA" // HTML Application
|
||||
Или Расширение = ".INF1" // Setup Information File
|
||||
Или Расширение = ".INS" // Internet Communication Settings
|
||||
Или Расширение = ".INX" // InstallShield Compiled Script
|
||||
Или Расширение = ".ISU" // InstallShield Uninstaller Script
|
||||
Или Расширение = ".JOB" // Windows Task Scheduler Job File
|
||||
Или Расширение = ".LNK" // File Shortcut
|
||||
Или Расширение = ".MSC" // Microsoft Common Console Document
|
||||
Или Расширение = ".MSI" // Windows Installer Package
|
||||
Или Расширение = ".MSP" // Windows Installer Patch
|
||||
Или Расширение = ".MST" // Windows Installer Setup Transform File
|
||||
Или Расширение = ".OTM" // Макрос Microsoft Outlook
|
||||
Или Расширение = ".PAF" // Portable Application Installer File
|
||||
Или Расширение = ".PIF" // Program Information File
|
||||
Или Расширение = ".PS1" // Windows PowerShell Cmdlet
|
||||
Или Расширение = ".REG" // Registry Data File
|
||||
Или Расширение = ".RGS" // Registry Script
|
||||
Или Расширение = ".SCT" // Windows Scriptlet
|
||||
Или Расширение = ".SHB" // Windows Document Shortcut
|
||||
Или Расширение = ".SHS" // Shell Scrap Object
|
||||
Или Расширение = ".U3P" // U3 Smart Application
|
||||
Или Расширение = ".VB" // VBScript File
|
||||
Или Расширение = ".VBE" // VBScript Encoded Script
|
||||
Или Расширение = ".VBS" // VBScript File
|
||||
Или Расширение = ".VBSCRIPT" // Visual Basic Script
|
||||
Или Расширение = ".WS" // Windows Script
|
||||
Или Расширение = ".WSF" // Windows Script
|
||||
// Linux
|
||||
Или Расширение = ".CSH" // C Shell Script
|
||||
Или Расширение = ".KSH" // Unix Korn Shell Script
|
||||
Или Расширение = ".OUT" // Исполняемый файл
|
||||
Или Расширение = ".RUN" // Исполняемый файл
|
||||
Или Расширение = ".SH" // Shell Script
|
||||
// MacOS
|
||||
Или Расширение = ".ACTION" // Automator Action
|
||||
Или Расширение = ".APP" // Исполняемый файл
|
||||
Или Расширение = ".COMMAND" // Terminal Command
|
||||
Или Расширение = ".OSX" // Исполняемый файл
|
||||
Или Расширение = ".WORKFLOW" // Automator Workflow
|
||||
// Прочие
|
||||
Или Расширение = ".AIR" // Установочный пакет Adobe AIR
|
||||
Или Расширение = ".COFFIE" // Сценарий CoffeeScript (JavaScript)
|
||||
Или Расширение = ".JAR" // Архив Java
|
||||
Или Расширение = ".JS" // JScript File
|
||||
Или Расширение = ".JSE" // JScript Encoded File
|
||||
Или Расширение = ".PLX" // Исполняемый файл Perl
|
||||
Или Расширение = ".PYC" // Компилированный файл Python
|
||||
Или Расширение = ".PYO"; // Оптимизированный код Python
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область ОткрытьНавигационнуюСсылку
|
||||
|
||||
// Продолжение процедуры ОбщегоНазначенияКлиент.ОткрытьНавигационнуюСсылку.
|
||||
Процедура ОткрытьНавигационнуюСсылкуПослеПроверкиРасширенияРаботыСФайлами(РасширениеПодключено, Контекст) Экспорт
|
||||
|
||||
НавигационнаяСсылка = Контекст.НавигационнаяСсылка;
|
||||
|
||||
Если РасширениеПодключено Тогда
|
||||
|
||||
Оповещение = Контекст.Оповещение;
|
||||
ДождатьсяЗавершения = (Оповещение <> Неопределено);
|
||||
|
||||
Оповещение = Новый ОписаниеОповещения("ОткрытьНавигационнуюСсылкуПослеЗапускаПриложения", ЭтотОбъект, Контекст,
|
||||
"ОткрытьНавигационнуюСсылкуПриОбработкеОшибки", ЭтотОбъект);
|
||||
НачатьЗапускПриложения(Оповещение, НавигационнаяСсылка,, ДождатьсяЗавершения);
|
||||
|
||||
Иначе
|
||||
ОписаниеОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
|
||||
НСтр("ru = 'Расширение для работы с файлами не установлено, переход по ссылке ""%1"" невозможен.'"),
|
||||
НавигационнаяСсылка);
|
||||
ОткрытьНавигационнуюСсылкуОповеститьОбОшибке(ОписаниеОшибки, Контекст);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Продолжение процедуры ОбщегоНазначенияКлиент.ОткрытьНавигационнуюСсылку.
|
||||
Процедура ОткрытьНавигационнуюСсылкуПослеЗапускаПриложения(КодВозврата, Контекст) Экспорт
|
||||
|
||||
Оповещение = Контекст.Оповещение;
|
||||
|
||||
Если Оповещение <> Неопределено Тогда
|
||||
ПриложениеЗапущено = (КодВозврата = 0 Или КодВозврата = Неопределено);
|
||||
ВыполнитьОбработкуОповещения(Оповещение, ПриложениеЗапущено);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Продолжение процедуры ОбщегоНазначенияКлиент.ОткрытьНавигационнуюСсылку.
|
||||
Процедура ОткрытьНавигационнуюСсылкуПриОбработкеОшибки(ИнформацияОбОшибке, СтандартнаяОбработка, Контекст) Экспорт
|
||||
|
||||
СтандартнаяОбработка = Ложь;
|
||||
ОткрытьНавигационнуюСсылкуОповеститьОбОшибке("", Контекст);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Продолжение процедуры ОбщегоНазначенияКлиент.ОткрытьНавигационнуюСсылку.
|
||||
Процедура ОткрытьНавигационнуюСсылкуОповеститьОбОшибке(ОписаниеОшибки, Контекст) Экспорт
|
||||
|
||||
Оповещение = Контекст.Оповещение;
|
||||
|
||||
Если Оповещение = Неопределено Тогда
|
||||
Если Не ПустаяСтрока(ОписаниеОшибки) Тогда
|
||||
ПоказатьПредупреждение(, ОписаниеОшибки);
|
||||
КонецЕсли;
|
||||
Иначе
|
||||
ПриложениеЗапущено = Ложь;
|
||||
ВыполнитьОбработкуОповещения(Оповещение, ПриложениеЗапущено);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Проверяет, является ли переданная строка веб ссылкой.
|
||||
//
|
||||
// Параметры:
|
||||
// Строка - Строка - переданная ссылка.
|
||||
//
|
||||
Функция ЭтоВебСсылка(Строка) Экспорт
|
||||
|
||||
Возврат СтрНачинаетсяС(Строка, "http://") // обычное соединение.
|
||||
Или СтрНачинаетсяС(Строка, "https://");// защищенное соединение.
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Проверяет, является ли переданная строка ссылкой на встроенную справку.
|
||||
//
|
||||
// Параметры:
|
||||
// Строка - Строка - переданная ссылка.
|
||||
//
|
||||
Функция ЭтоСсылкаНаСправку(Строка) Экспорт
|
||||
|
||||
Возврат СтрНачинаетсяС(Строка, "v8help://");
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Проверяет, является ли переданная строка допустимой ссылкой по белому списку протоколов.
|
||||
//
|
||||
// Параметры:
|
||||
// Строка - Строка - переданная ссылка.
|
||||
//
|
||||
Функция ЭтоДопустимаяСсылка(Строка) Экспорт
|
||||
|
||||
Возврат СтрНачинаетсяС(Строка, "e1cib/")
|
||||
Или СтрНачинаетсяС(Строка, "http:")
|
||||
Или СтрНачинаетсяС(Строка, "https:")
|
||||
Или СтрНачинаетсяС(Строка, "e1c:")
|
||||
Или СтрНачинаетсяС(Строка, "v8help:")
|
||||
Или СтрНачинаетсяС(Строка, "mailto:")
|
||||
Или СтрНачинаетсяС(Строка, "tel:")
|
||||
Или СтрНачинаетсяС(Строка, "skype:");
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#Область ЗапуститьПрограмму
|
||||
|
||||
// Продолжение процедуры ОбщегоНазначенияКлиент.ЗапуститьПрограмму.
|
||||
Процедура ЗапуститьПрограммуПослеПроверкиРасширенияРаботыСФайлами(РасширениеПодключено, Контекст) Экспорт
|
||||
|
||||
Если РасширениеПодключено Тогда
|
||||
|
||||
СтрокаКоманды = Контекст.СтрокаКоманды;
|
||||
ТекущийКаталог = Контекст.ТекущийКаталог;
|
||||
Оповещение = Контекст.Оповещение;
|
||||
|
||||
ДождатьсяЗавершения = (Оповещение <> Неопределено);
|
||||
|
||||
Оповещение = Новый ОписаниеОповещения("ЗапуститьПрограммуПослеЗапускаПриложения", ЭтотОбъект, Контекст,
|
||||
"ЗапуститьПрограммуПриОбработкеОшибки", ЭтотОбъект);
|
||||
НачатьЗапускПриложения(Оповещение, СтрокаКоманды, ТекущийКаталог, ДождатьсяЗавершения);
|
||||
|
||||
Иначе
|
||||
ОписаниеОшибки =
|
||||
НСтр("ru = 'Расширение для работы с файлами не установлено, запуск программы невозможен.'");
|
||||
ЗапуститьПрограммуОповеститьОбОшибке(ОписаниеОшибки, Контекст);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Продолжение процедуры ОбщегоНазначенияКлиент.ЗапуститьПрограмму.
|
||||
Процедура ЗапуститьПрограммуПослеЗапускаПриложения(КодВозврата, Контекст) Экспорт
|
||||
|
||||
Оповещение = Контекст.Оповещение;
|
||||
|
||||
ДождатьсяЗавершения = (Оповещение <> Неопределено);
|
||||
|
||||
Если ДождатьсяЗавершения Тогда
|
||||
|
||||
Если КодВозврата = Неопределено Тогда
|
||||
ОписаниеОшибки =
|
||||
НСтр("ru = 'Произошла неизвестная ошибка при запуске программы.'");
|
||||
ЗапуститьПрограммуОповеститьОбОшибке(ОписаниеОшибки, Контекст);
|
||||
Иначе
|
||||
Результат = РезультатЗапускаПрограммы();
|
||||
Результат.ПриложениеЗапущено = Истина;
|
||||
Результат.КодВозврата = КодВозврата;
|
||||
|
||||
ВыполнитьОбработкуОповещения(Оповещение, Результат);
|
||||
КонецЕсли;
|
||||
КонецЕсли
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Продолжение процедуры ОбщегоНазначенияКлиент.ЗапуститьПрограмму.
|
||||
Процедура ЗапуститьПрограммуПриОбработкеОшибки(ИнформацияОбОшибке, СтандартнаяОбработка, Контекст) Экспорт
|
||||
|
||||
СтандартнаяОбработка = Ложь;
|
||||
ОписаниеОшибки = КраткоеПредставлениеОшибки(ИнформацияОбОшибке);
|
||||
ЗапуститьПрограммуОповеститьОбОшибке(ОписаниеОшибки, Контекст);
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Продолжение процедуры ОбщегоНазначенияКлиент.ЗапуститьПрограмму.
|
||||
Процедура ЗапуститьПрограммуОповеститьОбОшибке(ОписаниеОшибки, Контекст) Экспорт
|
||||
|
||||
Оповещение = Контекст.Оповещение;
|
||||
|
||||
Если Оповещение = Неопределено Тогда
|
||||
Если Не ПустаяСтрока(ОписаниеОшибки) Тогда
|
||||
ПоказатьПредупреждение(, ОписаниеОшибки);
|
||||
КонецЕсли;
|
||||
Иначе
|
||||
Результат = РезультатЗапускаПрограммы();
|
||||
Результат.ОписаниеОшибки = ОписаниеОшибки;
|
||||
ВыполнитьОбработкуОповещения(Оповещение, Результат);
|
||||
КонецЕсли;
|
||||
|
||||
КонецПроцедуры
|
||||
|
||||
// Продолжение процедуры ОбщегоНазначенияКлиент.ЗапуститьПрограмму.
|
||||
Функция РезультатЗапускаПрограммы()
|
||||
|
||||
Результат = Новый Структура;
|
||||
Результат.Вставить("ПриложениеЗапущено", Ложь);
|
||||
Результат.Вставить("ОписаниеОшибки", "");
|
||||
Результат.Вставить("КодВозврата", -13);
|
||||
|
||||
Возврат Результат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Проверяет содержит ли строка команды опасные действия
|
||||
Функция СодержитНебезопасныеДействия(СтрокаКоманды) Экспорт
|
||||
|
||||
Возврат СтрНайти(СтрокаКоманды, "$") <> 0
|
||||
Или СтрНайти(СтрокаКоманды, "`") <> 0
|
||||
Или СтрНайти(СтрокаКоманды, "|") <> 0
|
||||
Или СтрНайти(СтрокаКоманды, ";") <> 0
|
||||
Или СтрНайти(СтрокаКоманды, "&") <> 0;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
Reference in new issue
Block a user