Снегопат
https://snegopat.ru/forum/

Запуск снегопата в пакетном режиме
https://snegopat.ru/forum/viewtopic.php?f=1&t=547
Страница 1 из 2

Автор:  sosnae [ 20 сен 2013, 09:24 ]
Заголовок сообщения:  Запуск снегопата в пакетном режиме

Кто-то пробовал запустить снегопат в из bat файлов и что бы дождаться завершения?
Хочу автоматизировать некоторые вещи, но вот как запустить starter что бы дождаться завершения не знаю.

Автор:  artbear [ 20 сен 2013, 10:43 ]
Заголовок сообщения:  Re: Запуск снегопата в пакетном режиме

Женя, как-то давно пробовал в качестве упражнения, не получилось, бросил.
Также интересен ответ.
ЗЫ если Саша не сможет помочь, можно попробовать отследить процессы 1С по родительскому процессу и дождаться завершения найденных подчиненных процессов.
есть скрипт на PowerShell, который выполняет этот код (через ВМИ или напрямую, через PowerShell-фичи)

Автор:  artbear [ 20 сен 2013, 10:51 ]
Заголовок сообщения:  Re: Запуск снегопата в пакетном режиме

Вот код PowerShell (можно использовать WMI, например, в бат-файле или собственном js-скрипте)
Код:
function Start-ProcessTree([string]$FilePath = $(Read-Host "Supply a value for the FilePath parameter"),[string]$ArgumentList,[int]$TimeoutMin = 60,[switch]$WaitForChildProcesses)
{
    $Timeoutms = $TimeoutMin * 60 * 1000
    $ProcessStartInfo = New-Object System.Diagnostics.ProcessStartInfo $FilePath
    if ($ArgumentList) { $ProcessStartInfo.Arguments = $ArgumentList }
    $Process = [System.Diagnostics.Process]::Start($ProcessStartInfo)
    $ProcessId = $Process.Id
    $ProcessStartTime = $Process.StartTime
    $ProcessCompleted = $Process.WaitForExit($Timeoutms)
    while ($WaitForChildProcesses -and $ProcessCompleted)
    {
      [array]$ChildProcesses = Get-WmiObject Win32_Process -Filter "ParentProcessId = $ProcessId"
      if (!$ChildProcesses.Count)
      {
        break
      }
      $Elapsedms = (New-TimeSpan $ProcessStartTime (Get-Date)).TotalMilliseconds
      if ($Elapsedms -lt $Timeoutms)
      {
        Start-Sleep -Seconds 1
      }
      else
      {
        $ProcessCompleted = $false
      }
    }
    return $ProcessCompleted
}

Вызов делается так (стартуем общий стартер 1С и ждем завершения подчиненных процессов
Код:
# Указываем путь к 1С и проверяем наличие.
$str1CPath='C:\Program Files (x86)\1cv82\common\1cestart.exe'
if (!(Test-Path $str1CPath)) { "1C is missing at $str1CPath" ; exit 13 }

# Starting with default timeout 60 minutes
$Finished = Start-ProcessTree $str1CPath $arguments1C -WaitForChildProcesses

$EndDate = Get-Date -uFormat %Y-%m-%d
$EndTime = Get-Date -uFormat %H:%M:%S
if ($Finished)
{
    "Success. Job finished $EndDate at $EndTime" | Write-LogFile $strLogName
}
else
{
    "Error. Job stopped by timeout $EndDate at $EndTime" | Write-LogFile $strLogName
    exit 10
}

Автор:  Magister [ 20 сен 2013, 12:24 ]
Заголовок сообщения:  Re: Запуск снегопата в пакетном режиме

Когда-то Саша выкладывал инструкции, там ещё DLL от 1С нужно было патчить. Только у меня так и не заработало, и я забил.

Автор:  orefkov [ 25 сен 2013, 10:01 ]
Заголовок сообщения:  Re: Запуск снегопата в пакетном режиме

Я подумаю, может доработаю стартер для этого дела.

Автор:  artbear [ 25 сен 2013, 18:54 ]
Заголовок сообщения:  Re: Запуск снегопата в пакетном режиме

Сделай, пожалуйста.
Мне, например, это нужно для запуска тестов Снегопата и его плагинов/скриптов в ночных сборках или просто по команде.

Автор:  Diversus [ 25 дек 2013, 13:33 ]
Заголовок сообщения:  Re: Запуск снегопата в пакетном режиме

Добрый день. Прошло уже много времени с последнего сообщения.
Есть успехи в запуске снегопата из bat-файла?

Автор:  the1 [ 26 дек 2013, 13:43 ]
Заголовок сообщения:  Re: Запуск снегопата в пакетном режиме

а что, WshShell.Run(<Command>,<WindowStyle>,<WaitOnReturn>) уже не работает?

Автор:  orefkov [ 26 дек 2013, 13:49 ]
Заголовок сообщения:  Re: Запуск снегопата в пакетном режиме

нет, не работает. Ибо стартер снегопата запускает стартер 1С и завершается, а уже тот запускает нужный релиз 1С и тоже завершается.

Автор:  Diversus [ 27 дек 2013, 11:33 ]
Заголовок сообщения:  Re: Запуск снегопата в пакетном режиме

orefkov писал(а):
нет, не работает. Ибо стартер снегопата запускает стартер 1С и завершается, а уже тот запускает нужный релиз 1С и тоже завершается.

А можно ли реализовать возможность ввести запуск аналогично стартеру 1С при запуске для стартера снегопата, что бы запустить конфигуратор сразу с запущенным снегопатом, но без диалогового окна? Что-то типа:
Код:
"C:\Snegopat\core\starter.exe" DESIGNER /S"server-1C\ZUP" /N"Админ" /P"12345"

Очень нужная штука, ибо можно настроить быстрый запуск нужной конфы из bat-файла, использовать в сторонних стартерах и т.д.

Страница 1 из 2 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/