Вывод картинок в строках таблиц формы в управляемом приложении

11.04.14

Разработка - Механизмы платформы 1С

Начинающие программисты на платформе 8.2 иногда сталкиваются с проблемой вывода картинок в различных таблицах управляемой формы. Данная статья подробно рассказывает о механизме вывода картинок.

Начинающие программисты на платформе 8.2 иногда сталкиваются с проблемой вывода картинок в различных таблицах формы. На платформе 8.1 зачастую это делалось программно в обработке события ПриПолученииДанных либо ПриВыводеСтроки. В 8.2 же ничего программировать не надо, а лишь достаточно правильно заполнить значения свойств интерфейсных объектов. Ключевым моментом является то, что в итоговой таблице у нас должна быть отдельная колонка, содержащая индекс выводимой картинки. Попробуем вывести картинку. Есть у нас, например, справочник пользователей, в котором есть реквизит «ЕстьВИнформационнойБазе» типа булево, и нам бы хотелось выводить картинку пользователя в цвете, если пользователь есть, и серую, если его нет в информационной базе .

Вставим в нашу форму динамический список, поставим флажок произвольного запроса и зададим запрос в следующем виде:

Поставим реквизиту «ИндексКартинки» флажок «Использовать всегда», т.к. на форму мы выводить его не будем. Теперь добавим наш динамический список на форму и зададим свойства «ПутьКДаннымКартинкиСтрок» и «КартинкаСтрок»

В результате у нас выведется список в следующем виде:

Т.е. в данном случае, картинка будет выводится в первой, по порядку, колонке списка. Но иногда возникает необходимость вывести картинку в определенной колонке или, в общем случае, различные картинки в нескольких колонках. Давайте выведем нашу картинку не в колонке «Наименование», а в колонке «Код» (заодно вернем стандартную картинку списка справочника). Для возврата стандартной картинки в вышеупомянутых свойствах «ПутьКДаннымКартинкиСтрок» и «КартинкаСтрок» возвращаем первоначальные значения.

Теперь создаем новую группу колонок в таблице вывода динамического списка и перемещаем туда колонки «Код» и «ИндексКартинки». Для группы колонок задаем группировку «В ячейке».

Для колонки «ИндексКартинки» задаем вид «Поле картинки» и в появившееся свойство «КартинкаЗначений» указываем нашу картинку. Ну и уберем заголовок, чтоб не отсвечивал :)

В результате список приобретет вид:

Удачных разработок!

Картинки управляемая форма

См. также

Поинтегрируем: сервисы интеграции – новый стандарт или просто коннектор?

Обмен между базами 1C Администрирование СУБД Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

В платформе 8.3.17 появился замечательный механизм «Сервисы интеграции». Многие считают, что это просто коннектор 1С:Шины. Так ли это?

11.03.2024    4495    dsdred    53    

71

Как готовить и есть массивы

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

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

24.01.2024    5286    YA_418728146    25    

63

Планы обмена VS История данных

Обмен между базами 1C Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Вы все еще регистрируете изменения только на Планах обмена и Регистрах сведений?

11.12.2023    6405    dsdred    36    

111

1С-ная магия

Механизмы платформы 1С Бесплатно (free)

Язык программирования 1С содержит много нюансов и особенностей, которые могут приводить к неожиданным для разработчика результатам. Сталкиваясь с ними, программист начинает лучше понимать логику платформы, а значит, быстрее выявлять ошибки и видеть потенциальные узкие места своего кода там, где позже можно было бы ещё долго медитировать с отладчиком в поисках источника проблемы. Мы рассмотрим разные примеры поведения кода 1С. Разберём результаты выполнения и ответим на вопросы «Почему?», «Как же так?» и «Зачем нам это знать?». 

06.10.2023    18469    SeiOkami    46    

118

Дефрагментация и реиндексация после перехода на платформу 8.3.22

Механизмы платформы 1С Платформа 1С v8.3 Бесплатно (free)

Начиная с версии платформы 8.3.22 1С снимает стандартные блокировки БД на уровне страниц. Делаем рабочий скрипт, как раньше.

14.09.2023    12086    human_new    27    

74

Валидация JSON через XDTO (включая массивы)

WEB-интеграция Универсальные функции Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

При работе с интеграциями рано или поздно придется столкнуться с получением JSON файлов. И, конечно же, жизнь заставит проверять файлы перед тем, как записывать данные в БД.

28.08.2023    8811    YA_418728146    6    

141

Внешние компоненты Native API на языке Rust - Просто!

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Внешние компоненты для 1С можно разработывать очень просто, пользуясь всеми преимуществами языка Rust - от безопасности и кроссплатформенности до удобного менеджера библиотек.

20.08.2023    6275    sebekerga    54    

94

Все скопируем и вставим! (Буфер обмена в 1С 8.3.24)

Механизмы платформы 1С Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Рассмотрим новую возможность 8.3.24 и как её можно эффективно использовать

27.06.2023    15980    SeiOkami    31    

103
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. nixel 1403 18.04.14 12:43 Сейчас в теме
Зачем переписывать "Разработку управляемого интерфейса"?
dmit66; kild; +2 1 Ответить
2. Yashazz 4709 08.05.14 15:40 Сейчас в теме
(1) А чтоб 10 плюсов заработать, не иначе. Тем более, что и описание-то хромое, случай произвольных табличных полей не упомянут, а там чуть иначе, никакого "ПутьКДаннымКартинкиСтроки", начинающих это может сбить с толку. И откуда нумерация иконок в картинке начинается, не сказано (а она с нуля). И другие вопросы не освещены. В общем, передрано ради стартманей, походу.
KRJ; Hexed; takedas005; Lo1jke; ivv1970; Abenefic; rpgshnik; MherArsh; +8 2 Ответить
3. mikl79 118 25.05.16 13:32 Сейчас в теме
Думаю это поможет начинающим, статья полезная, но все таки действительно - как задать нумерацию иконок в картинке?
Elvira_Saydasheva; +1 Ответить
4. semario 10 02.06.16 05:01 Сейчас в теме
Статья написана без фанатизма, все понятно. Возник такой вопрос, кто сталкивался с добавлением картинки в корень дерева списка, не могу понять? у строк выводится, в корне дерева картинки нет.
5. rpgshnik 3631 29.07.16 11:12 Сейчас в теме
Ничего не понятно
Риник; Hexed; avk_avk; Aspire1C; kild; ivv1970; dimasts; +7 Ответить
6. asi2004 27.09.17 11:29 Сейчас в теме
Еще было бы написано, что картинка - это коллекция картинок, т.е. лента 16 пикселей х 16*n (в ширину) сохраненная в png
cleaner_it; Elvira_Saydasheva; Риник; Hexed; tdml; +5 Ответить
7. dimasts 22 13.11.17 10:12 Сейчас в теме
(6)А как сделать разные картинки? Можно ли на ходу генерировать коллекцию при открытии формы списка? Весь интернет изрыл. Все примеры с предопределёнными в конфигураторе коллекциями.
8. Matveymc 148 13.11.17 13:58 Сейчас в теме
(7) Можно, вот пример http://v8.1c.ru/metod/faq2/answer.jsp?id=629
Либо можно загнать все картинки методом ПоместитьВоВременноеХранилище в память и выводить на форму адреса этих картинок
10. dimasts 22 13.11.17 17:46 Сейчас в теме
(8) Это не совсем то. Смысл в том, что картинка с индексом 1 одна и та же, а с индексом два зависит от реквизитов объекта открытой формы. Например в переписке наши письма отображаются с логотипом, а письма клиента с его аватаром. Надо как-то программно подсунуть коллекцию из двух картинок.
11. DarkUser 13.11.17 18:58 Сейчас в теме
(10) Можно создать справочник Картинки, с реквизитами ДвоичныеДанные и СтрокаАдреса. В в реквизит "ДвоичныеДанные" грузите картинку, реквизит СтрокаАдреса заполняете ссылкой на элемент справочника\двоичныеданные.

Теперь в запросе, в зависимости от условий, подбираете нужный элемент справочника Картинки, и заполняете текстовый реквизит ДинамическогоСписка данными из спр.Картинки.СтрокаАдреса.
На форме для этого текстового элемента выставляете вид поля Картинка.

Профит. Любые картинки в вашей таблице.
Elvira_Saydasheva; Mi4man; Flashill; DmitrySinichnikov; proonec; Gorr; dimasts; +7 Ответить
13. dimasts 22 13.11.17 20:34 Сейчас в теме
Пытаюсь обойтись без справочника. Подсовываю разные данные ни чего не получается.
Элементы.МойДинамическийСписок.КартинкаЗначений =... понимает только ...= БиблиотекаКартинок.МояКартинка и не понимает ссылок на временное хранилище, картинки созданные из файлов на сервере, двоичные данные или реквизиты типа картинка.
Говорит несоответствие типов. видимо проблема в том, что это свойство понимает только НЕ абсолютные картинки
как быть?
14. DarkUser 13.11.17 21:32 Сейчас в теме
(13) Реквизит динамического списка должен быть строкой. И в него необходимо поместить навигационную ссылку на элемент в базе 1С, хранящий саму картинку. А тип поля у него должен быть Картинка.
12. dimasts 22 13.11.17 19:41 Сейчас в теме
9. Matveymc 148 13.11.17 14:02 Сейчас в теме
(6) Формат не обязательно PNG, хоть JPEG, хоть BMP и любой другой картиночный, а в последних платформах так и вообще zip
16. Dmitrii D 78 13.03.18 14:22 Сейчас в теме
А мне понравилось, ничего кроме, как тут не нашел в интернете, но если бы не комментарий (6), то правда бы ничего не понял.

п.с. для документа нужна картинка СостоянияДокумента =)
15. Gorr 40 12.01.18 00:34 Сейчас в теме
А вместе с коментами получилась вполне себе полезная заметка!
17. Zedd4D 10 27.04.18 13:55 Сейчас в теме
Хорошая в итоге тема вышла.

С вашего позволения вставлю и свои пять копеек.

Можно навигационную ссылку заполнять при выполнении события ПриПолученииДанныхНаСервере.

Делаем в динамическом списке в произвольном запросе пустое строковое поле (обязательно выражаем его как строку длиной хотя бы 100 знаков)

А потом в коде

&НаСервереБезКонтекста
Процедура СписокСКартинкамиПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки)
	Для каждого СтрокаДС из Строки Цикл
		СтрокаДС.Значение.Данные.АдресКартинки = ПолучитьНавигационнуюСсылку(СтрокаДС.Значение.Данные.Ссылка, "ХранилищеФайла");	
	КонецЦикла;	
КонецПроцедуры


Так как работа идет с динамическим списком, то обрабатывать обычно придется 45 записей за раз, что иногда может быть полезным, когда картинки нужно брать ну совсем уж из произвольных мест и моментов времени.

Ну и еще момент, когда работает с полем типа "Поле картинки" До версии 8.3.9 включительно можно было ширину установить в свойстве поля. После этого уже не получается. Поле не растягивается.
janit; adhocprog; +2 Ответить
18. пользователь 12.05.18 12:44
Сообщение было скрыто модератором.
...
19. olleksa 18.07.18 14:53 Сейчас в теме
А как создать коллекцию картинок с индексами?
idjumatov; +1 Ответить
20. Pryanishnikov_Vladimir 21.04.20 08:03 Сейчас в теме
Попробовал создать несколько полей с картинкой в группе колонок - отображается только первая. Ошибка платформы или что это? А так же в шапке группы колонок поле с картинкой всегда слева.
00alenka00; +1 Ответить
21. 00alenka00 03.07.20 19:14 Сейчас в теме
(20)вот и я хочу несколько картинок - и картинку строк вначале и картинку у одного из полей. Не удалось решить?
22. alex25ru 11.02.21 05:34 Сейчас в теме
Вариант с группировкой в ячейке не взлетает, никак не хотит показываться картинка. Без группировки в отдельной колонке работает.
Что делаю не так, подскажите, а? Вопрос относительно третьей таблицы на скриншоте. Первая и вторая сделаны немного иначе.
Прикрепленные файлы:
ДинамическийСписокСКартинкой.epf
Оставьте свое сообщение