1
0
mirror of https://github.com/Stepa86/oScript-Examples.git synced 2026-04-23 19:31:06 +02:00

Формирование и запуск батника прям из обработки

This commit is contained in:
Антон Степанов
2017-02-06 22:04:05 +03:00
parent abad49d1e9
commit b89779b544
3 changed files with 159 additions and 5 deletions
@@ -61,6 +61,11 @@
<CommandName>Form.Command.Записать</CommandName>
<ExtendedTooltip name="ЗаписатьРасширеннаяПодсказка" id="5"/>
</Button>
<Button name="ЗаписатьФайлИЗапустить" id="108">
<Type>UsualButton</Type>
<CommandName>Form.Command.ЗаписатьФайлИЗапустить</CommandName>
<ExtendedTooltip name="ЗаписатьФайлИЗапуститьРасширеннаяПодсказка" id="109"/>
</Button>
<Button name="ТестОбработки" id="94">
<Type>UsualButton</Type>
<CommandName>Form.Command.ТестОбработки</CommandName>
@@ -97,6 +102,21 @@
<ContextMenu name="OSCRIPTКонтекстноеМеню" id="25"/>
<ExtendedTooltip name="OSCRIPTРасширеннаяПодсказка" id="26"/>
</InputField>
<InputField name="ОсновнойСкрипт" id="105">
<DataPath>ОсновнойСкрипт</DataPath>
<ChoiceButton>true</ChoiceButton>
<InputHint>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>D:\Folder\CopyBase.os</v8:content>
</v8:item>
</InputHint>
<ContextMenu name="ОсновнойСкриптКонтекстноеМеню" id="106"/>
<ExtendedTooltip name="ОсновнойСкриптРасширеннаяПодсказка" id="107"/>
<Events>
<Event name="StartChoice">ОсновнойСкриптНачалоВыбора</Event>
</Events>
</InputField>
<InputField name="EXE1CV8" id="27">
<DataPath>EXE1CV8</DataPath>
<DropListButton>true</DropListButton>
@@ -542,7 +562,9 @@
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
<FillCheck>ShowError</FillCheck>
<Save>
<Field>OSCRIPT</Field>
</Save>
</Attribute>
<Attribute name="EXE1CV8" id="6">
<Title>
@@ -865,6 +887,39 @@
</v8:StringQualifiers>
</Type>
</Attribute>
<Attribute name="ОсновнойСкрипт" id="28">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Скрипт</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
<Save>
<Field>ОсновнойСкрипт</Field>
</Save>
</Attribute>
<Attribute name="ТекущийКаталог" id="29">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Текущий каталог</v8:content>
</v8:item>
</Title>
<Type>
<v8:Type>xs:string</v8:Type>
<v8:StringQualifiers>
<v8:Length>0</v8:Length>
<v8:AllowedLength>Variable</v8:AllowedLength>
</v8:StringQualifiers>
</Type>
</Attribute>
</Attributes>
<Commands>
<Command name="Записать" id="1">
@@ -912,5 +967,25 @@
</ToolTip>
<Action>ТестОбработки</Action>
</Command>
<Command name="ЗаписатьФайлИЗапустить" id="4">
<Title>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Записать и запустить</v8:content>
</v8:item>
</Title>
<ToolTip>
<v8:item>
<v8:lang>ru</v8:lang>
<v8:content>Записать файл и запустить</v8:content>
</v8:item>
</ToolTip>
<Picture>
<xr:Ref>StdPicture.GenerateReport</xr:Ref>
<xr:LoadTransparent>true</xr:LoadTransparent>
</Picture>
<Action>ЗаписатьФайлИЗапустить</Action>
<Representation>TextPicture</Representation>
</Command>
</Commands>
</Form>
@@ -57,6 +57,7 @@
EXE1CV8 = КаталогПрограммы() + "1cv8.exe";
ПрочитатьСписокФайловНастройки();
Прочитать( Неопределено );
#Иначе
@@ -74,7 +75,9 @@
#Если Не ВебКлиент Тогда
текФайл = Новый Файл( ИспользуемоеИмяФайла );
каталогПоиска = Новый Файл( текФайл.Путь + КаталогПоиска() );
ТекущийКаталог = текФайл.Путь;
каталогПоиска = Новый Файл( ТекущийКаталог + КаталогПоиска() );
каталогПоиска.НачатьПроверкуСуществования(Новый ОписаниеОповещения("ПрочитатьСписокФайловНастройкиЗавершение", ЭтаФорма, Новый Структура("каталогПоиска", каталогПоиска)));
@@ -159,8 +162,7 @@
#Если Не ВебКлиент Тогда
текФайл = Новый Файл( ИспользуемоеИмяФайла );
каталогПоиска = Новый Файл( текФайл.Путь + КаталогПоиска() );
каталогПоиска = Новый Файл( ТекущийКаталог + КаталогПоиска() );
каталогПоиска.НачатьПроверкуСуществования(Новый ОписаниеОповещения("ПриЗакрытииЗавершение", ЭтаФорма, Новый Структура("каталогПоиска", каталогПоиска)));
@@ -242,6 +244,7 @@
КонецЕсли;
#Если Не ВебКлиент Тогда
файл = Новый Файл( ИмяФайлаНастроек );
файл.НачатьПроверкуСуществования(Новый ОписаниеОповещения("ПрочитатьЗавершение", ЭтаФорма));
@@ -270,6 +273,7 @@
ПрочитатьПараметрыРекурсивно( соотПараметры, прочитанныеПараметры );
OSCRIPT = прочитанныеПараметры.Получить( "OSCRIPT" );
ОсновнойСкрипт = прочитанныеПараметры.Получить( "Main_os" );
EXE1CV8 = прочитанныеПараметры.Получить( "EXE1CV8" );
FileBackup = прочитанныеПараметры.Получить( "FileBackup" );
Script_Restore = прочитанныеПараметры.Получить( "Script_Restore" );
@@ -321,6 +325,7 @@
общиеПараметры = Новый Соответствие;
общиеПараметры.Вставить( "OSCRIPT" , OSCRIPT );
общиеПараметры.Вставить( "Main_os" , ОсновнойСкрипт );
общиеПараметры.Вставить( "EXE1CV8" , EXE1CV8 );
общиеПараметры.Вставить( "FileBackup" , FileBackup );
общиеПараметры.Вставить( "Script_Restore", Script_Restore );
@@ -366,6 +371,60 @@
КонецПроцедуры
&НаКлиенте
Процедура ЗаписатьФайлИЗапустить(Команда)
Если Не ПроверитьЗаполнение() Тогда
Возврат;
КонецЕсли;
Записать( Команда );
отказ = Ложь;
Если Не ЗначениеЗаполнено( ОсновнойСкрипт ) Тогда
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = НСтр( "ru='Не заполнен основной скрипт. Нечего запускать.'" );
Сообщение.Поле = ОсновнойСкрипт;
Сообщение.Сообщить();
Отказ = Истина;
КонецЕсли;
Если Не ЗначениеЗаполнено( OSCRIPT ) Тогда
Сообщение = Новый СообщениеПользователю();
Сообщение.Текст = НСтр( "ru='Не заполнен путь к OSCRIPT.exe. Нечем запускать.'" );
Сообщение.Поле = ОсновнойСкрипт;
Сообщение.Сообщить();
Отказ = Истина;
КонецЕсли;
Если Отказ Тогда
Возврат;
КонецЕсли;
#Если Не ВебКлиент Тогда
строкаЗапуска = OSCRIPT + " " + ОсновнойСкрипт + " " + ИмяФайлаНастроек;
имяВременногоФайла = ПолучитьИмяВременногоФайла("bat");
файлBat = Новый ЗаписьТекста(имяВременногоФайла, КодировкаТекста.ANSI);
файлBat.ЗаписатьСтроку( "chcp 1251" );
файлBat.ЗаписатьСтроку( строкаЗапуска );
файлBat.ЗаписатьСтроку( "pause" );
файлBat.Закрыть();
кодВозврата = 0;
ЗапуститьПриложение( имяВременногоФайла, ТекущийКаталог, Истина, КодВозврата );
УдалитьФайлы( имяВременногоФайла );
#КонецЕсли
КонецПроцедуры
#Область ВыборФайлов
&НаКлиенте
@@ -512,6 +571,25 @@
КонецПроцедуры
&НаКлиенте
Процедура ОсновнойСкриптНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
ДиалогОткрытияФайла = Новый ДиалогВыбораФайла( РежимДиалогаВыбораФайла.Открытие );
Если ЗначениеЗаполнено( ОсновнойСкрипт ) Тогда
ДиалогОткрытияФайла.ПолноеИмяФайла = ОсновнойСкрипт;
КонецЕсли;
ДиалогОткрытияФайла.Фильтр = НСтр( "ru='Файл скрипта'" ) + " (*.os)|*.os";
ДиалогОткрытияФайла.МножественныйВыбор = Ложь;
ДиалогОткрытияФайла.Заголовок = НСтр( "ru='Выберите файл скрипта'" );
ДиалогОткрытияФайла.Показать(Новый ОписаниеОповещения("Файл_НачалоВыбораЗавершение", ЭтаФорма, Новый Структура("ИмяРеквизита", "ОсновнойСкрипт")));
КонецПроцедуры
#КонецОбласти
@@ -612,7 +690,7 @@
генератор = Новый ГенераторСлучайныхЧисел( ТекущаяУниверсальнаяДатаВМиллисекундах() );
тестовыеЗначения = Новый Структура("OSCRIPT,EXE1CV8,FileBackup,Script_Restore,
тестовыеЗначения = Новый Структура("OSCRIPT,ОсновнойСкрипт,EXE1CV8,FileBackup,Script_Restore,
|Source_SQL_Server,Source_SQL_User,Source_SQL_Password,Source_SQL_Base,
|Current_SQL_Server,Current_SQL_User,Current_SQL_Password,Current_SQL_Base,
|База_СтрокаПодключения,База_Пользователь,База_Пароль,База_ПутьКОбработке,
@@ -679,6 +757,7 @@
КонецПроцедуры
#КонецОбласти