Здравствуйте!
В гриде есть кнопка, по которой стартует экспорт в 1С одной выделенной записи. Вот функция коннекта к 1С:
var IsExclusive = false;
var Path = '\\\\dc\\1cbase$\\Торговля\\Торговля 2010';
var Login = '***';
var Password = '***';
var v77 = new ActiveXObject('V77.Application');
var ConnectParams = Generate1CParamString(Path, Login, Password, IsExclusive);
v77.Initialize(v77.RMTrade, ConnectParams, 'NO_SPLASH_SHOW');
Как заставить процесс 1С, который продолжает висеть в процессах, завершиться после выполнения функции?
Добавлял в конец функции строку
Из скрипта scr_Main
Но эта функция процесс не закрывает. Может быть кто-нибудь сталкивался с такой проблемой?
Нравится
Здравствуйте!
Можно попробовать воспользоваться функцией возврата PID по имени процесса:
http://www.community.terrasoft.ua/blogs/2974
Если такой процесс существует, убить его утилитой TaskKill:
taskkill /pid 1230
где 1230 - Process ID, который вернула функция.
А далее, можно выполнить данную команду с помощью WScript.Shell:
var WshShell = new ActiveXObject('WScript.Shell'); WshExec = WshShell.Exec('taskkill /pid ' + PID);
Доброго времени суток!
Спасибо за ответ. Но не получается, так как он почему то не находит нужный процесс. Писал "1CV7" и "1CV7.exe". Процесс в это время запущен, проверял.
А как возвратить названия всех запущенных процессов?
Дмитрий, может попробовать убить по названию процесса?
var WshShell = new ActiveXObject('WScript.Shell'); WshExec = WshShell.Exec('taskkill /s ComputerName /f /im notepad.exe');
А что если нужно убить процесс только текущего пользователя?
Попробуйте в конце работы с 1С добавить такой код, может быть поможет:
v77.ExitSystem(0); v77 = null; CollectGarbage();
Поставил в конец функции, и после выполнения спрашивает закрыть ли программу, нажимаю да, но процесс остается висеть в задачах...
После вызова Initialize надо еще такое вызвать:
v77.ExecuteBatch('СохранитьЗначение("НеЗапрашиватьПодтверждениеПриВыходе",1)');
Здравствуйте!
Закрывать 1С77 следует вот такой конструкцией:
if (Assigned(Param.Obj1C)) { Param.Obj1C.ExitSystem(0); } Param.Obj1C = System.EmptyValue; CollectGarbage();