При решении различных задач программирования 1С, иногда возникает необходимость выполнения программ операционной системы. Для этого используются функции 1С КомандаСистемы() или ЗапуститьПриложение(). Однако при выполнении этих команд видно открытие окна командного интерпритатора. При периодичном вызове этих процедур это создает мерзкое впечатление. Используя WshShell, эту проблему можно обойти.
Процедура КомандаСистемыWshShell(Команда, ИмяКаталога = "", ЗакрыватьОкно = Истина, ПоказыватьОкно = Ложь, ОжидатьЗавершения = Истина)
//В командной строке можно выполнить несколько команд
//В этом случае команды отделяются " && "
Отладка = Ложь;
Если Отладка = Истина Тогда
ЗакрыватьОкно = Ложь;
ПоказыватьОкно = Истина;
КонецЕСли;
WshShell = Новый COMОбъект("WScript.Shell");
СтрокаКоманды = Команда;
Если ЗначениеЗаполнено(ИмяКаталога) Тогда
МассивПодстрок = СтрРазделить(ИмяКаталога, ":\",Ложь);
Если МассивПодстрок.Количество() = 2 Тогда
ИмяДиска = МассивПодстрок.Получить(0)+":";
КомандаСменитьКаталог = " "+ИмяДиска + " && " + " cd " + ИмяКаталога;
СтрокаКоманды = КомандаСменитьКаталог + " && " + СтрокаКоманды;
КонецЕСли;
КонецЕсли;
Если ЗакрыватьОкно = Истина Тогда
СтрокаКоманды = "cmd /c "+СтрокаКоманды;
Иначе
СтрокаКоманды = "cmd /k "+СтрокаКоманды;
КонецЕСли;
//Запустить командный Интерпритатор, установить каталог по умолчанию, запустить программу, закрыть Окно интерпритатора (ключ /с)
// cmd /c c: && cd c:\OpenSSL && OpenSSL.exe
//
//Запустить командный Интерпритатор, использовать каталог по умолчанию, запустить программу, НЕ закрывать Окно интерпритатора (ключ /k)
// cmd /k OpenSSL.exe
//
Если ПоказыватьОкно = Истина Тогда
WshShell.Run(СтрокаКоманды, 1,ОжидатьЗавершения);
Иначе
WshShell.Run(СтрокаКоманды, 0,ОжидатьЗавершения);
КонецЕСли;
КонецПроцедуры
Процедура ПодписатьOpenSSL()
ИмяКаталога = "c:\OpenSSL";
ИмяФайлаДляПодписания = "Тест.txt";
ИмяФайлаПодписано = "Sign.txt";
ИмяФайлаПриватногоКлюча = "Server.key";
СтрокаКоманды = "openssl.exe dgst -sha256 -sign "+ИмяФайлаПриватногоКлюча+" -out "+ИмяФайлаПодписано+" " + ИмяФайлаДляПодписания;
ЗакрыватьОкно = Истина;
ПоказыватьОкно = Ложь;
ОжидатьЗавершениеКоманды = Истина;
КомандаСистемыWshShell(СтрокаКоманды,ИмяКаталога, ЗакрыватьОкно, ПоказыватьОкно, ОжидатьЗавершениеКоманды);
КонецПроцедуры
{6} Условие всегда Ложь Орфографическая ошибка в интерпритатора (найдено 4): интерпритатора Орфографическая ошибка в Интерпритатор (найдено 2): Интерпритатор Орфографическая ошибка в openssl: openssl Орфографическая ошибка в dgst: dgst
ПоследняяВерсияОтображенияИзмененийСистемы (БСП)
ДействияПриНачалеРаботыСистемыВИнтеграционнойПроцедуре (БСП)
ДобавитьИзФайловойСистемыБезРасширенияПослеЗагрузкиФайла (БСП)
ДействияПриНачалеРаботыСистемыОбработкаЗавершения (БСП)
ДействияПередЗавершениемРаботыСистемы (БСП)
ДействияПередНачаломРаботыСистемыВИнтеграционнойПроцедуре (БСП)