PM: определить что выполнение остановлено

Livekik

Client
Регистрация
18.08.2016
Сообщения
31
Благодарностей
3
Баллы
8
Привет.
В ProjectMaker (V7 RU 7.8.2.0) идет отладка проекта, нужен прогон в сотни часов... вот проект запущен, выполняется, сотни кубиков... - на одном из них возникает ошибка, выполнение останавливается. Вопрос: как автоматически определить факт остановки выполнения проекта, так чтобы далее этот факт также автоматически обработать (отправить уведомление в телеграм, например)?
Спасибо.
 

Moonwalker

Client
Регистрация
16.03.2016
Сообщения
1 784
Благодарностей
1 377
Баллы
113
Выводить в лог или записывать в файл последнее выполненное действие (его id). Можно еще значения переменных куда-нить записывать, чтобы понимать, на чем именно споткнулся (можно сразу, можно уже после понимания, на каком этапе вылетает).

update. У меня вот такой сниппет стоит обычно в Bad End

C#:
LastError error = project.GetLastError();
string tmp = "";
if(error != null)
    tmp = string.Format("ActionComment: {0}.\r\nActionGroupId: {1}.\r\nActionId: {2}", error.ActionComment, error.ActionGroupId, error.ActionId);

return tmp;
Его результат уже либо в лог вывожу, либо в файл записываю. Ну и потом по ID уже смотрю, в каком месте "что-то пошло не так" и дорабатываю логику/выходы.

PS. Тьфу, мне кажется, не до конца понял задачу. Сам факт "вылета" можно просто настроить через Bad End. У меня просто задача обычно найти причину его и сделать правильную обработку этого блока )) По хорошему, Bad End'ов в работе быть не должно, он возникает только если что-то не предусмотрено, а предусматривать надо все ))
 
Последнее редактирование:
Регистрация
17.01.2022
Сообщения
88
Благодарностей
25
Баллы
18
BadEnd
а там C# кубик на отправку сообщения в группу
+- такой использую

string message = $"Ошибка";

// Ваши данные бота и чата
string botToken = "ТОКЕН БОТ";
string chatId = "ЧАТ АЙДИ";

// Формируем URL для запроса
string telegramUrl = $"https://api.telegram.org/bot{botToken}/sendMessage?chat_id={chatId}&text={Uri.EscapeDataString(message)}&parse_mode=HTML";

try
{
// Создаем WebClient и выполняем запрос
using (var webClient = new System.Net.WebClient())
{
string response = webClient.DownloadString(telegramUrl);
project.SendInfoToLog("Сообщение отправлено. Ответ сервера: " + response);
}
}
catch (Exception ex)
{
project.SendErrorToLog("Ошибка при отправке: " + ex.Message);
project.SendErrorToLog("URL запроса: " + telegramUrl); // Логируем URL для отладки
project.SendErrorToLog("Сообщение: " + message); // Логируем сообщение для отладки
}

как получить токен бота и чат айди - поищите на форуме, гайдов полно
 
  • Спасибо
Реакции: Livekik

Sergodjan

Administrator
Команда форума
Регистрация
05.09.2012
Сообщения
21 015
Благодарностей
9 356
Баллы
113
Привет.
В ProjectMaker (V7 RU 7.8.2.0) идет отладка проекта, нужен прогон в сотни часов...
Добрый день.
Не рекомендуем такие длительные прогоны делать в ПМ.
На этом этапе пора отладку переносить в ЗП.
 
  • Спасибо
Реакции: Livekik

Livekik

Client
Регистрация
18.08.2016
Сообщения
31
Благодарностей
3
Баллы
8
а как в случае с BadEnd узнать на каком кубике произошел останов?
 

Moonwalker

Client
Регистрация
16.03.2016
Сообщения
1 784
Благодарностей
1 377
Баллы
113
а как в случае с BadEnd узнать на каком кубике произошел останов?
Так я тебе и скинул сниппет. Он как раз и показывает именно последний кубик (его айди), где произошла ошибка. Ищешь по айди в шаблоне потом кубик, смотришь, что пошло не так. Просто поставь его в шаблоне после Bad End и данные, которые он положит в переменную, выведи в лог или запиши в какой-нить файл.
 
Последнее редактирование:
  • Спасибо
Реакции: Livekik и Sergodjan

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)