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

Тема в разделе "1C и всё что с ней связано", создана пользователем Дайнеко, 15 дек 2010.

  1. Дайнеко

    Дайнеко Well-Known Member
    1C Team

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

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    Это не относится к конкретной строке.
    Что если отключить отображение еще при открытии, или даже найти такую галку в свойствах элемента диалога?
     
  3. Дайнеко

    Дайнеко Well-Known Member
    1C Team

    Регистрация:
    19 ноя 2009
    Сообщения:
    951
    Симпатии:
    0
    Да и не спорю. И галочку я знаю не иская. Но получается так: ставлю галочку - картинки только стандартные, на код не реагируют, убираю - картинки только мои. Убираю коменты - работает как я хочу, но циклится вызов процедуры.

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

    unknown181538 НеГуру
    1C Team

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

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

    Дайнеко Well-Known Member
    1C Team

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

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

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    А что это за "Индекс" такой?
     
  7. Дайнеко

    Дайнеко Well-Known Member
    1C Team

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


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

    Gluk8888 Гость

    а если переопределить запрос динамического списка и проверку на условие делать в нем? или я не понял сабжа?
    может сдесь поможет? http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=562786
     
  9. Дайнеко

    Дайнеко Well-Known Member
    1C Team

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

    Дайнеко Well-Known Member
    1C Team

    Регистрация:
    19 ноя 2009
    Сообщения:
    951
    Симпатии:
    0
    Прихожу к выводу, что лучше сделать 2 колонки. В первой системная картинка, во второй моя. И не буду переживать.

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

    vbs Well-Known Member

    Регистрация:
    18 фев 2007
    Сообщения:
    1.708
    Симпатии:
    3
    Или разработчики будут поставлять более гибкие возможности :rolleyes:
     
  12. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    Вот и я столкнулся с картинками. Причем, мне в списке документов в табличном поле надо вывести стандартные картинки проведен/помечен/не проведен. Только вот никак не найду их в списке картинок. Где ж их взять-то?

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

    Дайнеко Well-Known Member
    1C Team

    Регистрация:
    19 ноя 2009
    Сообщения:
    951
    Симпатии:
    0
    Ну и как? Сделал. Я тоже их не нашел.
     
  14. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    Поковырялся и все же нашел решение:
    В обработке "Универсальный журнал документов" есть такие картинки. Оттуда сохранил в файл, и загрузил в свое табличное поле.
     
  15. Darlock

    Darlock Well-Known Member
    1C Team

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

    Дайнеко Well-Known Member
    1C Team

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

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

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

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    Что смешного? Ну нельзя к системным обратиться. Точно нельзя, раз уж и 1С рисует.
    А самому рисовать... рисую я плохо ;)
     
  18. Дайнеко

    Дайнеко Well-Known Member
    1C Team

    Регистрация:
    19 ноя 2009
    Сообщения:
    951
    Симпатии:
    0
    Извини, если неправильно понял суть твоей задачи. У меня стояла задача заменить системные картинки на форме списка справочника. Она наверно аналогична списку документов. И вариант вместо вывода системных выводить свои, но похожие на системные я тоже рассматривал. А вот твоей задачи я не понял:
    Так в списке документов или же в табличном поле одного документа?
     
  19. unknown181538

    unknown181538 НеГуру
    1C Team

    Регистрация:
    28 дек 2008
    Сообщения:
    1.418
    Симпатии:
    0
    Создавал форму списка справочника, в которой выводятся документы по выбранной номенклатуре в разных табличных полях...
     
  20. tanat

    tanat Well-Known Member

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


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

Поделиться этой страницей