Снегопат

Обсуждение Снегопата
Текущее время: 22 ноя 2024, 17:24

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 15 ]  На страницу 1, 2  След.
Автор Сообщение
СообщениеДобавлено: 20 сен 2013, 09:24 
Не в сети

Зарегистрирован: 20 дек 2011, 10:31
Сообщения: 588
Откуда: Украина, Запорожье
Кто-то пробовал запустить снегопат в из bat файлов и что бы дождаться завершения?
Хочу автоматизировать некоторые вещи, но вот как запустить starter что бы дождаться завершения не знаю.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 20 сен 2013, 10:43 
Не в сети
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 20 сен 2013, 10:51 
Не в сети
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:36
Сообщения: 1085
Вот код 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
}


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 20 сен 2013, 12:24 
Не в сети

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

_________________
В реальності все не так, як насправді


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 25 сен 2013, 10:01 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:04
Сообщения: 2052
Я подумаю, может доработаю стартер для этого дела.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 25 сен 2013, 18:54 
Не в сети
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:36
Сообщения: 1085
Сделай, пожалуйста.
Мне, например, это нужно для запуска тестов Снегопата и его плагинов/скриптов в ночных сборках или просто по команде.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 25 дек 2013, 13:33 
Не в сети

Зарегистрирован: 20 июн 2012, 15:48
Сообщения: 18
Добрый день. Прошло уже много времени с последнего сообщения.
Есть успехи в запуске снегопата из bat-файла?

_________________
Управление ИТ-отделом 8


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 26 дек 2013, 13:43 
Не в сети

Зарегистрирован: 14 июн 2012, 13:08
Сообщения: 47
а что, WshShell.Run(<Command>,<WindowStyle>,<WaitOnReturn>) уже не работает?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 26 дек 2013, 13:49 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:04
Сообщения: 2052
нет, не работает. Ибо стартер снегопата запускает стартер 1С и завершается, а уже тот запускает нужный релиз 1С и тоже завершается.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 27 дек 2013, 11:33 
Не в сети

Зарегистрирован: 20 июн 2012, 15:48
Сообщения: 18
orefkov писал(а):
нет, не работает. Ибо стартер снегопата запускает стартер 1С и завершается, а уже тот запускает нужный релиз 1С и тоже завершается.

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

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

_________________
Управление ИТ-отделом 8


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 15 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB