Изначально искал, как сделать индикатор процесса в управляемых формах. Почти все ссылки с интернета идут на этот сайт, в результате понял что индикатор делается через функцию Сообщить().
Но тут задумался, а чего бы не сделать чтоб в таблице на форме в одной колонке можно было вывести индикатор для каждой строки?
оказалось не так и сложно, больше времени ушло на прорисовку графического индикатора для каждого процента (итого 100 картинок)
Дальше встал вопрос как их вместить в обработку и как вызывать?
в результате получилась вот такая вот обработка, которая содержит в себе кучу примеров работы в управляемых формах, а именно:
1. вывод картики в ячейки табличной части через навигационную ссылку
2. обращение к макету и вытаскивание из него картинок
3. создание навигационных ссылок для внешних графических файлов, и подсовование их "на лету" в форму
Перед октытием читаем картинки из макета и формируем на их основе навигационные ссылки, которые помещаем в список значений. (в дальнейшем булем обращатся к нему из расчета индекс в списке значений = текущий процент.
&НаСервере
Функция ВернутьНовигационнуюСсылку()
Макет=РеквизитФормыВЗначение("Объект").ПолучитьМакет("Индикатор");
Возврат Макет;
КонецФункции
&НаКлиенте
Процедура ПриОткрытии(Отказ)
// подготовим навигационные ссылки из макета
МакетИндикатор = ВернутьНовигационнуюСсылку();
НулевойСсылка="";
Для каждого ЭлРисунок из МакетИндикатор.Рисунки Цикл
УИД=новый УникальныйИдентификатор;
СсылкаНаКартинку=ПоместитьВоВременноеХранилище(ЭлРисунок.Картинка,УИД);
ЭтотОбъект.ПроцентыНавигационныеСсылки.Добавить(СсылкаНаКартинку);
Если НулевойСсылка="" Тогда
НулевойСсылка=СсылкаНаКартинку;
КонецЕсли;
КонецЦикла;
// с процентами
нов =Объект.ТабличнаяЧасть1.Добавить();;
инд=нов.ПолучитьИдентификатор();
нов.Реквизит1="1000";
нов.Реквизит3 ="С процентами";
нов.Реквизит4=НулевойСсылка;
// без процентов
нов =Объект.ТабличнаяЧасть1.Добавить();;
инд=нов.ПолучитьИдентификатор();
нов.Реквизит1="2000";
нов.Реквизит3 ="Без процентов";
нов.Реквизит4=НулевойСсылка;
КонецПроцедуры
при обработке результата определяем процент и вызываем ссылку из списка значений
&НаКлиенте
Процедура ВыполнитьОбработку(Команда)
ТонкийКлиент = Истина;
#Если ТолстыйКлиентУправляемоеПриложение Тогда
ТонкийКлиент = Ложь;
#КонецЕсли
Состояние("Выполнение запроса...");
КоличествоЭлементов = ВыполнитьЗапрос(ТонкийКлиент);
Если КоличествоЭлементов = 0 Тогда
Возврат;
КонецЕсли;
ОчиститьСообщения();
СПроцентами = Объект.ТабличнаяЧасть1.НайтиПоИдентификатору(0);
БезПроцентов = Объект.ТабличнаяЧасть1.НайтиПоИдентификатору(1);
Процент=0;
Индикатор = ПолучитьИндикаторПроцесса(КоличествоЭлементов);
Для сч = 0 По КоличествоЭлементов Цикл
//ОбработатьРезультатЗапроса(сч, ТонкийКлиент);
ОбработатьИндикатор(Индикатор, сч + 1);
Символов=Цел(Сч / КоличествоЭлементов * 100);
Если Процент<>Символов Тогда
Процент=Символов;
//Нов.Реквизит2 =Нов.Реквизит2+"|";
СПроцентами.Реквизит4 = ЭтотОбъект.ПроцентыНавигационныеСсылки.Получить(Процент);
СПроцентами.Реквизит2 =Строка(Процент)+"%";//Нов.Реквизит2+"|";
БезПроцентов.Реквизит4 = ЭтотОбъект.ПроцентыНавигационныеСсылки.Получить(Процент);
Элементы.Таблица1.Обновить();
КонецЕсли;
КонецЦикла;
КонецПроцедуры
надеюсь кому то пригодится, по мне так очень красиво получается если использовать в обработках обмена :)
на втором рисунке показано как это выглятит если на боевую обработку выгрузки применить, а скриншот самой обработки на первом рисунке.