Тема: Значок объекта в таблице выборки на панели состава

Возможно ли отображение значка объекта (не типа) в таблице выборки?
(см. вложенную картинку)
Значок объекта в таблице выборки на панели состава

(изменено: Edhunter, 12 мая 2015г. 13:47:09)

Re: Значок объекта в таблице выборки на панели состава

Насколько я знаю, у каждой строки выборки может быть только 1 значек. Так что врядли.
Как вариант - нарисовать смешанные иконки (иконка документа + восклицательный знак) и назначать такую иконку конкретному объекту при смене значения поля "приоритет"

Re: Значок объекта в таблице выборки на панели состава

Edhunter пишет:

Как вариант - нарисовать смешанные иконки (иконка документа + восклицательный знак) и назначать такую иконку конкретному объекту при смене значения поля "приоритет"

да об этом уже думал, но как о последнем запасном варианте

Re: Значок объекта в таблице выборки на панели состава

Меняю значок объекта...

Sub Object_Modified(Obj)
  ThisScript.SysAdminModeOn
  msgbox Obj.Description
  if Obj.Attributes("ATTR_EXPIRED_BY_NODE").Object is nothing then
    msgbox err.Description & vbNewLine & Obj.Icon.SystemIndex, "1"
    Obj.Icon = ThisApplication.Icons.SystemIcon(147) 'было Obj.ObjectDef.Icon (как бы "сброс")
    msgbox err.Description & vbNewLine & Obj.Icon.SystemIndex,, "2"
  else
    Obj.Icon = ThisApplication.Icons.SystemIcon(146)  '.Item("IMG_DOC_EXCLAM")
  end if
  ThisScript.SysAdminModeOff
End Sub

но это не работает, точнее установка значка 146 работает, а "сброс" не работает.
и так тоже:

Obj.Icon = ThisApplication.Icons.SystemIcon(Obj.ObjectDef.Icon.SystemIndex)

Почему? (msgbox показывает 146 до и 147 после, т.е. всё правильно)

P.S.
В тестовой команде вот так работает:

set Obj = ThisObject
Obj.Icon = Obj.ObjectDef.Icon

Re: Значок объекта в таблице выборки на панели состава

если в msgbox все нормально, то может просто интерфейс не обновляется ? если руками обновить после этого объект - что то измениться ?

(изменено: A77x7, 14 мая 2015г. 12:56:32)

Re: Значок объекта в таблице выборки на панели состава

После обновления всё по старому, т.е. неправильный значок.
Но если взять и изменить в объекте что-то, то значок меняется.
У меня код "сброса" значка вызывается из другого кода (ExecuteScript ... "Object_Modified" ...).
Да и код установки тоже также.
Т.е. получается при естественной обработке (при изменении объекта через UI) события Object_Modified всё работает правильно, а при вызове программно - нет...

ещё такие наблюдения:
через ThisObject - работает, но у меня из команды вызываются другие скрипты и в них нет ThisObject (вычисляется косвенно).
если прямо в скрипте команды прописать изменение значка, то он меняется только в случае снятой галочки "Запускать без проверки прав" (ИМХО должно быть наоборот хотя бы)

Re: Значок объекта в таблице выборки на панели состава

ИМХО - дело в месте вызова. Команда при завершении генерирует update
если добавить искуственный в событие тоже наверное заработает. Сейчас нет возможности проверить.

(изменено: A77x7, 15 мая 2015г. 07:55:28)

Re: Значок объекта в таблице выборки на панели состава

У меня сброс как раз в команде происходит (правда через вызов другого скрипта) (установка по таймеру)
Код команды:

...
    set obj = ThisApplication.GetObjectByGUID(ThisObject.GUID)
    msgbox obj.Icon.SystemIndex,,"before"
    ss = route_jump_forward(route, node)    'здесь происходит сброс значка (obj.Icon = obj.ObjectDef.Icon, obj ищется через node.ReferencedBy)
    'obj.Update
    msgbox obj.Icon.SystemIndex,,"after"
end sub

(код сброшенного значка должен быть 113, не сброшенного - 35)
запустил два ТДМСа. в первом вызываю команду, во втором смотрю значок в разные моменты.
первый msgbox показывает 35, во втором ТДМСе значок 35 (всё правильно).
воторой msgbox показывал одно время 113, но сейчас показывает всё время 35 (т.е. сброс как бы не произошёл),
смотрю во втором ТДМСе - значок 113 (правильно, т.е. сброс всё-таки произошёл).
далее... end sub, смотрю во втором ТДМСе - значок опять 35 (даже если второй msgbox показывал 113).
пока у меня вариантов больше нет... (жаль нет смайла, который долбится об стену)

Re: Значок объекта в таблице выборки на панели состава

Дальнейшие исследования показали...
При задании значка прямо в скрипте команды через ThisObject всё работает.
Если делать как-то так:

    ThisScript.SysAdminModeOn
    set obj = ThisApplication.GetObjectByGUID(ThisObject.GUID)
    obj.Permissions = SysAdminPermissions
    obj.Icon = obj.ObjectDef.Icon
    obj.Attributes("ATTR_SUBJECT").Value = obj.Attributes("ATTR_SUBJECT").Value & "5"

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

Т.е. итого получается при изменении значка и атрибута, изменения сохраняются только для атрибута, а для значка они носят временный характер и после завершения команды происходит откат значка к прежнему значению.
Разработчики, может это всё-таки ошибка в ТДМС?

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