По сабжу есть рекомендации по "правильной" смены картинки кнопки при нажатии на эту же кнопку (рисую свою панель с активными кнопками, бегая по страницам панели)?

на форме 9 кнопок активна всегда только одна по активности кнопки отображается соответствующая ей страница.

На данный момент то что я сделал очень плохо отрабатывает.
---
КнопкаФормы (FormButton)
Картинка (Picture)
Использование:

Чтение и запись.
Описание:

Тип: Картинка.
Содержит картинку, отображаемую на кнопке.

Доступность:

Тонкий клиент, веб-клиент, сервер, толстый клиент, мобильное приложение(клиент), мобильное приложение(сервер).
Изменение свойства на клиенте требует обращения к серверу.
---
Если кнопки на командной панели, то можно менять свойство "Пометка" у кнопки:
Если данное свойства установлено, кнопка будет отображаться нажатой
Пометка, Check
---
кнопки на командной панели, то можно менять свойство "Пометка" у кнопки:
Если данное свойства установлено, кнопка будет отображаться нажатой
Пометка, Check

да я в курсе, у меня обычные кнопки. меня интересует то что в вопросе описано.
---
скрина нет с раскладкой кнопок в дереве формы, тут телепаты?

ок, если кнопки расположены в командной панели формы, то цвет текста , картинки и т.д. на кнопках не изменить.

Выход - поместить кнопки в группу без заголовка, тогда они(кнопки) станут чуть-чуть больше, но изменение свойств кнопок будет доступным
---
спесиал фор ю скрин в прикреплении

(5)
картинка это свойство элемента "КНОПКА"

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

```1c
    &НаКлиенте
    Процедура МенюНажатиеПродажи(Команда)
    СброситьАктивностьКнопок();

    Элементы.КнопкаМенюПродажи.Картинка = БиблиотекаКартинок.Продажи48Активная;
    Элементы.ОсновнаяПанель.ТекущаяСтраница = Элементы.стрПродажи;
    КонецПроцедуры

    &НаКлиенте
    Процедура СброситьАктивностьКнопок()

    Элементы.КнопкаМенюПродажи.Картинка = БиблиотекаКартинок.Продажи48;
    Элементы.КнопкаМенюДокументы.Картинка = БиблиотекаКартинок.Документы48;
    // и т.д.
    КонецПроцедуры
```
---
Не понятно в чем у вас проблема и что должно плохо отрабатывать. У меня Кнопок больше, причем картинки меняются в цикле каждые 0,3 секунды (опрос состояния оборудования). И все нормально работает. В чем у вас проблема? Правда я под конец поменял на поле картинки, так как рамку можно сдлеать двойную в три пикселя.
---
А включить в командную панель не проще?
Картинка это именно картинка кнопки или оформление (цвет фона и т. д.)?
---
Объявить клиентскую переменную

```1c
    &НаКлиенте
    Перем ствКартинкиКнопок;

    &НаКлиенте
    Процедура ПриОткрытии()
    ствКартинкиКнопок = ИнициализироватьКартинкиКнопок();
    ....

    &НаКлиенте
    Процедура ИнициализироватьКартинкиКнопок()
    ствКартинкиКнопок = Новый Соответствие;
    ствКартинкиКнопок.Вставить("Продажи48", БиблиотекаКартинок.Продажи48);
    ....

    далее

    &НаКлиенте
    Процедура СброситьАктивностьКнопок()

    Элементы.КнопкаМенюПродажи.Картинка = ствКартинкиКнопок.Получить("Продажи48");
    ...
```

по крайней мере такой код избавит от постоянного обращения к глобальному контексту картинок, которых может быть вагон и тележка
---
Бесполезно скорости это не придало никакой. По прежнему проседает
---
КнопкаФормы (FormButton)
Картинка (Picture)
Использование:

Чтение и запись.
Описание:

Тип: Картинка.
Содержит картинку, отображаемую на кнопке.

Доступность:

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

на вашей форме, вероятно, нет "тяжелых" элементов и следовательно нет тормозов
---
верно. Гонять форму на сервер постоянно не реально поскольку динамических списков на форме валом.
---
Сам алгоритм значит не верен. Зачем гонять форму на сервер?
---
Элементы.КнопкаМенюПродажи тоже можно в переменную клиента записать, чтобы не вызывать постоянно Элементы

ну что еще, вроде все
---
я бы решал поставленную задачу так.

обросил бы идею со сменой картинок как крамоллу вызывающую обновление формы.

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

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

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

таким образом форма всегда "знает", сколько у нее элементов, какие на ней картинки и не вызывает сервер.
---
это первое что мне пришло на ум но рисовать столько не нужных кнопок 9((, возможно есть ещё какие-то варрианты обхода перегонки формы от клиента серверу и обработно
---
Да у меня работает со сменой картинок. Я ума никак не приложу в чем проблема. Причем смена картинок в цикле, который вызывается через оповещение каждые 0,3 секунды. Автор в чем проблема то?
---
а картинок в цикле, который вызывается через оповещение каждые 0,3 секунды. Автор в чем проблема то?

я ведь ответил в чём проблема. Почитайте выше.
---
Я как бы тоже описал решение. Измени кнопку, на поле формы с видом поле картинки. И все. Делов то куча.
---
у меня помимо смены картинки меняется и страница и по всей видимости обновляется и диманические списки что лежат на форме, так вот если эту картинку не менять то всё без задержек не важно это поле карнитинки кнопка или же декорация картинки.

Я склоняюсь всё же к тому что в тонком клиенте лучше использовать кучу форм не размещая весь необходимый функционал на одной.
---
Я понимаю что человеку важно иметь СВОЕ мнение. Но в данном случае ваше мнение ошибочно. Все прекрасно работает. Измените элемент с КнопкаФормы, на ПолеФормы с видом картинка поля. Создайте реквизит формы, присвойте ему картинку.
---
Если >= 8.3.7 изменение видимости не будет дергать сервер. Пары кнопок рядом сделать и включать/выключать.
---
Это у меня в цикле.

```1c
    ЭлементГруппаКолонка = ЭтаФорма.Элементы.Добавить("ГруппаКолонка"+ВыборкаНомерКолонки.НомерКолонки, Тип("ГруппаФормы"), ЭлементГруппаКолонки);
    ЭлементГруппаКолонка.РастягиватьПоГоризонтали=Истина;
    ЭлементГруппаКолонка.Вид = ВидГруппыФормы.ОбычнаяГруппа;
    ЭлементГруппаКолонка.ОтображатьЗаголовок=Ложь;
    ЭлементГруппаКолонка.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная;

    //////////////////////////////////////////
    //////////////////////////////////////////
    ДобавляемыеРеквизитыФормы=Новый Массив;
    РеквизитФормы=Новый РеквизитФормы("КолонкаКартинкаРеквизит"+ВыборкаНомерКолонки.НомерКолонки, Новый ОписаниеТипов("Картинка"),," ");
    ДобавляемыеРеквизитыФормы.Добавить(РеквизитФормы);
    ИзменитьРеквизиты(ДобавляемыеРеквизитыФормы);

    Элемент = ЭтаФорма.Элементы.Добавить("Колонка"+ВыборкаНомерКолонки.НомерКолонки, Тип("ПолеФормы"), ЭлементГруппаКолонка);
    Элемент.Вид = ВидПоляФормы.ПолеКартинки;
    Элемент.Высота=9;
    Элемент.Ширина=15;
    Элемент.Рамка=Новый Рамка(ТипРамкиЭлементаУправления.Двойная,2);
    Элемент.Гиперссылка=Истина;
    Элемент.ПоложениеЗаголовка=ПоложениеЗаголовкаЭлементаФормы.Нет;
    ЭтаФорма["КолонкаКартинкаРеквизит"+ВыборкаНомерКолонки.НомерКолонки]=БиблиотекаКартинок.гсм_КолонкаНетСвязи;

    Элемент.ПутьКДанным="КолонкаКартинкаРеквизит"+ВыборкаНомерКолонки.НомерКолонки;
    Элемент.РастягиватьПоГоризонтали=Истина;
    Элемент.АвтоМаксимальнаяШирина=Истина;
    Элемент.АвтоМаксимальнаяВысота=Ложь;
    Элемент.УстановитьДействие("Нажатие","ВыборКолонки");
```
---
давайте так, скажите пожалуйста что размещено на вашей форме, я так полагаю вы гоняете её с клиента на сервер ради прорисовки новых элементов. сейчас либо я туплю и чего-то не знаю либо вы очень грубо ошибаетесь.
у меня форма исполинского масштаба я на ней практически весь функционал раскладываю и мне гонять её очень не выгодно, всё что я делаю это без контекстные обращения а всю тяжелину ПриСозданииНаСервере. как то так
---
Убиться можно. Тяжело помочь уперто правому. Ему обьсняешь как избавится от лишних обращений на сервер, он тебе про ерему.
---
В общем включил отображение показателей производительности и методом тыка отслеживаю то что влияет на вызов сервера и исключаю это из кода. Как оказалось это самоый лучшим решением. Неоправданные изменения свойств (не всех!, к примеру цвет фона свободно меняется без вызовов) элементов формы приводят как ранее было написано к обращению на сервер, а обращения могут быть не только в явном контексте процедуры а так же самой платформой. Если кому есть что добавить буду рад почитать, до вечера закрою тему.
Спасибо.

(23) Будет время поиграюсь и с полем картинки, но пока на это нет желания.

Может у кого есть дельная статья по изменениям красивым разрисовкам формы с примерами (юзабилити) в рамках 1С.
---
Создаешь все элементы всего один раз в процедуре ПриСозданииФормы. Если нужны какие то данные создаешь на форме табличные части и также при создании заполняешь их. Все зачем еще обращаться на сервер для отрисовки?

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

```1c
    Элементы.КнопкаМенюПродажи.Картинка = БиблиотекаКартинок.Продажи48;
```
 всё это на клиенте гоняется вот только причину тормозов я не понимаю, и да уже должно было понять что мне не нужны иные элементы кроме как КНОПКИ!!!, мне в первую очередь нужно разобраться в чём тупняк моего кода, я не так давно начал портировать старый код обычного приложения в управляемые ....