Вопрос

Каким образом можно отладить конфигурационный сервис в bpm'online on-demand?

У меня такой же вопрос

4 комментария

пишите в логи и запрашивайте их с ТП

Ха-ха-ха, Дмитрий - это один из самых "быстрых" способов отладки.

В любом случае, как за один из возможных вариантов решения, спасибо)

Ха-ха-ха, Дмитрий - это один из самых "быстрых" способов отладки.

В любом случае, как за один из возможных вариантов решения, спасибо)

не, ну вы можете осуществить WS-канал между клиентом-сервером, обернуть отлаживаемый код в try-catch и ошибки отсылать на клиент, а на клиенте их обрабатывать и показывать как вам будет удобно, но это слегка тяжеловесно
мб вы не знаете, но в консоле браузера есть вкладка Network (chrome) где можно посмотреть подробно все запросы к серверу и ответы от него. Большинство ошибок с сервера вываливаются туда в читаемом виде. Но это не подходит для фоновых процессов (происходящих вне рамок текущей веб-сессии), в т.ч. БП.

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Каким образом можно отладить конфигурационный сервис в bpm'online on-demand?

У меня такой же вопрос

3 комментария

Алла, здравствуйте!

Отладка конфигурационных сервисов, также как и остального C# возможна только в on-site, согласно статье https://academy.terrasoft.ru/documents/technic-sdk/7-7-0/otladka-server…

В облаке использовать такие инструменты возможности нет. Как вариант решения можно запросить базу и дистрибутив в поддержке и развернуть локальную среду разработки, отлаживать и переносить на продуктив после окончания разработки.

"Алла Савельева" написал:Каким образом можно отладить конфигурационный сервис в bpm'online on-demand?

Либо лепить костыли (как в старые добрые):
1) Скачать и установить дополнение "консоль sql запросов"
2) Добавить объект в конфигурацию с 1-2 varchar полями
2) В сервис напихать море try/catch + кучу логгеров в этот самый объект (чтобы писались ошибки/шаги выполнения и т.п.)

"Варфоломеев Данила" написал:
1) Скачать и установить дополнение "консоль sql запросов"
2) Добавить объект в конфигурацию с 1-2 varchar полями
2) В сервис напихать море try/catch + кучу логгеров в этот самый объект (чтобы писались ошибки/шаги выполнения и т.п.)

Здравствуйте!

Первый пункт лишний - можно создать справочник на основании созданного объекта и фильтровать по справочнику. Или выгрузить содержимое в Excel и изучать логи там.

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Коллеги, приветствую.

Ознакомился со статьей Отладка серверного кода, пытаюсь начать отладку некоторого действия бизнес- процесса.

Например, у меня есть некоторое задание- сценарий, где я пишу -

// Создание экземпляра запроса, добавление в запрос колонок и источника данных.
Select selectQuery = new Select(UserConnection)
                                        .Column("Id")
                                        .Column("Name")
                                        .From("Contact");
// Выполнение запроса к базе данных и получение результирующего набора данных.
using (DBExecutor dbExecutor = UserConnection.EnsureDBConnection())
{
        using (IDataReader reader = selectQuery.ExecuteReader(dbExecutor))
        {
                while (reader.Read())
                {
                        // Обработка результатов запроса.
                }
        }
}
return true;

(Пример - Использование EntitySchemaQuery для построения запросов к базе данных)

Публикую, компилирую сборку и получаю в итоге -

При попытке компиляции возникло: ошибок - 3, предупреждений - 2

В ходе кодогенерации компиляция не удалась и файлов символов, соответственно, нет - точки останова не срабатывают:

The breakpoint will not currently be hit.
No symbols have been loaded for this document.

Сгенерированный код, который я пытаюсь отладить в Visual Studio -

Нужно- ли определять директивы using в действии "Задание- сценарий"?

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Data;
using Terrasoft.Common;
using Terrasoft.Core;
using Terrasoft.Core.DB;
using Terrasoft.Core.Entities;
...

Если да, то они тоже попадут в тело метода ScriptTask1Execute.
Как правильно написать серверный код в действии "Задание- сценарий", чтобы его можно было отладить в MS Visual Studio? Особенно, если на вход действия подается некий параметр события, который в IDE определяет как undefined?

Был бы весьма признателен за информацию.

Спасибо.

--
С уважением, Алексей Быков.

У меня такой же вопрос

8 комментариев

В 7.7 есть особенности использования UserConnection в БП.
Подробнее можно ознакомиться в теме:
http://www.community.terrasoft.ru/forum/topic/14645
Директивы using указываются один раз для всего процесса. Делается это структуре процесса (боковая панель).

Александр, большое спасибо за ответ! Сейчас поизучаю.

Превосходно, очень признателен. То, что мне и нужно было.

Кстати сказать, попытался получить экземпляр класса UserConnection и некоторый параметр процесса таким образом:

var userConnection = Get("UserConnection");
var temp = Get("addedRecordId");

Ошибки компиляции:

Если использовать context.UserConnection, то все Ок.

Попробуйте явно указать тип для метода Get

var userConnection = Get<UserConnection>("UserConnection");
var temp = Get<Guid>("addedRecordId");

И судя по ошибкам temp у Вас объявляется 2 раза.

Также можно указать флаг принудительная компиляция для элемента или процесса и он будет всегда компилироваться, тогда Вам не нужно будет использовать данный подход.

Александр, спасибо еще раз!

Да, все верно, temp я объявил два раза. Попробую явно указать тип.

Да, если явно указать тип, то все Ок.

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Коллеги, приветствую.

Возникла некоторая необходимость отладить код в элементе бизнес- процесса "Задание- сценарий", а именно - там есть определенный запрос к базе данных, расчеты и последующая вставка результатов в ряд таблиц.

В ..\Terrasoft.WebApp\Web.config настроил выгрузку исходных кодов C# в процессе кодогенерации -

    ...
   
   ...

Подключил библиотеки Terrasoft.

Собственно, пытаюсь отладить какой- нибудь простой запрос, вроде такого -

...
var select = new Select(userConnection)
        .Column("Id")
        .Column("Name")
        .From("Contact");
...

- возникает вопрос, как настроить класс UserConnection... Был бы весьма признателен за информацию, без отладчика весьма и весьма грустно.

Спасибо.

--
С уважением, Алексей Быков.

У меня такой же вопрос

3 комментария

Я могу, конечно, использовать такой код -

using System.Data.SqlClient;
 
static void Main(string[] args)
{
 
	SqlConnection myConnection = new SqlConnection("user id=sa; password....");
 
	try
	{
		myConnection.Open();
		SqlDataReader myReader = null;
 
		SqlCommand myCommand = new SqlCommand("select Id, Name from Contact", myConnection);
		myReader = myCommand.ExecuteReader();
		while (myReader.Read())
		{
			Console.WriteLine(myReader["Id"].ToString());
			Console.WriteLine(myReader["Name"].ToString());
		}
	}
	catch (Exception e)
	{
		Console.WriteLine(e.ToString());
	}
}

- но как отладить такой -

var select = new Select(userConnection)
        .Column("Id")
        .Column("Name")
        .From("Contact"); 

Алексей, для отладки есть еще ряд флагов в конфигах. Подробнее на скриншоте:

Для отладки нужно приаттачиться VS к вашему процессу w3wp.exe (если их несколько, то можно различать по имени пользователя, от которого запущен пул приложения)

В студии открываете выгруженный код, ставите точки останова в нужных местах.

Для получения текста запросов:
- для классов Select,Update,Delete есть метод GetSqlText() и свойство BuildParametersAsValue, которое нужно устанавливать в true для явного получения параметров;
- для классов ESQ есть метод GetSelectQuery(UserConnection), который возвращает объект класса Select, а из него уже можно получить текст запроса.

Также для просмотра запросов к БД можно использовать SQL Profiler

Александр, спасибо огромное! То, что нужно.

Очень полезная статья в дополнение к видеокурсам по разработке на платформе 7.6: Отладка серверного кода

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Здравствуйте, коллеги!
bpmonline 7

можно ли как то отлаживать скрипты отчета BPMonlineReportDesigner в момент построения?

У меня такой же вопрос

2 комментария

Здравствуйте, Владимир!
Отлаживать в среде программирования не получится, но можно логировать все, что требуется.
Вывод производится в файл "Common.log" так как логгер создан для типа «ScriptingNamespace.ScriptingReport»
Добавить в необходимый метод (BeforePrint) логгер

var log = global::Common.Logging.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);

Вывести текст выполняемого запроса

invoiceEsq.GetSelectQuery(userConnection).BuildParametersAsValue = true;
log.Debug(invoiceEsq.GetSelectQuery(userConnection).GetSqlText());

Вывод стека ошибки

try {
// код метода
} catch {
log.Debug(ex.Message, ex);
}

Настройки расположения файла лога хранятся в конфигурационном файле "../Terrasoft.WebApp/log4net.config".

Спасибо, Андрей!

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

С помощью планировщика заданий настроил запуск экспорта в 1С заказа поставщику (утилита синхронизации, функция ExportObject). В этой функции установил точку останова для отладчика (debugger). Планировщиком функция вызывается и возникает окно выбора отладчика, выбираю MS Visual Studio и появляется пустое окно отладчика.

Кто знает как мне отладить с помощью дебагера скрипт функции (хочу увидеть передаваемые в нее параметры)?

TS XRM 3.4.1
Win XP SP3

У меня такой же вопрос

12 комментариев

Здравствуйте, Андрей!
Если вариант Дмитрия Вам не подходит, то проверьте, подсоединен ли Visual Studio к процессу. Также прошу предоставить скриншот, иллюстрирующий проблему.

Дмитрий, спасибо за ссылку.
Проверил из клиента Террасофт - скрипт отрабатывает нормально, а вот при вызове через планировщик заданий - не отрабатывает корректно. Мне все-таки нужно каким-то образом отладить именно выполнение скрипта самим планировщиком заданий.

Андрей, здравствуйте.
Начнем с простого. Создал тестовый пример, вот настройки:
Параметры заданияПараметры функции скрипта

Служба планировщика заданий запущена:
Служба

По полю "Последний запуск" видно, что задание планировщиком запускается:
Признаки

А в реальности никакого диалогового окна не появляется. Как добиться его появления? Как отлаживать такую ситуацию?

TS XRM 3.4.1
Win XP SP3

Андрей, попробуйте в настройках Visual Studio отключить отладку Managed и Native кода:

"Андрей Каспаревич" написал:Андрей, попробуйте в настройках Visual Studio отключить отладку Managed и Native кода

Попробовал - в таком случае отладка вообще не возникает.
Андрей, у вас получилось отработать корректно то тестовое плановое задание, которое я привел в пример?

а если вручную присоединиться дебаггером к TSJobManagerService.exe?

Андрей, не проверял. Но уточнил информацию по поводу взаимодействия с графическими элементами.
Так вот, функции, шаг выполняться не будет в том случае, если в нем происходит обращение к любым графическим компонентам.
Прикрепляю полезную информацию по поводу планировщика.
faq.docx
nastroyka_planirovshchika_zadaniy_3.4.docx
tsmailsystem.zip

"Андросов Дмитрий" написал:а если вручную присоединиться дебаггером к TSJobManagerService.exe?

Такого процесса в списке доступных процессов для подключения я не нахожу.

"Андрей Каспаревич" написал:Так вот, функции, шаг выполняться не будет в том случае, если в нем происходит обращение к любым графическим компонентам.

Такие моменты лучше описывать в документации. Спасибо за документацию, сейчас посмотрю.

Но, все таки, можно каким-то образом выполнить отладку выполняемого шага планировщика заданий?

Андрей, завтра проведем тестирование и по результату Вам сообщим.

Андрей, извиняюсь за дезинформацию. Код, выполняемый планировщиком задач нельзя отладить.

Немного дополню, отсутствие возможности отладки связано с тем, что планировщик запускается как служба, а Visual Studio не умеет отлаживать службы, только процессы.

Войдите или зарегистрируйтесь, чтобы комментировать
Публикация

Использовать отладчик в BPMonline можно только в том случае, если система развернута у Вас локально – для базы OnDemand этого сделать не получится.

Настройка:

1. В Web.config добавить ключ IncludeDebugInformation

       
       

111

Обратите внимание, для версии 5.2 и младше Web.config находится в корневой директории. Для версии 5.3 и выше - в директории Terrasoft.WebApp

После изменения Web.config необходимо перезапустить сервер IIS

2. Затем следует опубликовать хотя бы одну схему в конфигурации (сгенерировать исходный код). В результате в папке %TEMP%\BPMonline\Src появятся файлы с расширением .cs с исходным кодом конфигурации на C#, которые используются для сборки dll-библиотеки конфигурации (TSBpm.dll), подключаемой в сборку по завершении генерации исходных кодов.

3. Для отладки необходимо:

a. открыть в Visual Studio .cs-файл той схемы, на которой мы хотим отлаживаться

222

b. установить в нем в интересующем нас месте точку останова средствами Visual Studio

111

c. Присоединиться к процессу сервера IIS, запущенного на машине и выполнить те действия, которые приведут скрипт в точку останова

333

111

Отсюда уже можно отлаживаться обычными средствами.

Поделиться

23 комментария

Анна, мне кажется тут не хватает еще одного пункта. В самой студии следует указать какие именно ошибки отлавливать: Открыть окно настроек можно комбинацией Ctrl+Alt+E после того как присоединишься к процессу сервера IIS.

К какому процессу подключаться, если используется не IIS Express? Где искать исходный код, если процесс IIS запущен под системной учетной записью? Если пишите о чем то, пишите о условиях, в которых можно воспользоваться этой возможностью.

Максим, большое спасибо за дополнение :)

Алексей, благодарю за вопросы :)

"Агутин Алексей" написал:К какому процессу подключаться, если используется не IIS Express?

Если установлен полный IIS, следует подключаться к процессу w3wp.exe

Где искать исходный код, если процесс IIS запущен под системной учетной записью?

Если IIS запущен под системной учетной записью, тогда исходные коды конфигурации появляются в C:\Windows\Temp\BPMonline

Открыла в студии файлик страницы, присоединилась к процессу, указала брейкпойнт в Init-e, но при открытии этой страницы в BPM перехода в точку не происходит

Здравствуйте, Ольга!

Для того, чтобы отладка работала, нужно, чтобы файлы схем были сгенерированы в текущей сесссии IIS.

Попробуйте удалить все файлы, сгенерировать исходный код для любой из схем, и только затем открывать ее в Visual Studio и устанавливать точку останова.

Добрый день!
Открываю файл для отладки, присоединяюсь к процессу IIS w3wp.exe, но перехода к точке останова не происходит.
При присоединении к процессу значок точки останова меняется и пишется сообщение:
В настоящий момент попадания в точку останова не произойдет. Нет загруженных символов для данного документа.

Подскажите, пожалуйста, что это значит?

Прикладываю скрин

Иногда нужно несколько раз попробовать снять и снова поставить брекпойнт, изредка нужно опубликовать какую-нибудь схему, чтобы подхватило.

Нет, все равно ни в какую не подхватывается.

Странно. А раньше на этом компьютере всё работало (то есть настройки правильные) или это первая попытка отладить?

Нет, раньше отлаживал только TS 3.X.
Для BPMOnline 7 это первая попытка.

Тогда проверьте настройки конфиг-файлов для отладки согласно статье, но учтите, что она о 5.X.

Тут вроде все верно

Попробовал поставить другую версию Visual Studio, не помогло.

Дмитрий, у 7.0 другое ядро, и возможность отладки конфигурации on-site доступна только при наличии исходников. Пожалуйста, опишите задачу, которую Вам необходимо реализовать, и направьте запрос в техническую поддержку по адресу support@terrasoft.ru - Вам предоставят оптимальное решение.

О, а это что за ошибка?
http://joxi.ru/bhoAVP3JTJAANWyJB4U
Я точно знаю что этот код выполняется, почему отладчик к нему не цепляется?

Очевидно, ошибка в строке №11554.

Илья, уточните, пожалуйста, какая у вас версия BPMonline? Очень похоже, что вы пытаетесь отлаживать 7.Х, а у нее другое ядро и отладка без исходных кодов невозможна.

"Alimova Anna" написал:

bpm 5.x onsite , причем днем ранее у меня получилось отладить по этой же инструкции другой скрипт.

В таком случае попробуйте закрыть отладчик, удалить xml-ки схем, скомпилировать любую схему заново и уже новые схемы открывать отладчиком.

"Alimova Anna" написал:7.Х, а у нее другое ядро и отладка без исходных кодов невозможна

Анна, здравствуйте!

Уточните, пожалуйста, как правильно отлаживать on-site 7.Х? И как получить исходные коды?

Для отладки конфигурационного c# кода в 7.х нужно:
1) В файле connectionstrings.json указать, куда будет выгружены исходные коды при компиляции, это параметр
2) В файле Terrasoft.WebApp\Web.config флаг установить в true
3) Перезапустить пул и сайт приложения
4) В конфигурации для нужной схемы вызвать действие «Сгенерировать исходный код»
5) Скомпилировать конфигурацию. Если все правильно настроено, на этом этапе в папке, указанной в первом пункте появятся исходные коды и символы для отладки:

Валерий, спасибо, за разъяснения! Можно уточнить:

"Адасюк Валерий Викторович" написал:1) В файле connectionstrings.json указать, куда будет выгружены исходные коды при компиляции, это параметр

Какой параметр? (defWorkingCopyPath, defPackagesWorkingCopyPath или какой-то другой?)

"Адасюк Валерий Викторович" написал:2) В файле Terrasoft.WebApp\Web.config флаг установить в true

Какой флаг?

Здравствуйте!

Оба параметра находятся в файле Web.config директории Terrasoft.WebApp.
1. Параметр пути выгрузки исходного кода: CompilerSourcesTempFolderPath.
Например: add key="CompilerSourcesTempFolderPath" value="c:\src\BPM\" /

Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Добрый день, после того , как был переустановлен Террасофт у меня не работает debugger.
На компьютере установлен и MS Script Debugger и MS Edit Script.
Ознакомилась с ссылкой http://www.community.terrasoft.ru/forum/topic/7007, у меня окне JIT-отладчика появляется MS Script Debugger.

Но в момент, когда в скрипте есть ошибка, это окно для выбора отладчика не появляется, а появляется просто сообщение об ошибке.

На команду debugger , написанную в скрипте, реакции нет.

Как сделать так, что бы все же переходить в отладчик ?

У меня такой же вопрос

2 комментария

Вам сюда
Внимательно читаем

"Яворский Алексей" написал:Хочу заметить, что в случае если пользователь не администратор на компьютере, то он обязательно должен входить в группу "Debugger Users"

А так же в реестре проверяем

"Пунько Наталия" написал:

Активируйте отладчик скриптов, установив ключ реестра JITDebug

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USER\Software\Microsoft\Windows Script\Settings]
"JITDebug"=dword:00000001

Прикрепленный файлРазмер

enabledebugger.rar
259 байтов

С уважением,
Пунько Наталия
Менеджер по качеству
Группа компаний Terrasoft

Файлик ох как помог! Спасибо!

Войдите или зарегистрируйтесь, чтобы комментировать
Публикация

Когда работаешь над изменением конфигурации, неудобно каждый раз перезапускать клиент, чтобы проверить работоспособность одного окна.

В таком случае можно в любом месте скрипта добавить код:

function Main() {
var wnd = Services.GetNewItemByUSI('wnd_**');
wnd.Prepare();
}

Вместо звездочек введите название своего окна.

illu

Затем запустите скрипт по F9. Это вызовет нужное окно на исполнение, и Вы сможете провести необходимо тестирование без запуска основной программы.

Примечание: вместо wnd.Prepare(); можно использовать wnd.Show();

Поделиться

0 комментариев
Войдите или зарегистрируйтесь, чтобы комментировать
Вопрос

Подскажите какие отладчики, кроме стандартного Microsoft Script Debugger и отладчика Visual Studio можно использовать?

Я скачал с сайта Microsoft Debugging Tools for Windows (x86), там идет WinDbg.exe дебагер, но как его активизировать для JScript? А может он просто его не поддерживает.

Может есть какие-то бесплатные альтернативы, ну хоть что-то лучше чем Microsoft Script Debugger?

ПС: быстро пробежался поиском по комюнити - не нашел темы по этому поводу. Если такая тема уже поднималась, то я удалю мой пост.

У меня такой же вопрос

4 комментария

Например, Microsoft Script Editor. У него, конечно, намного меньше возможностей, чем у Visual Studio, но как по мне, гораздо лучше Microsoft Script Debugger.

Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.

Спасибо, я с ним сталкивался мимолетно, теперь я понял откуда он взялся - из MS Office 2003.

Вот жаль: из 2007 офиса его убрали и только этот офис стоит у заказчика. Может еще есть какие-то альтернативы?

На самом деле его не убрали, а просто не установили при установке офиса. При желании его можно доустановить:

Более подробную информацию по установке можно найти здесь.

Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.

Спасибо за помощь :smile:
По той ссылке я был, видно не все комментарии прочитал и не увидел, что в 2007 офисе тоже дебагер есть.

Войдите или зарегистрируйтесь, чтобы комментировать