Снегопат

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

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




Начать новую тему Ответить на тему  [ Сообщений: 100 ]  На страницу 1, 2, 3, 4, 5 ... 10  След.
Автор Сообщение
 Заголовок сообщения: Скрипт Окна конфигурации
СообщениеДобавлено: 31 авг 2011, 17:46 
Не в сети

Зарегистрирован: 24 авг 2011, 15:57
Сообщения: 388
Сейчас собираюсь сделать очень удобный по моему мнению скрипт:
Будет показывать в дереве открытые окна конфигурации. Причем хочу сделать именно дерево, чтобы например одна открытая внешняя обработка отображалась отдельной ветвью. Думаю у многих было такое что смотришь в закладки а их просто туча и без поллитры не разобраться.

Подскажите как с помощью снегопата перебрать открытые окна. Плюс конечно хотелось бы иметь возможность отслеживать открытие новых окон и иметь возможность определять тип окна и его владельца если есть.

_________________
ИТ учет http://tunesoft.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Скрипт Окна конфигурации
СообщениеДобавлено: 31 авг 2011, 22:00 
Не в сети
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:36
Сообщения: 1085
Пока нет возможности перебора окон. У Александра это вроде бы в ближайших планах.
Сам жду такую возможность.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Скрипт Окна конфигурации
СообщениеДобавлено: 31 авг 2011, 23:03 
Не в сети

Зарегистрирован: 24 авг 2011, 15:57
Сообщения: 388
Александр, задачу сделать по возможности перебора или и так будет?
Хотя конечно самое главное стабильность работы, а я тут задач наваливаю новых ...

_________________
ИТ учет http://tunesoft.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Скрипт Окна конфигурации
СообщениеДобавлено: 31 авг 2011, 23:45 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:04
Сообщения: 2052
Задачу пока не надо. Это все равно у меня в планах, без этого снегопат - не снегопат.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Скрипт Окна конфигурации
СообщениеДобавлено: 03 дек 2011, 09:40 
Не в сети

Зарегистрирован: 24 авг 2011, 15:57
Сообщения: 388
В релизе 1.1.2.1 добавлена работа с окнами. Но как понял возможности перебрать окна конфигурации нет?

_________________
ИТ учет http://tunesoft.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Скрипт Окна конфигурации
СообщениеДобавлено: 03 дек 2011, 10:34 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:04
Сообщения: 2052
Пока нет. Я работаю над этим.
Просто я придерживаюсь принципа - "релизить больше, релизить чаще".
Маленькими шажками мы придем к цели!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Скрипт Окна конфигурации
СообщениеДобавлено: 03 дек 2011, 13:26 
Не в сети
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:36
Сообщения: 1085
orefkov писал(а):
Просто я придерживаюсь принципа - "релизить больше, релизить чаще".
Маленькими шажками мы придем к цели!

Правильное решение, очередной релиз Снегопата привносит дополнительное счастье в мою жизнь :)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Скрипт Окна конфигурации
СообщениеДобавлено: 29 мар 2012, 21:55 
Не в сети

Зарегистрирован: 24 авг 2011, 15:57
Сообщения: 388
Вот наконец то дождался, заявлено что можно работать со свойствами конфигурации.
Из описание не очень понял как, подскажите простой код для перебора открытых окон. Ну и хорошо бы если можно посмотреть владельца и тип окна.

_________________
ИТ учет http://tunesoft.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Скрипт Окна конфигурации
СообщениеДобавлено: 30 мар 2012, 05:43 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:04
Сообщения: 2052
Развернутый пример готовлю.
Простой перебор окон в MDI области:
Код:
var views = windows.mdiView.enumChilds()
for(var i = 0; i < views.count; i++)
{
    var frame = views.item(i)
    Message(frame.title)
}

Дальше смотри свойства и методы объекта IV8View.
Кроме того, необходимо учитывать, что некоторые окна в 1С - так сказать непосредственные отображения чего-либо (например, окна объектов метаданных), а некоторые - только контейнеры для вложенных окон (например окна модулей, форм и тп.) У них обычно класс окна - V8FrameViewSplitter. Для таких окон надо также перебирать вложенных потомков через enumChilds. Вобщем, надо смотреть свойство isContainer и заполненность свойств mdObj, object, document.
Кроме того, необходимо учитывать, что окна могут быть "слеплены" либо через "Разделить окно", либо через меню "Окна..." кнопкой "Соединить", либо просто одно окно при нажатом Shift втащили в другое окно. И такое слепление может быть само вложенным еще куда-либо...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Скрипт Окна конфигурации
СообщениеДобавлено: 30 мар 2012, 08:28 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:04
Сообщения: 2052
Вот несколько функций из моего тестового скрипта для просмотра отображений.

Код:
// Получить полное имя объекта метаданных
function getFullMDName(mdObj)
{
    if(!mdObj)
        return "no object"
    var names = []
    while(true)
    {
        names.unshift(mdObj.name)
        var className = mdObj.mdclass.name(1)
        if(!className.length || !mdObj.parent)
        {
            names.unshift(mdObj.container.identifier)
            break
        }
        names.unshift(className)
        mdObj = mdObj.parent
    }
    return names.join('.')
}

// Возвращает читаемое имя для состояния отображения
function state(s)
{
    switch(s)
    {
        case 1:
            return 'vsDock'
        case 2:
            return 'vsFloat'
        case 4:
            return 'vsMDI'
        case 8:
            return 'vsHardDock'
        case 16:
          return 'vsHiding'
      default:
            return s
   }
}
// Возвращает читаемое имя для положения отображения
function placement(s)
{
    switch(s)
    {
        case 1:
            return 'vpLeft'
        case 2:
            return 'vpTop'
        case 4:
            return 'vpRight'
        case 8:
            return 'vpBottom'
        case 16:
          return 'vpCenter'
        case 32:
          return 'vpTabbed'
      default:
            return s
   }
}

// Вывод инфы об отображении и его дочерних отображений
function printView(view, indent)
{
    Message(indent + "id = " + view.id, mExc1)
    Message(indent + " Title = " + view.title)
    Message(indent + " HWND = 0x" + view.hwnd.toString(16))
    Message(indent + " wndClass = " + view.wndClass)
    Message(indent + " container = " + view.isContainer)
    var pos = view.position()
    Message(indent + " pos.state = " + state(pos.state))
    Message(indent + " pos.placement = " + placement(pos.placement))
    var parent = view.parent
    if(parent)
        Message(indent + " parent id = " + parent.id)
   
    var childs = view.enumChilds()
    Message(indent + " childs = " + childs.count)
    for(var k = 0; k < childs.count; k++)
        printView(childs.item(k), indent + '\t')
}

// Распечатка MDI отображений
function macrosPrintMdiViews()
{
    var mdiWnds = windows.mdiView.enumChilds()
    Message("Mdi windows=" + mdiWnds.count)
    for(var k = 0, c = mdiWnds.count; k < c; k++)
        printView(mdiWnds.item(k), '')
}
// Распечатка всех отображений
function macrosPrintViewsFromRoot()
{
    printView(windows.mainView, "")
}
// Проверка активного и фокусного отображения
function macrosTestActiveView()
{
    // Активное и фокусное отображение могут отличаться. Например, если фокус в строке поиска в стандартном тулбаре
    Message("Active view")
    printView(windows.getActiveView(), '')
    Message("Focused view")
    printView(windows.getFocusedView(), '')
}
// Проверка различных свойств активного отображения
function macrosТestViewMD()
{
    var v = windows.getActiveView()
    printView(v, '')
    var text = getFullMDName(v.mdObj)
    var mdProp = v.mdProp
    if(mdProp)
    {
        var n = mdProp.name(1)
        text += "::" + n
        if(n == "Макет")
            text += " (" + toV8Value(v.mdObj.property("ТипМакета")).presentation() + ")"
    }
    Message(text)
    var obj = v.getObject()
    if(obj)
        Message("object - " + toV8Value(obj).typeName(1))
}


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

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


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

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


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

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