1с динамический список стандартная картинка не в первой колонке
Часто для читабельности списков выводим картинки в строках таблицы соответствующие статусам. В управляемом приложении такое пожелание реализуется достаточно просто.
В качестве решаемой задачи определим динамический список, в котором необходимо выводить иконки. Иконки, а точнее набор иконок создадим сами, в виде цветных квадратов 32*32 пикселей.
Решение
Набор иконок
Для вывода очень удобно использовать набор иконок, по сути это картинка с определенной высотой и кратной количеству иконок шириной. Для наглядности создадим свой набор, в котором будет 6 иконок с разными цветами. В любом графическом редакторе создаем слой 32*192 и заливаем квадратики разными цветами и сохраняем. Я использовал GIMP, у меня получилось так(самая левая иконка белая)
Получившуюся картинку загружаем в конфигурацию.
Подготовка конфигурации
В нашей конфигурации есть периодический регистр сведений «Состояние задач» с измерениями Проект, Задача и ресурсом Выполнена. Будем выводить цветной квадратик в зависимости от даты последней записи по задаче.
Создадим обработку, в которой определим форму с динамическим списком. Для динамического списка установим признак Произвольный запрос и напишем текст запроса в котором выберем срез последних регистра сведений «Состояние задач»:
В запросе определили колонку Без изменений, в которой рассчитывается количество дней без изменения статуса задачи.
В выражении присутствует параметр, значение параметра будем задавать в обработчике ПриСозданииНаСервере()
На форму добавим таблицу из получившегося динамического списка. Для колонки Без изменений установим следующие параметры:
- Вид: Поле картинки;
- Путь к данным: СписокЗадач.БезИзменений;
- Картинка значений: ЦветаБезИзменений;
- Положение заголовка: Нет
Таким образом система в качестве изображения в поле картинки будет брать иконку из набора по индексу, который определен реквизите БезИзменений динамического списка.
Заполним данными регистр сведений «Состояние задач»(считаем, что текущая дата равна дате публикации статьи 17.05.2017)
Данные регистра
Вывод получившейся обработки
Дополнительно сгруппируем динамический список по проекту для большей читабельности и посмотрим результат:
Начинающие программисты на платформе 8.2 иногда сталкиваются с проблемой вывода картинок в различных таблицах формы. На платформе 8.1 зачастую это делалось программно в обработке события ПриПолученииДанных либо ПриВыводеСтроки. В 8.2 же ничего программировать не надо, а лишь достаточно правильно заполнить значения свойств интерфейсных объектов. Ключевым моментом является то, что в итоговой таблице у нас должна быть отдельная колонка, содержащая индекс выводимой картинки. Попробуем вывести картинку. Есть у нас, например, справочник пользователей, в котором есть реквизит «ЕстьВИнформационнойБазе» типа булево, и нам бы хотелось выводить картинку пользователя в цвете, если пользователь есть, и серую, если его нет в информационной базе .
Вставим в нашу форму динамический список, поставим флажок произвольного запроса и зададим запрос в следующем виде:
Поставим реквизиту «ИндексКартинки» флажок «Использовать всегда», т.к. на форму мы выводить его не будем. Теперь добавим наш динамический список на форму и зададим свойства «ПутьКДаннымКартинкиСтрок» и «КартинкаСтрок»
В результате у нас выведется список в следующем виде:
Т.е. в данном случае, картинка будет выводится в первой, по порядку, колонке списка. Но иногда возникает необходимость вывести картинку в определенной колонке или, в общем случае, различные картинки в нескольких колонках. Давайте выведем нашу картинку не в колонке «Наименование», а в колонке «Код» (заодно вернем стандартную картинку списка справочника). Для возврата стандартной картинки в вышеупомянутых свойствах «ПутьКДаннымКартинкиСтрок» и «КартинкаСтрок» возвращаем первоначальные значения.
Теперь создаем новую группу колонок в таблице вывода динамического списка и перемещаем туда колонки «Код» и «ИндексКартинки». Для группы колонок задаем группировку «В ячейке».
Для колонки «ИндексКартинки» задаем вид «Поле картинки» и в появившееся свойство «КартинкаЗначений» указываем нашу картинку. Ну и уберем заголовок, чтоб не отсвечивал :)
Отобразить в поле динамического списка картинку вместо стандартной галочки можно двумя способами.
Первый: для поля назначить картинку размером 32х16 пикселов, а в коде устанавливать параметр «ЗначениеКартинки» в истину или ложь, то в колонке будет отображена левая часть для значения «ложь» и правая – для значения «истина».
Код 1C v 8.х
Второй вариант:
Код 1C v 8.х
В отличие от предыдущего варианта, здесь мы отображаем или не отображаем произвольную картинку (в данном случае, размером 32х32). При этом нужно указывать свойство Картинка, иначе она не отображается (даже, если задать в редакторе формы).
Для картинок с индексом:
Выбираем шапку ячейки табличного поля или дерева. В свойствах оформления выбираем “Картинки строк”.
Выбираем файл с индексами картинок либо же конкретную картинку из коллекции.
В свойствах табличного поля создаем обработчик события “ПриВыводеСтроки”.
В него пишем(“Имя файла” меняем на название вашей ячейки):
Код 1C v 8.х
Похожие FAQ
Еще в этой же категории
Как обновить динамический список или реквизит на форме клиента? 22
Если вы, открыв форму справочника или документа, выполнили некоторое действие, код который должен изменить состояние данных в динамических списках или значение реквизита. Данные изменены, но в открытой форме осталось все как было, можно конечно закр Динамический список ~ Как на управляемой форме разместить список регистра сведений с отбором? 18
Решение рассмотрено для элемента справочника (Контрагент и регистр КонтактнаяИнформация) 1. Создание реквизита: Добавляем новый реквизит формы (. не путать с реквизитом справочника . ) с типом " ДинамическийСписок" В поле " Основная табли Как установить параметр динамического списка? 16
Когда используете для вывода данных динамический список и произвольный запрос, то бывают ситуации когда надо указать параметр используемый в этом запросе. Ниже пример вывода данных регистра сведений в карточке клиента Для вывода используется исп Форма ~ Программное создание таблицы значений с условным оформлением 12
Как создать на форме таблицу и сделать для нее подсветку содержимого колонки в строке по условию? Итак для начала нам надо добавить реквизиты в форму. Для этого у нас есть метод: ИзменитьРеквизиты(). Перед тем как его использовать мы сформируем ма Поле выбора ~ Заполнение списка значений в элементе поле выбора на форме 10
//Заполнение списка перебором данных // Элемент формы МетаданныеВыбор имеет тип - Произвольный, Использование - Режим выбора из Списка, кнопка списка Для Каждого Метаданное из Метаданные.РегламентныеЗадания Цикл ЭлементыФормы.МетаданныеВыбор.Спи Посмотреть все в категории Работа с Формой (Диалог) и её элементами
Для решения данной задачи существует два способа. Рассмотрим их на примере.
Создание колонки
Колонку с картинкой можно связать с колонкой данных, содержащих значение типов Число или Булево . В нашем случае требуется одну и ту же картинку выводить вместо стандартной, поэтому добавленная колонка должна содержать значение Истина для всех строк. Для динамического списка её нужно добавить в запросе.
Примечание
Для колонки данных типа Булево значения инвертируются, т. е. Истина означает индекс 0, а Ложь – индекс 1 (это реализовано для удобства отображения картинок-флажков, когда у некоторых строк картинка по некоторому условию есть, а у других её нет).
В списке реквизитов для реквизита ИндексКартинки установим флажок ИспользоватьВсегда .
В списке элементов формы добавим колонку с видом Поле картинки. Значение будет указывать индекс конкретной картинки для конкретной строки в наборе картинок.
В свойстве Данные поля выберем Список.ИндексКартинки .
Набор картинок задается в свойстве поля Картинка значений .
Созданную колонку можно поместить в произвольное место таблицы как самостоятельную или объединить с одной из колонок в группу колонок с группировкой В ячейке . Объединим поле Картинка с колонкой Код :
В результате список примет вид, как показано на рисунке:
Переопределение стандартной картинки
Данный способ более удобен, поскольку не требуется создавать дополнительное поле и группировать его с другим полем, но он менее гибок, поскольку такая картинка всегда отображается в самой левой колонке, содержащей текст. В свойствах таблицы укажем нужную картинку в свойстве Картинка строк и установим свойство Данные картинки строк . Колонку для этого свойства нужно создать так же, как и в предыдущем способе.
Картинки в полях динамических списков
Отобразить в поле динамического списка картинку вместо стандартной галочки можно двумя способами.
Первый: для поля назначить картинку размером 32х16 пикселов, а в коде устанавливать параметр «ЗначениеКартинки» в истину или ложь, то в колонке будет отображена левая часть для значения «ложь» и правая – для значения «истина».
Код 1C v 8.х
Второй вариант:
Код 1C v 8.х
В отличие от предыдущего варианта, здесь мы отображаем или не отображаем произвольную картинку (в данном случае, размером 32х32). При этом нужно указывать свойство Картинка, иначе она не отображается (даже, если задать в редакторе формы).
Для картинок с индексом:
Выбираем шапку ячейки табличного поля или дерева. В свойствах оформления выбираем “Картинки строк”.
Выбираем файл с индексами картинок либо же конкретную картинку из коллекции.
В свойствах табличного поля создаем обработчик события “ПриВыводеСтроки”.
В него пишем(“Имя файла” меняем на название вашей ячейки):
Код 1C v 8.х
Похожие FAQ
Еще в этой же категории
Как на управляемой форме разместить список регистра сведений с отбором? 15
Решение рассмотрено для элемента справочника (Контрагент и регистр КонтактнаяИнформация) 1. Создание реквизита: Добавляем новый реквизит формы (. не путать с реквизитом справочника . ) с типом " ДинамическийСписок" В поле " Основная табли Поле выбора
Заполнение списка значений в элементе поле выбора на форме 10
//Заполнение списка перебором данных // Элемент формы МетаданныеВыбор имеет тип – Произвольный, Использование – Режим выбора из Списка, кнопка списка Для Каждого Метаданное из Метаданные.РегламентныеЗадания Цикл ЭлементыФормы.МетаданныеВыбор.Спи Как установить параметр динамического списка? 9
Когда используете для вывода данных динамический список и произвольный запрос, то бывают ситуации когда надо указать параметр используемый в этом запросе. Ниже пример вывода данных регистра сведений в карточке клиента Для вывода используется исп Как обновить динамический список или реквизит на форме клиента? 7
Если вы, открыв форму справочника или документа, выполнили некоторое действие, код который должен изменить состояние данных в динамических списках или значение реквизита. Данные изменены, но в открытой форме осталось все как было, можно конечно закр Форма
Программное создание таблицы значений с условным оформлением 6
Как создать на форме таблицу и сделать для нее подсветку содержимого колонки в строке по условию? Итак для начала нам надо добавить реквизиты в форму. Для этого у нас есть метод: ИзменитьРеквизиты(). Перед тем как его использовать мы сформируем ма Посмотреть все в категории Работа с Формой (Диалог) и её элементами
Начинающие программисты на платформе 8.2 иногда сталкиваются с проблемой вывода картинок в различных таблицах формы. На платформе 8.1 зачастую это делалось программно в обработке события ПриПолученииДанных либо ПриВыводеСтроки. В 8.2 же ничего программировать не надо, а лишь достаточно правильно заполнить значения свойств интерфейсных объектов. Ключевым моментом является то, что в итоговой таблице у нас должна быть отдельная колонка, содержащая индекс выводимой картинки. Попробуем вывести картинку. Есть у нас, например, справочник пользователей, в котором есть реквизит «ЕстьВИнформационнойБазе» типа булево, и нам бы хотелось выводить картинку пользователя в цвете, если пользователь есть, и серую, если его нет в информационной базе .
Вставим в нашу форму динамический список, поставим флажок произвольного запроса и зададим запрос в следующем виде:
Поставим реквизиту «ИндексКартинки» флажок «Использовать всегда», т.к. на форму мы выводить его не будем. Теперь добавим наш динамический список на форму и зададим свойства «ПутьКДаннымКартинкиСтрок» и «КартинкаСтрок»
В результате у нас выведется список в следующем виде:
Т.е. в данном случае, картинка будет выводится в первой, по порядку, колонке списка. Но иногда возникает необходимость вывести картинку в определенной колонке или, в общем случае, различные картинки в нескольких колонках. Давайте выведем нашу картинку не в колонке «Наименование», а в колонке «Код» (заодно вернем стандартную картинку списка справочника). Для возврата стандартной картинки в вышеупомянутых свойствах «ПутьКДаннымКартинкиСтрок» и «КартинкаСтрок» возвращаем первоначальные значения.
Теперь создаем новую группу колонок в таблице вывода динамического списка и перемещаем туда колонки «Код» и «ИндексКартинки». Для группы колонок задаем группировку «В ячейке».
Для колонки «ИндексКартинки» задаем вид «Поле картинки» и в появившееся свойство «КартинкаЗначений» указываем нашу картинку. Ну и уберем заголовок, чтоб не отсвечивал :)
Именно закоментированные строки создают проблему.
Есть в голове вариант - рисовать изображение картинок похожих на системные: документ проведенный, удаленный. Но не нравится мне такое. Второй вариант, типовой, сделать 2 колонки: системные и мои. Но тогда жалко идеи.
unknown181538
Это не относится к конкретной строке.
Что если отключить отображение еще при открытии, или даже найти такую галку в свойствах элемента диалога?
Дайнеко
Да и не спорю. И галочку я знаю не иская. Но получается так: ставлю галочку - картинки только стандартные, на код не реагируют, убираю - картинки только мои. Убираю коменты - работает как я хочу, но циклится вызов процедуры.
Полагаю, изменение свойства "ОтображатьСтандартнуюКартинку" вызывает повторный вызов процедуры. И так далее.
Хочу удостоверится - никто такой задачи не выполнял?
unknown181538
Ниче не виснет, хотя моя картинка не выводится (нету ее просто, не стал разбираться).
Т.е. у меня в некоторых строках есть стандартная, в некоторых пусто.
А, впрочем, я видно все не так понял. Не важно.
Дайнеко
Гм. Правильно понял.
Так не виснет, говоришь. А может ты просто не замечаешь? Ведь программа работает, только ЦП загружен. В отладчике посмотрел - многократно выводит строки. Документов 3шт. по циклу гоняет.
На журнале есть закладки и отборы по виду документа. Проверю зависимость.
unknown181538
Дайнеко
Ну как же. В свойстве колонки "Картинка" внесена "КартинкаСтрок". К примеру картинка из 5 значков.
Строкой выше я пишу: Индекс = ДанныеСтроки.Ссылка.НомерЧегоТо; (от 1 до 5)
Если в документе нет информации (Индекс = 0), значит нет у документа своей картинки, тогда и стандартную. А еще анализирую, если помечен на удаление - тоже стандартную.
Добавлено: Перепроверил еще раз. Циклит. Зараза. Видно так ничего не получится. Изменение свойства вызывает процедуру. А в ней опять команда изменить свойство. И опять пошло.
Gluk8888
а если переопределить запрос динамического списка и проверку на условие делать в нем? или я не понял сабжа?
может сдесь поможет?
Дайнеко
а если переопределить запрос динамического списка и проверку на условие делать в нем? или я не понял сабжа?
Спасибо. Ссылку почитал. Я не упомянул, что форма журнала Обычная, поэтому в моем распоряжении чуть другой механизм.
Еще раз повторюсь: надо чередовать, на одной строке стандартную, на другой мою
Дайнеко
Прихожу к выводу, что лучше сделать 2 колонки. В первой системная картинка, во второй моя. И не буду переживать.
Но когда-нибудь я все-же поумнею.
unknown181538
Вот и я столкнулся с картинками. Причем, мне в списке документов в табличном поле надо вывести стандартные картинки проведен/помечен/не проведен. Только вот никак не найду их в списке картинок. Где ж их взять-то?
Попутно вопрос:
Надо вывести по номенклатуре списки документов нескольких видов с отбором по периоду для каждого вида по номенклатуре, на которой курсор. Реально ли такое без жутких тормозов? Т.к. придется, похоже, делать запросы при каждом перемещении курсора.
Дайнеко
Вот и я столкнулся с картинками. Причем, мне в списке документов в табличном поле надо вывести стандартные картинки проведен/помечен/не проведен.
unknown181538
Поковырялся и все же нашел решение:
В обработке "Универсальный журнал документов" есть такие картинки. Оттуда сохранил в файл, и загрузил в свое табличное поле.
Darlock
Сори, может уже и не в тему, но хочу заметить: "ПриВыводеСтроки()" вызывается постоянно. В вашем случае, лучше использовать обработчик "ПриПолученииДанных()" вызывается 1 раз для строк, которые еще не отображались
Дайнеко
Поковырялся и все же нашел решение:
В обработке "Универсальный журнал документов" есть такие картинки. Оттуда сохранил в файл, и загрузил в свое табличное поле.
Эк, рассмешил, брат!
Ну разве легкие методы, это для нас? Коню ясно, что нарисовать свои значки, похожие на системные это легко и красиво, но, как бы это выразится, "не системно", недостойно нашей королевской чести. А ну как платформа поменяет свои значки? Или еще, помню для 7-ки была утилита заменяющая в dll-ке ресурсы значков.
Так вот, по происшествии некоторого времени, я, как обещал, поумнел. И научился рисовать комбинировать свои картинки в одной колонке с системными. Например, на справочнике "Сотрудники" есть первая колонка "Картинка", где и отображаются стандартные значки (удален, папка). В св-вах "Отображать стандартную картинку" убираю. И ставлю "Отображать иерархию". Только при таком варианте отображает и системные и мои! А почему? А х..то его знает.
Ну а дальше стандартно:
Читайте также: