• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

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

  • Автор темы Дайнеко
  • Дата начала
Д

Дайнеко

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

unknown181538

Элемент.Колонки.Картинка.ОтображатьСтандартнуюКартинку = Ложь;
Это не относится к конкретной строке.
Что если отключить отображение еще при открытии, или даже найти такую галку в свойствах элемента диалога?
 
Д

Дайнеко

Это не относится к конкретной строке.
Да и не спорю. И галочку я знаю не иская. Но получается так: ставлю галочку - картинки только стандартные, на код не реагируют, убираю - картинки только мои. Убираю коменты - работает как я хочу, но циклится вызов процедуры.

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

unknown181538

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

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

Дайнеко

Гм... Правильно понял.
Так не виснет, говоришь. А может ты просто не замечаешь? Ведь программа работает, только ЦП загружен. В отладчике посмотрел - многократно выводит строки. Документов 3шт. по циклу гоняет.

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

Дайнеко

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


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

Gluk8888

а если переопределить запрос динамического списка и проверку на условие делать в нем? или я не понял сабжа?
может сдесь поможет?
 
Д

Дайнеко

а если переопределить запрос динамического списка и проверку на условие делать в нем? или я не понял сабжа?
Спасибо. Ссылку почитал. Я не упомянул, что форма журнала Обычная, поэтому в моем распоряжении чуть другой механизм.
Еще раз повторюсь: надо чередовать, на одной строке стандартную, на другой мою
 
Д

Дайнеко

Прихожу к выводу, что лучше сделать 2 колонки. В первой системная картинка, во второй моя. И не буду переживать.

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

unknown181538

Вот и я столкнулся с картинками. Причем, мне в списке документов в табличном поле надо вывести стандартные картинки проведен/помечен/не проведен. Только вот никак не найду их в списке картинок. Где ж их взять-то?

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

Darlock

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

Дайнеко

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

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

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

unknown181538

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

Дайнеко

Извини, если неправильно понял суть твоей задачи. У меня стояла задача заменить системные картинки на форме списка справочника. Она наверно аналогична списку документов. И вариант вместо вывода системных выводить свои, но похожие на системные я тоже рассматривал. А вот твоей задачи я не понял:
мне в списке документов в табличном поле надо вывести стандартные картинки

Так в списке документов или же в табличном поле одного документа?
 
U

unknown181538

Создавал форму списка справочника, в которой выводятся документы по выбранной номенклатуре в разных табличных полях...
 
T

tanat

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


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

Обучение наступательной кибербезопасности в игровой форме. Начать игру!