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

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

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 офисе тоже дебагер есть.

Показать все комментарии

В процессе разработки в ТС мне нужно поменять логику отображения-скрывания контролов в карточке документа,
в зависимости от того, что там выбрано, и ещё от того, кто откуда и зачем её вызвал и т.д.
Перезапускать клиент для проверки внесённых изменений - долго выходит. Вариант открывать карточку програмно -
так и делаю как правило, но не всегда всё получается проверить.

Нашёл следующий подход: в jscript есть функция eval, позволяющая динамически выполнить блок кода.
Пишем кусок скрипта в текстовом файле (я пишу в своей любимой Visual Studio), в терасофте добавляем его
загрузку и выполнение в нужное место, и вуаля - поменяли скрипт, нажали кнопку в клиенте - отработала новая логика,
никаких перезапусков!

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

Вариант кода:

//В администраторе
//Глобальная переменная - чтоб убедиться, что загруженный скрипт видит всё, что видно в функции, из которой вызван eval
var testMessage = 'Printed from loaded script';
function OnEvent()
{
  eval(GetExtScriptText('C:\\Prj\\Terrasoft\\ExtScripts\\DocScripts.js')); // Получили текст скрипта и выполнили его, теперь все функции оттуда нам доступны
  processTestMessage(); //Эта функция описана в скрипте DocScripts.js
}

//Файл DocScripts.js
function oneMoreFunction(messageText){
 return messageText + ' ok.';
}

//Эту функцию мы и вызываем из террасофт. Ей доступна, среди прочего, переменная testMessage
function processTestMessage() {
    var tempString = oneMoreFunction(testMessage);
   
    ShowInformationDialog(tempString);       
}
 

//Функция, которая читает тексовый файл
function GetExtScriptText(scriptFile)
{
 var StringsList = System.CreateObject('TSObjectLibrary.StringsList');
 var FileSystemObject = new ActiveXObject('Scripting.FileSystemObject');

    var File = FileSystemObject.GetFile(scriptFile);

 //Open for reading in default encoding
 var Stream = File.OpenAsTextStream(1, -2);
 try
 {
  while (!Stream.AtEndOfStream)
  {
   StringsList.Add(Stream.ReadLine());
  }
 }
 finally
 {
  Stream.Close();
 }

 return StringsList.Text;
}

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

Нравится

Поделиться

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

Сергей, а почему не использовать функцию Main в самом скрипте?
Пишите там код по созданию экземпляра карточки, заполняете нужные атрибуты, вызываете Show(), Prepare(), нажимаете F9 и получаете работающую карточку в администраторе.

Александр, я раньше так и делал...
У нас в этой карточке логика зависит от того, как её создавали (есть несколько вариантов действий, в результате которых вызывается эта карточка в разных режимах - обычный, массовое копирование, изменение, вызов из детали)

Соответственно, я создавал из main весь workspace. Это занимает больше 10 секунд, и при этом не всё работало (возможно, я не до конца корректно его создавал, хотя больше похоже на то, что для корректного создания нужен ещё сервис основного окна). А так - при запущеном клиенте проверить новую функциональность несколько секунд.

Я понял. Да иногда самое сложное - это как раз подготовить параметры для отладки окна. Тогда Ваш способ действительно облегчает отладку.

Показать все комментарии

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

Возникла проблема с отладкой скриптов под ОС Vista.

Установлено:
Windows Vista SP1 x86
Internet Explorer 8 beta2 (отладка скриптов включена)
Visual Studio Express Edition 2008
MS Office 2007 (с отладчиком скриптов)

Внесены изменения в реестре:

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

Но, на волшебное слово debugger; система никак не реагирует!!!
Когда намерено допустить ошибку в скрипте - просто пишет в лог, дебагер не запускает!
Уже второй час гуглю в нете - ничего не нашёл...

Кто-то сталкивался с подобным? Как решить?
Спасибо!

PS: Попробовал поставить из Redist - ScriptDebuggerNT. Запустился, но в нём же невозможно работать!

Нравится

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

Здравствуйте, Виталий!

Для решения проблемы попробуйте зарегистрировать файл EnableDebugger.reg, который находится в папке Tools директории, где установлен Terrasoft CRM (если Вы устанавливали систему из инсталляции).

Terrasoft Support Team

Если открыть файл EnableDebugger.reg в режиме редактирования, который находится в папке Tools директории, где установлен Terrasoft CRM, то прописано:

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

Запускал я его несколько раз.... Вносил значения в реестр вручную.... Результат нулевой!
Без дебагера невозможно работать :(

Проблема именно в Vista UAC, если его отключить то все ок.
К сожалению, менее радикального метода пока не нашёл...

Относительно Visual Studio 2008 Express Edition, то
http://msdn.microsoft.com/ru-ru/library/k8kf6y2a.aspx
:(

Показать все комментарии