Сделал отображение картинки в списке (8-ка)

Дайнеко

Well-Known Member
19.11.2009
951
0
53
Минск
#1
Идея такова: смотрим на журнал документов. На некоторых из них хочу вместо стандартной картинки (которые с птичкой проведения и крестиком удаления) нарисовать свою. В этой же колонке.
Сделал. Но заметил что 8-ка загружает CPU на все 100%. Потом докопался, что постоянно вызывается проц. ПриВыводеСтроки(). Когда закоментировал пару строк - эффект пропал. Но строки-то нужны. Кто подскажет, как по-другому рисовать и свои картинки и системные.
Код:
	Если Индекс >=0 Тогда	// моя
//		Элемент.Колонки.Картинка.ОтображатьСтандартнуюКартинку = Ложь;
ОформлениеСтроки.Ячейки.Картинка.ОтображатьКартинку = Истина;
ОформлениеСтроки.Ячейки.Картинка.ИндексКартинки = Индекс;
Иначе					// стандартная
//		Элемент.Колонки.Картинка.ОтображатьСтандартнуюКартинку = Истина;
КонецЕсли;
Именно закоментированные строки создают проблему.
Есть в голове вариант - рисовать изображение картинок похожих на системные: документ проведенный, удаленный. Но не нравится мне такое. Второй вариант, типовой, сделать 2 колонки: системные и мои. Но тогда жалко идеи.
 

unknown181538

НеГуру
28.12.2008
1 417
0
30
Москва
#2
Элемент.Колонки.Картинка.ОтображатьСтандартнуюКартинку = Ложь;
Это не относится к конкретной строке.
Что если отключить отображение еще при открытии, или даже найти такую галку в свойствах элемента диалога?
 

Дайнеко

Well-Known Member
19.11.2009
951
0
53
Минск
#3
Это не относится к конкретной строке.
Да и не спорю. И галочку я знаю не иская. Но получается так: ставлю галочку - картинки только стандартные, на код не реагируют, убираю - картинки только мои. Убираю коменты - работает как я хочу, но циклится вызов процедуры.

Полагаю, изменение свойства "ОтображатьСтандартнуюКартинку" вызывает повторный вызов процедуры. И так далее.
Хочу удостоверится - никто такой задачи не выполнял?
 

unknown181538

НеГуру
28.12.2008
1 417
0
30
Москва
#4
Попробовал повторить....
Код:
	Если Лев(Строка(ОформлениеСтроки.ДанныеСтроки.Дата),1)="1" Тогда
Элемент.Колонки.Картинка.ОтображатьСтандартнуюКартинку = Ложь;
ОформлениеСтроки.Ячейки.Картинка.ОтображатьКартинку = Истина;
ОформлениеСтроки.Ячейки.Картинка.ИндексКартинки = 5;
Иначе					// стандартная
Элемент.Колонки.Картинка.ОтображатьСтандартнуюКартинку = Истина;
КонецЕсли;
Ниче не виснет, хотя моя картинка не выводится (нету ее просто, не стал разбираться).
Т.е. у меня в некоторых строках есть стандартная, в некоторых пусто.

А, впрочем, я видно все не так понял. Не важно.
 

Дайнеко

Well-Known Member
19.11.2009
951
0
53
Минск
#5
Гм... Правильно понял.
Так не виснет, говоришь. А может ты просто не замечаешь? Ведь программа работает, только ЦП загружен. В отладчике посмотрел - многократно выводит строки. Документов 3шт. по циклу гоняет.

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

Дайнеко

Well-Known Member
19.11.2009
951
0
53
Минск
#7
Ну как же. В свойстве колонки "Картинка" внесена "КартинкаСтрок". К примеру картинка из 5 значков.
Строкой выше я пишу: Индекс = ДанныеСтроки.Ссылка.НомерЧегоТо; (от 1 до 5)
Если в документе нет информации (Индекс = 0), значит нет у документа своей картинки, тогда и стандартную. А еще анализирую, если помечен на удаление - тоже стандартную.


Добавлено: Перепроверил еще раз. Циклит. Зараза. Видно так ничего не получится. Изменение свойства вызывает процедуру. А в ней опять команда изменить свойство. И опять пошло.
 

Дайнеко

Well-Known Member
19.11.2009
951
0
53
Минск
#9
а если переопределить запрос динамического списка и проверку на условие делать в нем? или я не понял сабжа?
Спасибо. Ссылку почитал. Я не упомянул, что форма журнала Обычная, поэтому в моем распоряжении чуть другой механизм.
Еще раз повторюсь: надо чередовать, на одной строке стандартную, на другой мою
 

Дайнеко

Well-Known Member
19.11.2009
951
0
53
Минск
#10
Прихожу к выводу, что лучше сделать 2 колонки. В первой системная картинка, во второй моя. И не буду переживать.

Но когда-нибудь я все-же поумнею.
 

unknown181538

НеГуру
28.12.2008
1 417
0
30
Москва
#12
Вот и я столкнулся с картинками. Причем, мне в списке документов в табличном поле надо вывести стандартные картинки проведен/помечен/не проведен. Только вот никак не найду их в списке картинок. Где ж их взять-то?

Попутно вопрос:
Надо вывести по номенклатуре списки документов нескольких видов с отбором по периоду для каждого вида по номенклатуре, на которой курсор. Реально ли такое без жутких тормозов? Т.к. придется, похоже, делать запросы при каждом перемещении курсора...
 

Дайнеко

Well-Known Member
19.11.2009
951
0
53
Минск
#13
Вот и я столкнулся с картинками. Причем, мне в списке документов в табличном поле надо вывести стандартные картинки проведен/помечен/не проведен.
Ну и как? Сделал. Я тоже их не нашел.
 

unknown181538

НеГуру
28.12.2008
1 417
0
30
Москва
#14
Ну и как? Сделал. Я тоже их не нашел
Поковырялся и все же нашел решение:
В обработке "Универсальный журнал документов" есть такие картинки. Оттуда сохранил в файл, и загрузил в свое табличное поле.
 

Darlock

Well-Known Member
04.01.2008
560
1
Москва
#15
Сори, может уже и не в тему, но хочу заметить: "ПриВыводеСтроки()" вызывается постоянно. В вашем случае, лучше использовать обработчик "ПриПолученииДанных()" вызывается 1 раз для строк, которые еще не отображались
 

Дайнеко

Well-Known Member
19.11.2009
951
0
53
Минск
#16
Поковырялся и все же нашел решение:
В обработке "Универсальный журнал документов" есть такие картинки. Оттуда сохранил в файл, и загрузил в свое табличное поле.
Эк, рассмешил, брат! ;)
Ну разве легкие методы, это для нас? Коню ясно, что нарисовать свои значки, похожие на системные это легко и красиво, но, как бы это выразится, "не системно", недостойно нашей королевской чести. А ну как платформа поменяет свои значки? Или еще, помню для 7-ки была утилита заменяющая в dll-ке ресурсы значков.

Так вот, по происшествии некоторого времени, я, как обещал, поумнел. И научился рисовать комбинировать свои картинки в одной колонке с системными. Например, на справочнике "Сотрудники" есть первая колонка "Картинка", где и отображаются стандартные значки (удален, папка). В св-вах "Отображать стандартную картинку" убираю. И ставлю "Отображать иерархию". Только при таком варианте отображает и системные и мои! ;) А почему? А х..то его знает.
Ну а дальше стандартно:
Код:
Процедура СправочникСписокПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки)
//	Группа
Если ДанныеСтроки.Ссылка.ЭтоГруппа Тогда
ОформлениеСтроки.Ячейки.Наименование.Шрифт = Новый Шрифт(, , Истина);	// Жирный

//	Строка
ИначеЕсли НЕ ДанныеСтроки.Ссылка.ПометкаУдаления Тогда
РольЛица = ДанныеСтроки.Ссылка.Роль;
Если ЗначениеЗаполнено(РольЛица) Тогда
ОформлениеСтроки.Ячейки.Картинка.ОтображатьКартинку = Истина;
ОформлениеСтроки.Ячейки.Картинка = РольЛица.Значок.Получить();
КонецЕсли;
КонецЕсли;
 

unknown181538

НеГуру
28.12.2008
1 417
0
30
Москва
#17
Эк, рассмешил, брат!
Ну разве легкие методы, это для нас? Коню ясно, что нарисовать свои значки, похожие на системные это легко и красиво, но, как бы это выразится, "не системно", недостойно нашей королевской чести. А ну как платформа поменяет свои значки? Или еще, помню для 7-ки была утилита заменяющая в dll-ке ресурсы значков
Что смешного? Ну нельзя к системным обратиться. Точно нельзя, раз уж и 1С рисует.
А самому рисовать... рисую я плохо ;)
 

Дайнеко

Well-Known Member
19.11.2009
951
0
53
Минск
#18
Извини, если неправильно понял суть твоей задачи. У меня стояла задача заменить системные картинки на форме списка справочника. Она наверно аналогична списку документов. И вариант вместо вывода системных выводить свои, но похожие на системные я тоже рассматривал. А вот твоей задачи я не понял:
мне в списке документов в табличном поле надо вывести стандартные картинки
Так в списке документов или же в табличном поле одного документа?
 

unknown181538

НеГуру
28.12.2008
1 417
0
30
Москва
#19
Создавал форму списка справочника, в которой выводятся документы по выбранной номенклатуре в разных табличных полях...
 

tanat

Well-Known Member
02.03.2007
265
0
#20
В продолжение о картинках):
На днях получил заказ: в журнале документов (счет на оплату покупателю) в виде специальных значков отображать, стадии отгрузки по данному счету ( не отгружен, отгружен частично, полностью отгружен). Естественно сделал, однако есть огромные сомнения, не приведет ли все это действо к "тормозам" при работе с журналом счетов?
Делал через "ПриВыводеСтроки", по каждому счету формировал запрос, по результатам запроса подставлял ту или инную картинку.
Жду критики.


П.С: Возможно, имеет смысл пользоваться "ПриПолученииДанных" и запрос строить не к каждому счету, а к всему множеству счетов?