Вывод картинок в строках таблиц формы в управляемом приложении
Начинающие программисты на платформе 8.2 иногда сталкиваются с проблемой вывода картинок в различных таблицах формы. На платформе 8.1 зачастую это делалось программно в обработке события ПриПолученииДанных либо ПриВыводеСтроки. В 8.2 же ничего программировать не надо, а лишь достаточно правильно заполнить значения свойств интерфейсных объектов. Ключевым моментом является то, что в итоговой таблице у нас должна быть отдельная колонка, содержащая индекс выводимой картинки. Попробуем вывести картинку. Есть у нас, например, справочник пользователей, в котором есть реквизит «ЕстьВИнформационнойБазе» типа булево, и нам бы хотелось выводить картинку пользователя в цвете, если пользователь есть, и серую, если его нет в информационной базе .
Вставим в нашу форму динамический список, поставим флажок произвольного запроса и зададим запрос в следующем виде:
Поставим реквизиту «ИндексКартинки» флажок «Использовать всегда», т.к. на форму мы выводить его не будем. Теперь добавим наш динамический список на форму и зададим свойства «ПутьКДаннымКартинкиСтрок» и «КартинкаСтрок»
В результате у нас выведется список в следующем виде:
Т.е. в данном случае, картинка будет выводится в первой, по порядку, колонке списка. Но иногда возникает необходимость вывести картинку в определенной колонке или, в общем случае, различные картинки в нескольких колонках. Давайте выведем нашу картинку не в колонке «Наименование», а в колонке «Код» (заодно вернем стандартную картинку списка справочника). Для возврата стандартной картинки в вышеупомянутых свойствах «ПутьКДаннымКартинкиСтрок» и «КартинкаСтрок» возвращаем первоначальные значения.
Теперь создаем новую группу колонок в таблице вывода динамического списка и перемещаем туда колонки «Код» и «ИндексКартинки». Для группы колонок задаем группировку «В ячейке».
Для колонки «ИндексКартинки» задаем вид «Поле картинки» и в появившееся свойство «КартинкаЗначений» указываем нашу картинку. Ну и уберем заголовок, чтоб не отсвечивал
Вывод картинки в форме списка в управляемых формах 1С
Как добавить столбец в форму списка описано тут.
Иногда есть необходимость вывода картинки в столбце формы списка, например для наглядной сигнализации о чем либо.
В нашем случае о том, что по клиенту есть какие-то новые сообщения.
Текстовый столбец бы затерялся, а вот на картинку взгляд падает сразу.
И так, выбираем динамический список формы списка, если формы списка нет, то создаем ее.
Открываем настройки списка и генерируем столбец, который будет указывать на индекс изображения.
Примечание
Для колонки данных типа Булево значения инвертируются, т. е. Истина означает индекс 0, а Ложь – индекс 1 (это реализовано для удобства отображения картинок-флажков, когда у некоторых строк картинка по некоторому условию есть, а у других её нет).
После появится столбец “Индекс картинки”, ставим ему значение Использовать всегда.
Выводим колонку на форму и в настройках:
Вид: Поле картинки
ПоложениеЗаголовка: Нет
КартинкаЗначения, выбираем нужную картинку.
1С. Вывод картинок в строках таблицы
Часто для читабельности списков выводим картинки в строках таблицы соответствующие статусам. В управляемом приложении такое пожелание реализуется достаточно просто.
В качестве решаемой задачи определим динамический список, в котором необходимо выводить иконки. Иконки, а точнее набор иконок создадим сами, в виде цветных квадратов 32*32 пикселей.
Решение
Набор иконок
Для вывода очень удобно использовать набор иконок, по сути это картинка с определенной высотой и кратной количеству иконок шириной. Для наглядности создадим свой набор, в котором будет 6 иконок с разными цветами. В любом графическом редакторе создаем слой 32*192 и заливаем квадратики разными цветами и сохраняем. Я использовал GIMP, у меня получилось так(самая левая иконка белая)
Получившуюся картинку загружаем в конфигурацию.
Подготовка конфигурации
Создадим обработку, в которой определим форму с динамическим списком. Для динамического списка установим признак Произвольный запрос и напишем текст запроса в котором выберем срез последних регистра сведений «Состояние задач»:
В запросе определили колонку Без изменений, в которой рассчитывается количество дней без изменения статуса задачи.
В выражении присутствует параметр, значение параметра будем задавать в обработчике ПриСозданииНаСервере()
Таким образом система в качестве изображения в поле картинки будет брать иконку из набора по индексу, который определен реквизите БезИзменений динамического списка.
Заполним данными регистр сведений «Состояние задач»(считаем, что текущая дата равна дате публикации статьи 17.05.2017)
Данные регистра
Вывод получившейся обработки
Дополнительно сгруппируем динамический список по проекту для большей читабельности и посмотрим результат:
Картинка в ячейке таблицы значений Управляемой Формы
Во, название какое.
Помогите разобраться.
Задача закрасить выборочно разными цветами разные ячейки таблицы.
Пробовал через оформление, хоть и красит, где-то там у себя, но не выводит результат.
Обиделся на это, решил под другому.
Открыл «Выбор Картинки».
Добавил в «из конфигурации» картинки, обозвал их «а1», «а2», «а3».
Добавил кнопку на форму, по нажатию на которую должна закрасится картинкой ячейка.
А вот что дальше то писать? По интернету полазил, там такие примеры, что таких команд в 8,2 и нет.
В качестве значения можно установить только картинку вида Пустая или ИзБиблиотеки.
А описание «из библиотеки»
ВидКартинки (PictureType)
ИзБиблиотеки (FromLib)
Описание:
Картинка из библиотеки картинок.
Офигенное описание. Откуда чего брать??
за ранее благодарен.
У меня ступор возникает, когда я не вижу варианты выбора после точки. Не потому что я привык, а потому что это нигде толко не написано. В синтаксисе и справке, по условному оформленю и картинкам голыш полный. Поди догадайся называется.
Условное оформление недоступно на клиенте. Вот. Пришли к тому, от чего отталкивались. Не работает оно. Мне нужно на клиенте сделать закрашивание ячейки.
Попробую вызвать сервер.
Вызвал на сервере. В условном офомлении нет «цвета фона».
У кого нибудь получалось закрасить отдельно ячейку? Или вставить туда картинку?
Практически.
(7) Тебе нужно строку определить.
Условное оформление можно и не программно добавлять. Там всё сложнее, чем у тебя написано. Смотри УсловноеОформлениеКомпоновкиДанных.
(10) Я очень удивлён.
Нельзя ли как нибудь по проще закрасить ячейку?
Больше понимаю, если есть рабочий пример.
Более простой пример будет, если брать направление в закрашивании ячейки путём добавления в неё картинки
(0)
Как правильно, и из чего выбрать картинку, и куда вставлять.
Всё просто, но, к примеру «этаформа.элементы.Таб33.Получить(0).нед0.
то что идёт поле точки, как мне увидеть.
Допустим, оно имеет тип «ПолеКартинки».
Я иду в ситаксис помошник ввожу «ПолеКартинки». На что должен получить описание.
а там:
ПолеКартинки (PictureField)
Описание:
Поле представляется в виде картинки.
Всё.
Что, к чему назначать, к чему идти, где это посмотреть?
(12) Вроде как не получится картинку так просто вывести.
Должна быть коллекция и такое же дополнительное поле, которое будет обозначать индекс картинки в колонке.
>Задача закрасить выборочно разными цветами разные ячейки таблицы.
Огласи критерии раскраски
(13) В роде стал разбираться.
Чтобы закрасить картинкой ячейку, надо :
Всем выражаю благодарность, за то что заставили думать почти самостоятельно.
Программирование в 1С для всех
В этой статье я расскажу, как программно работать на управляемой форме с картинкой в 1С 8.3: загружать их на форму, хранить в базе и выводить картинку при открытии формы.
Для демонстрации работы с картинками решим простую задачу: в нашей условной базе имеется справочник Номенклатура, наш заказчик хочет, чтобы к каждой номенклатуре можно было привязать картинку этой номенклатуры. Реализуем эту задачу.
Первым делом у справочника Номенклатура создадим реквизит Картинка с типом ХранилищеЗначений.
В учебной задаче мы будем хранить картинки непосредственно в справочнике Номенклатура, в реальных же задачах для хранения картинок и других бинарных файлов необходимо создавать или подчиненный справочник, или регистр сведений.
Сделаем управляемую форму элемента справочника, на которой реализуем следующий функционал: на форме будет размещено поле с картинкой, если картинка не хранится в справочнике, то оно будет пустое, а иначе при открытии формы в 1С необходимо будет получить картинку из базы автоматически, т.е. на форме нужно организовать вывод картинки. Пользователь может загрузить в 1С файл картинки, для этого он должен кликнуть на поле картинки, после этого будет открыта форма выбора файла формата jpg, а после выбора нужного файла, картинка появится на форме. При сохранении элемента, картинка должна будет записаться в базу.
Создадим управляемую форму элемента справочника, у этой формы создадим реквизит СсылкаНаКартинку с типом Строка.
Поместим этот реквизит на форму в виде поля, а вид у данного поля установим «Поле картинки».
Сделаем так, чтобы мы могли загружать картинку по клику мышки на это поле, для этого установим в свойство поле Гиперссылка.
Создадим клиентский обработчик для события Нажатие этого поля.
В этом обработчике напишем код, который будет вызывать диалог открытия файла с расширением jpg.
Опишем процедуру ПослеЗагрузкиФайла, которую указали в описании оповещения, в этой процедуре, если пользователь выбрал файл, мы будем помещать его во временное хранилище при помощи метода НачатьПомещениеФайла.
Следующим шагом, необходимо в процедуре ПослеПомещенияФайла, которая указана в описании оповещения процедуры ПослеЗагрузкиФайла, присвоить реквизиту формы «СсылкаНаКартинку» адрес временного хранилища.
Если мы сейчас сохраним конфигурацию, то наша картинка будет прекрасно загружаться на форму и показываться на ней, но она не будет храниться в базе.
Для того, чтобы картинка хранилась в базе, нам необходимо сохранить картинку в реквизит объекта, делать мы это будем в событии формы ПередЗаписьюНаСервере. Создадим это событие.
В обработчике события проверим, что реквизит формы СсылкаНаКартинку является адресом временного хранилища, и если это так, то получим файл картинки из временного хранилища и запишем его в реквизит Картинка нашего объекта. В конце удалим картинку из временного хранилища, а поскольку у нас реквизиту формы присвоен адрес во временном хранилище, то нужно получить адрес с реквизита объекта, чтобы картинка никуда не делась после сохранения.
И последний штрих: нам нужно сделать так, чтобы при открытии формы, картинка появлялась на форме, если она есть в базе (в хранилище).
Для этого, создадим обработчик для события ПриСозданииНаСервере формы.
И в этом обработчике будем получать навигационную ссылку на картинку.
Всё! Задача выполнена. Теперь мы можем загружать картинку на форму с помощью диалога открытия файлов, сохранять картинку в базу, и выводить картинку на форму при открытии, если она имеется в базе.
Мой опыт преподавания показывает, что многие начинающие и не очень разработчики всё еще слабо программируют в управляемом приложении, теряются во многих вопросах.
Книга «Основы разработки в 1С: Такси» научила программировать под управляемым приложением 300+ начинающих программистов 1С.
И Вы обязательно освоите все тонкости разработки под управляемым приложением 1С 8.3.
Только для читателей моего блога,
промо-код на скидку в 150 рублей — blog
Для тех же, кто только начинает:
общие вопросы по разработке в 1С подробно и основательно даются в книге «Программировать в 1С за 11 шагов»
Стартуйте в изучении 1С программирования в месте с моей книги «Программировать в 1С за 11 шагов»
Только для читателей моего блога, промо-код на скидку в 150 рублей — blog
Эти книги плюс книга по разработке оперативного учёт имеются в едином комплекте: комплект книг по разработке в 1С.
Только для читателей моего блога,
промо-код на скидку в 300 рублей на весь комплект: blog
Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:
можно оплатить вручную:
Яндекс.Деньги — 410012882996301
Web Money — R955262494655
Вступайте в мои группы:
5 thoughts on “ Картинка в 1С 8.3 — программная работа ”
При закрытии модуля, постоянно выдаются ошибки:
Переменная не определена (ВыбранныйФайл)