2_4_3_162

This commit is contained in:
Компания 1С committed 2017-11-23 00:54:00 +03:00
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;
КонецФункции
#КонецОбласти
#КонецОбласти