Снегопат

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

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




Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
СообщениеДобавлено: 04 окт 2013, 00:47 
При проверке модуля вызываемого по Ctrl-F7 если есть ошибки то 2 клик по строке с ошибкой приводит к переходу на нажную строку.
Что нужно написать в скрипте что бы мой вывод в это окно работал также?
пока использую тупо message


Вернуться к началу
  
Ответить с цитатой  
СообщениеДобавлено: 04 окт 2013, 08:45 
Не в сети
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:36
Сообщения: 1085
Да, объектная модель позволяет.
Посмотри описание объектной модели.


Вернуться к началу
 Профиль  
Ответить с цитатой  
СообщениеДобавлено: 04 окт 2013, 21:09 
а ссылку, для облегчения поиска? понимаю что нагло, но мое гугл-фу - очень плохо....


Вернуться к началу
  
Ответить с цитатой  
СообщениеДобавлено: 04 окт 2013, 21:42 
Вот только это нашел. Есть что-то еще или придется самому дописыфвать обрабочик?

Метод Message

Выводит сообщение в окно сообшений.
Синтаксис:

Message(Текст, [Пиктограмма], [Обработчик], [Параметр для обработчика])

Параметры:

Текст. Обязательный. Строка. Текст выводимого сообщения. Пустой текст движком 1С не выводится.

[Пиктограмма]. Не обязательный. Число или объект Картинка. Указывает пиктограмму для выводимого сообщения. Если передано число, выводится одна из стандартных пиктограмм:
mNone = 0, без пиктограммы
mTriangle = 1, Треугольник
mExc1 = 2, !
mExc2 = 3, !!
mExc3 = 4, !!!
mInfo = 5, Информация

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

[Обработчик]. Необязательный. Функция, которая будет вызвана при клике или нажатии Enter на выведенном сообщении.

[Параметр для обработчика]. Необязательный. Любого типа. Будет передан аргументом в функцию-обработчик нажатия при ее вызове.


Вернуться к началу
  
Ответить с цитатой  
СообщениеДобавлено: 04 окт 2013, 22:21 
Разорбрался.
Но вопрос такой - курсор не мигает. все остально работает, а вот курсор не видно. вот и приходиться мышкой тыкать в окно.
И попутно вопрос - есть шаблон вообще для таких мелентких скриптов? типа того что бы только нужную часть писать а вся обвязка была бы более-менее стандартной?
И еще вопрос - код закритикуйте - где неправильно сделал? как придать коду совершенства?
код
$engine JScript
$uname warn_45lines
$dname warn_45lines
$addin global
$addin stdlib
$addin stdcommands


stdlib.require('TextWindow.js', SelfScript);
stdlib.require('SyntaxAnalysis.js', SelfScript);
global.connectGlobals(SelfScript);


function onSyntaxCheck(cmd)
{
var mdObj, av = windows.getActiveView()
if(!av || !(mdObj = av.mdObj))
return
macrosanalizeModule();
}


function macrosanalizeModule(){
var tw = GetTextWindow();
if (!tw) return;
var parser = snegopat.parseSources(tw.text());

for(var i = 0, c = parser.lexemCount; i < c; i++)
{
var lex = parser.lexem(i)
if(lex.type==40 )
i+= analizeFunction(parser,i,lex);
}
}

function onClick_45Lines(param)
{
if (!param['wnd'])
return
if (!param['wnd'].IsActive())
return

param['wnd'].setCaretPos(param['line']+1,1);
var view = param['wnd'].GetView();
if (!view){}
else
view.activate();
}

function analizeFunction(parser,start,startlex){

line = 0;
name = parser.lexem(start+1).text;
lastline = startlex.line;
var i,c, wnd = GetTextWindow();
for(i = start, c = parser.lexemCount; i< c; i++){
var lex = parser.lexem(i);
var maxLines = 45;
if(lex.type==42){
if(line > maxLines) {
var param = {};
param['wnd'] = wnd;
param['line'] = startlex.line;
message("Функция "+name+" большая. Лишних "+(line - maxLines)+" строк ",mExc1, onClick_45Lines, param);
}
break;
}
if (lex.type == 1) // коменты не считаются кодом.
continue;

line+= (lastline==lex.line) ? 0:1; // смениться после прочтения перевода строки. а это может только при честном переводе или если прочли многострочную строку
lastline =lex.line;

}
return (i - start);
}

// Добавим обработчик команды сохранения файла
stdcommands.Frntend.SyntaxCheck.addHandler(SelfScript.self, "onSyntaxCheck");


Вернуться к началу
  
Ответить с цитатой  
СообщениеДобавлено: 07 окт 2013, 13:28 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:04
Сообщения: 2052
Конструкции param['wnd'] лучше замени на param.wnd
А так, как я понял, пишет о слишком длинных функциях?


Вернуться к началу
 Профиль  
Ответить с цитатой  
СообщениеДобавлено: 07 окт 2013, 13:33 
ну да. Кандидаты для анализа и под нож рефакторинга.
Пользуясь случаем - автору этого скрипта - респект и уважуха.


Вернуться к началу
  
Ответить с цитатой  
СообщениеДобавлено: 07 окт 2013, 13:52 
Не в сети

Зарегистрирован: 20 дек 2011, 10:31
Сообщения: 588
Откуда: Украина, Запорожье
Давай тогда добавлю с настройкой в расширенную проверку. Типа в настройках выбираешь тип проверки:
синтаксис проверка
орфографическая проверка
длинна в функции/процедуры и параметром задаем количество строк для проверки.


Вернуться к началу
 Профиль  
Ответить с цитатой  
СообщениеДобавлено: 07 окт 2013, 14:27 
Да, я только за.
и про двиения функций по списку не забудь


Вернуться к началу
  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

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


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

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


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

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