Имя: Пароль:
1C
1С v8
Запуск 1С из 1С. Как сделать ожидание завершения?
,
0 WED
 
23.04.12
14:16
Задача реализовать хитрый обмен между двумя базами.

В источнике есть узел плана обмена. По нему есть регистрация у ряда документов. в обработке выбираем какие документы будем выгружать и выгружаем в xml используя "УниверсальныйОбменДаннымиXML".
Теперь нужно в приемнике загрузить этот файл и сформировать подтверждение.
Хочу это сделать через запуск ИБ-приемника с запуском внешней обработки, которая в параметрах получить имя xml-файла, загрузит его, сформирует подтверждение и закроет ИБ-приемник.

Но столкнулся с тем, что ЗапуститьПриложение() вопреки описанию в СП не ожидает завершения запускаемой 1С-приемник.

Как можно запустить 1С-приемник с ожиданием завершения?


ИБ-приемник - типовая бух-я.
Платформа 8.2.15.294
1 pumbaEO
 
23.04.12
14:20
ЗапуститьПриложение() не ожидает, для 1С.
Пиши файл статуса и периодически читай его... (в команду запуска передаешь путь к файлу, вешаешь обработчик, переодически читаешь файлик и если там типа есть 1 строка с единицей, значить все ок)
2 Buster007
 
23.04.12
14:20
а чем не устраивает как реализован типовой обмен? Там можно настроить подключение к базе.
3 WED
 
23.04.12
14:27
(1) Увы, но асинхронность тут запрещена (пользователи такие - надо только последовательные действия)
(2)
1. Источник - не типовая и типового механизма обмена в ней нет.
2. Часть зарегистрированных изменений попадает в источник, часть игнорируется: т.е. в источнике изменения не выгружаются,а удаляются и в приемник не попадают.
4 WED
 
23.04.12
14:28
+(3) 3.Обмен не регламентированный, а тогда "когда я нажму на кнопку".
5 aleks-id
 
23.04.12
14:28
запускай скриптом
6 WED
 
23.04.12
14:29
(5) Домен. Пользователям скрипты запрещены.
7 WED
 
23.04.12
14:30
Может есть внешняя компонента, с реализованной функцией запуска и ожиданием завершения процесса ?
8 aleks-id
 
23.04.12
14:31
Процедура ВыполнитьКомандуСистемы(Команда) Экспорт
   ScrptCtrl=Новый COMОбъект("MSScriptControl.ScriptControl");
   ScrptCtrl.Language="vbscript";
   ScrptCtrl.AddCode("
   |Function ExecSys()
   |Dim oWsh
   |Dim sResult
   |
   |Set oWsh = CreateObject(""Wscript.Shell"")
   |sResult = oWsh.Run(""" + Команда + """, 1, True)
   |
   |End Function
   |");
   Результат = ScrptCtrl.Run("ExecSys");
КонецПроцедуры
9 WED
 
23.04.12
14:32
(8) Спасибо за процедуру, но опять же - скрипты запрещены.
10 aleks-id
 
23.04.12
14:37
(9) ну так разреши пользователю под которым сервак крутится скрипты. в чем проблема то?
11 WED
 
23.04.12
14:40
(10) Обмен происходит не на сервере, а у конкретного пользователя.
12 WED
 
23.04.12
14:40
База файловая
13 aleks-id
 
23.04.12
14:43
так. может я что не понимаю?
ЗапуститьПриложение (RunApp)
Синтаксис:
ЗапуститьПриложение(<СтрокаКоманды>, <ТекущийКаталог>, <ДождатьсяЗавершения>)
14 aleks-id
 
23.04.12
14:45
не может быть чтобы не работало
15 WED
 
23.04.12
14:49
(14) А ты попробуй :) в случае запуска 1С не ждет.
16 pumbaEO
 
23.04.12
14:53
(14) не ждет. И даже из (8) не сработает.
17 hhhh
 
23.04.12
14:56
(15) так вы наверно 1с-стартер запускаете? Приколисты. Запускайте саму 1с.
18 WED
 
23.04.12
15:01
(17) ДРУЖИЩЕ! Ну ты ж прав конечно! :) Работает! Ждет! Ура, блин.
я за 3 дня не допер...