Имя: Пароль:
1C
1С v8
Запуск скрипта из 1с после закрытия 1с
0 revolt
 
13.08.12
16:19
Есть в 1с обработка по перепроведению документов. Запускается через task sheduler. Результат работы записывается в текстовый файл через параметр запуска. Этот текстовый файл должен быть отправлен скриптом на почту.

Проблема в том, что файл формируется после закрытия 1с (после завершения работы перепроведения). Как запустить скрипт отправки почты, чтобы он отправил заполненный файл, если скрипт я запускаю из самой 1с в обработке перепроведения, но результат,который должен быть отправлен создается только после зарктия 1с?

Пробовал запускать скрипт, который запускает такой-же скрипт через 10 секунд, чтобы отправить почту. Но 1с упорно ждет завершения этих 2х скриптов и только потом закрывается и формирует файл.
1 pumbaEO
 
13.08.12
16:21
Версия 1С какая?
2 revolt
 
13.08.12
16:22
1С:Предприятие 8.2 (8.2.15.310)
3 vde69
 
13.08.12
16:28
нифига не понял, но вообще-то регламентными заданиями делается любая отмылка
4 revolt
 
13.08.12
16:30
(3) конфигурацию трогать нельзя. Обработка по перепроведению - внешняя. Файл результата обработки создается только когда 1с закрывается, т.к. результат проведения выдается в оконо сообщений 1с и сохраняется при закрытии в файл с помощью параметра, который указывали, когда запускали 1с /OUT
5 Nikitos
 
13.08.12
16:31
Странные вопросы... Рекомендую написать что-нибудь, используя WSH, ну или, на худой конец, тупо bat файл
6 Heckfy
 
13.08.12
16:31
Скрипт через КомандаСистемы или через запуститьПриложение запускаете?
7 Liova
 
13.08.12
16:32
Если всё равно запускается батник, почему бы просто не поставить задержку достаточную (ping тот же)и затем отослать файл уже созданный.
8 vde69
 
13.08.12
16:32
(4) регламентное задание можно и в пользовательском режиме сделать

а вообще для начала сделайте запись в файл в самой обработке
9 Vakhrin
 
13.08.12
16:33
в комманд файле, откуда запускается 1С, после отработки как угодно отправить файл - проблема разве?
10 revolt
 
13.08.12
16:33
(6) КомандаСистемы
11 pumbaEO
 
13.08.12
16:34
По два раза не повторяю, по два раза можно запустить 1С... Дабы была одна точка входа: одна обработка проводит, вторая обработка отправляет результат работы.
12 revolt
 
13.08.12
16:34
(7) так и делал. В итоге 1с ждет завершения работы второго батника
13 revolt
 
13.08.12
16:34
(8) подскажете, как сообщения из окна сообщений сохранить в файл средствами встроенного языка 1с?
14 Nikitos
 
13.08.12
16:34
(11) Зачем?
Один раз дождаться появления файла и отправить его.
15 revolt
 
13.08.12
16:35
(9) не проблема. проблема в том, что отправляемый файл появляется только после закрытия 1с из которой я могу запустить отправку
16 Heckfy
 
13.08.12
16:35
(10) может ЗапуститьПриложение(<СтрокаКоманды>, <ТекущийКаталог>, <ДождатьсяЗавершения>, <КодВозврата>)
ДождатьсяЗавершения=Ложь;

?
17 revolt
 
13.08.12
16:37
(16) спасибо попробуем
18 Liova
 
13.08.12
16:37
(12) Как-то нелогично. Отдельная команда запуска 1С закончилась ведь уже.
19 stix2010
 
13.08.12
16:37
20 revolt
 
13.08.12
16:38
(18) тем не менее. Получается что батник, запустивший второй батник продолжает выполняться сам
21 revolt
 
13.08.12
16:38
(19) не понял причем тут &&
22 Liova
 
13.08.12
16:38
Понял. Я имел ввиду сделать обработку 1 - создает файл и обработку 2 - запускает скрипт отправки уже созданного пред. командой файла.
23 revolt
 
13.08.12
16:40
(22) а как обработка 2 узнает, что обработка 1 завершилась? Обработка 1 запускается всего 2 раза в месяц, выполняется 1-2 часа, но время может быть разным.
24 Nikitos
 
13.08.12
16:41
Объясните мне, дураку, зачем вообще 2 батника?
Примерно так на vbs:

Set WshShell = CreateObject("WScript.Shell")
WshShell.Run("notepad", 1, True)
а вот тут начинаем отправку файла.

************************
3.4. Run

Синтаксис:

Run(<Command>,<WindowStyle>,<WaitOnReturn>)

Назначение: создаёт новый независимый процесс, который запускает заданное приложение.

Параметры:

   <Command> - строка, командная строка запуска приложения.
   <WindowStyle> - необязательный, число. Определяет вид окна запускаемого приложения. Некоторые возможные значения:
       0 - Не отображает окно.
       1 - Активизирует и отображает окно.
       2 - Активизирует окно и отображает его в свёрнутом виде.
       3 - Активизирует окно и отображает его в максимизированном виде.
   <WaitOnReturn> - необязательный, булево (число). True - сценарий возобновит работу только после завершения вызванного процесса. False (по умолчанию) - управление передаётся сразу обратно в сценарий.

Описание: если параметр "WaitOnReturn" установлен в True, метод возвращает код выхода вызванного приложения. Иначе метод всегда возвращает ноль.

Пример:

Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "explorer /e,/root,""C:\Program Files"""

Другой пример:

Set WshShell = CreateObject("WScript.Shell")
RetCode = WshShell.Run("notepad", 1, True)
MsgBox "Обработка завершена! Код возврата - " & RetCode
25 Liova
 
13.08.12
16:42
так просто cmd

1cv8.exe обработка1 OUT
1cv8.exe обработка2

вот тебе по порядку запускаются и всё.
26 stix2010
 
13.08.12
16:43
(21)
command1 && command2

Оператор && гарантирует, что вторая команда будет выполнена только, если первая была выполнена успешно, т.е. с нулевым кодом возврата (он же %errorlevel%).

c:\...1cv8.exe /обработкапроведения && с:\...1cv8.exe /обработкаотправки
27 revolt
 
13.08.12
16:43
(24) получается аналог ЗапуститьПриложение, предложенное в (16), которое сейчас и проверяю =)
28 revolt
 
13.08.12
16:44
(26) понял. Спасибо!
29 revolt
 
13.08.12
16:47
Сделал по (16).

Всем огромное спасибо!