К статье
Практический материал

Разработка и Конфигурация · 12 мин

Как создать коллекцию картинок в 1С

Как создать коллекцию картинок в 1С через конфигуратор, добавить изображения, подключить их к кнопкам и таблицам формы. Примеры кода и типичные ошибки.

Коллекция картинок в 1С — это объект конфигурации, который объединяет несколько изображений в один набор с единым именем. Такие коллекции используют для оформления кнопок командных панелей, отображения состояний в табличных частях, пиктограмм в деревьях значений и списках документов. Вместо десятков отдельных картинок вы храните один объект, а нужное изображение выбираете по индексу.

Типовые конфигурации поставляются с готовыми библиотеками картинок, но при доработке интерфейса часто требуется собственная коллекция: например, набор статусов заказа, пиктограммы категорий товаров или индикаторы для отчёта. Создать её можно в конфигураторе за несколько минут, а подключение к элементам формы выполняется либо настройкой свойств, либо программно через встроенный язык.

В материале разобран полный цикл: создание коллекции в ветви «Общие картинки», добавление и упорядочивание изображений, привязка к кнопкам и таблицам формы, программное обращение через БиблиотекаКартинок, а также ограничения по форматам и типичные ошибки, из-за которых картинки не отображаются.

Где в конфигураторе создаётся коллекция картинок

Все общие изображения конфигурации хранятся в ветви дерева конфигурации «Общие» → «Общие картинки». Чтобы создать новый объект, выделите этот узел, нажмите кнопку добавления или выберите «Добавить» в контекстном меню. Откроется палитра свойств новой картинки.

Ключевое свойство — вид картинки. Если оставить вид «Картинка», объект будет хранить одно изображение. Для коллекции переключите вид на «Коллекция картинок» — после этого вместо одиночной загрузки станет доступен редактор набора изображений. Имя объекта задавайте осмысленное и без пробелов, например СтатусыЗаказов или ПиктограммыКатегорий: именно по нему коллекция будет доступна в коде.

Заполните также синоним — он отображается в диалогах выбора картинки при настройке форм. Синоним не влияет на программное обращение, но упрощает работу при ручной настройке интерфейса.

Как добавить изображения в коллекцию

После установки вида «Коллекция картинок» откройте редактор: в палитре свойств нажмите ссылку «Загрузить из файла» для одиночной загрузки или используйте команду редактирования коллекции, которая открывает окно со списком элементов. В редакторе доступны кнопки добавления, удаления, перемещения элементов вверх и вниз.

Порядок элементов в коллекции критичен: программный доступ идёт по индексу, начиная с нуля. Если вы добавите картинки «Новый», «В работе», «Завершён», то индексы будут 0, 1 и 2 соответственно. Изменение порядка позже сломает логику там, где индексы захардкожены в коде, поэтому фиксируйте соответствие индексов и смысловых значений в комментарии или в перечислении.

Поддерживаются стандартные растровые форматы — PNG, BMP, GIF, JPEG, а также иконки ICO. Для интерфейсных пиктограмм практичнее PNG с прозрачным фоном: он корректно выглядит на разных цветовых схемах. Размер подбирайте под назначение: для кнопок командных панелей обычно используют небольшие изображения порядка 16×16 пикселей, для таблиц состояний — тоже компактные варианты, чтобы не раздувать высоту строк.

Порядок создания коллекции
  1. 1
    Откройте конфигуратор и ветвь «Общие» → «Общие картинки»
  2. 2
    Добавьте новый объект и задайте имя, например СтатусыДокументов
  3. 3
    В палитре свойств установите вид «Коллекция картинок»
  4. 4
    Откройте редактор коллекции и загрузите изображения в нужном порядке
  5. 5
    Проверьте индексы элементов и зафиксируйте их в комментарии к коду
  6. 6
    Обновите конфигурацию базы данных (F7) и проверьте отображение в режиме предприятия

Как подключить коллекцию к элементам формы

Кнопки и команды

Для кнопки командной панели или команды формы картинка задаётся в свойстве «Картинка». В диалоге выбора перейдите на закладку общих картинок, найдите свою коллекцию и укажите конкретный элемент — среда покажет все изображения набора с их индексами. Для команды объекта метаданных (например, команды справочника) картинка задаётся аналогично в палитре свойств команды.

Табличные части и состояния

Для отображения пиктограмм в таблице формы используется связка свойств: у колонки таблицы устанавливается «КартинкаЗначений» (ваша коллекция), а данные колонки должны содержать число — индекс нужного элемента. Так реализуются классические колонки состояний: проведён, помечен на удаление, не проведён. В обычных формах аналогичную роль играли свойства «КартинкиСтрок» у табличного поля.

Деревья и списки

В дереве значений на форме коллекция подключается через свойство, отвечающее за картинки строк, после чего для каждой строки программно устанавливается индекс картинки. Это типовой приём для иерархических списков с разными типами узлов: группы показывают одну пиктограмму, элементы — другую.

Программное обращение к коллекции

Во встроенном языке все общие картинки доступны через свойство глобального контекста БиблиотекаКартинок. Обращение к коллекции как к целому объекту выглядит так: БиблиотекаКартинок.СтатусыДокументов. Если коллекция назначена свойству формы, индекс конкретного элемента задаётся отдельно — либо в данных строки таблицы, либо явным указанием.

Типовой фрагмент для таблицы значений на форме выглядит следующим образом: колонке назначается картинка значений, а при заполнении строк каждой строке присваивается числовой индекс в зависимости от состояния объекта. Ниже пример логики заполнения:

Для Каждого Строка Из ТаблицаДокументов Цикл

Если Строка.Проведен Тогда

Строка.ИндексКартинки = 0;

ИначеЕсли Строка.ПометкаУдаления Тогда

Строка.ИндексКартинки = 1;

Иначе

Строка.ИндексКартинки = 2;

КонецЕсли;

КонецЦикла;

Если нужно получить отдельную картинку из коллекции как самостоятельный объект (например, для вывода в табличный документ), используйте метод получения картинки из библиотеки с указанием индекса либо загрузите отдельную общую картинку. Учтите, что обращение к несуществующему имени в БиблиотекаКартинок вызовет ошибку времени выполнения, поэтому имя проверяйте заранее.

Индексы картинок удобно синхронизировать со значениями перечисления: создайте перечисление «СтатусыДокумента» и используйте порядковый номер значения как индекс в коллекции. Тогда при добавлении нового статуса достаточно дополнить оба объекта, а логика останется прозрачной.
ПЗ
Практическое замечание

Альтернативы коллекции: когда что выбрать

Коллекция — не единственный способ работы с изображениями в 1С. Если нужна одна иконка для кнопки, проще создать одиночную общую картинку. Если изображения динамические (фото товаров, сканы документов), их хранят не в конфигурации, а в базе данных — в реквизитах типа «ХранилищеЗначения» или в присоединенных файлах.

Варианты хранения картинок

Коллекция картинок

Набор интерфейсных пиктограмм с доступом по индексу. Подходит для статусов, состояний, пиктограмм строк. Изменение требует обновления конфигурации.

Одиночная общая картинка

Одно статичное изображение для кнопки или элемента формы. Проще в поддержке, но при множестве иконок засоряет ветвь метаданных.

Картинка из библиотеки платформы

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

Хранилище значений / присоединенные файлы

Пользовательские изображения, загружаемые в режиме предприятия. Единственный вариант для фото товаров и сканов; не подходит для интерфейсных иконок.

Отдельный случай — внешние файлы картинок на диске, загружаемые через Новый Картинка(ПутьКФайлу). Такой подход применяют в обработках и отчётах, но он создаёт зависимость от файловой системы сервера или клиента и плохо переносится между окружениями. Для интерфейса управляемых форм предпочтительнее общие картинки конфигурации.

Ограничения и типичные ошибки

Коллекция картинок — часть конфигурации, поэтому любое изменение набора требует обновления конфигурации базы данных. В клиент-серверном режиме при динамическом обновлении изменённые картинки могут не подхватиться у уже подключённых пользователей до перезапуска сеанса — учитывайте это при выкатке доработок.

Вторая частая проблема — рассинхронизация индексов. Если в коллекцию добавили элемент в середину списка, все индексы после него сдвинутся, и таблицы состояний начнут показывать неверные пиктограммы без каких-либо ошибок в коде. Безопасное правило: новые элементы добавляйте только в конец коллекции.

Третья группа ошибок связана с отображением: слишком большие исходники искажают высоту строк таблиц, изображения без прозрачности выглядят цветными квадратами на тёмных элементах, а картинка, назначенная колонке с нечисловыми данными, просто не отображается. Проверяйте тип данных колонки — для связи с коллекцией там должно быть число.

Типичные ошибки
01
Вставка элемента в середину коллекции — сдвигаются индексы, и существующий код показывает не те картинки
02
Обращение к БиблиотекаКартинок по опечатанному имени — ошибка времени выполнения в режиме предприятия
03
Нечисловые данные в колонке с КартинкаЗначений — пиктограммы молча не отображаются
04
Хранение пользовательских фото в общих картинках — раздувание конфигурации и невозможность редактирования без конфигуратора
05
Забытое обновление конфигурации БД — в режиме предприятия видна старая версия коллекции

Как проверить результат

После создания коллекции обновите конфигурацию базы данных (клавиша F7 в конфигураторе) и запустите режим предприятия. Откройте форму, где используется коллекция, и проверьте отображение в разных сценариях: пустая таблица, заполненные строки с разными индексами, командные панели.

Контрольные точки

Контрольные точки

Отображение в таблице формы
Норма

Каждая строка показывает пиктограмму, соответствующую её состоянию

Тревожный признак

Пустые ячейки или одинаковые картинки у разных состояний — проверьте тип колонки и индексы

Кнопка командной панели
Норма

Иконка видна и соответствует выбранному элементу коллекции

Тревожный признак

Кнопка без картинки — проверьте свойство «Отображение» и выбор элемента коллекции

Программное обращение
Норма

Код выполняется без ошибок, картинка назначается

Тревожный признак

Ошибка «Поле объекта не обнаружено» — опечатка в имени общей картинки

После динамического обновления
Норма

Новые картинки видны после перезапуска сеанса

Тревожный признак

Старая версия отображается у активных пользователей — требуется перезапуск сеансов

Дополнительно прогоните проверку конфигурации (меню «Конфигурация» → «Проверка конфигурации»): она выявит битые ссылки на картинки, если объект был переименован или удалён, а ссылки в формах остались.

Итог

Что важно запомнить

Коллекция картинок создаётся в ветви «Общие картинки» с видом «Коллекция картинок», элементы добавляются в редакторе и адресуются по индексу с нуля. Подключение к формам — через свойства картинок у кнопок, колонок и таблиц, программный доступ — через БиблиотекаКартинок. Новые элементы добавляйте только в конец, а пользовательские изображения храните в базе, а не в конфигурации.

Частые вопросы

Можно ли изменить коллекцию картинок без конфигуратора?

Нет. Общие картинки — объекты метаданных, их состав меняется только в конфигураторе с последующим обновлением конфигурации базы данных. Если изображения должны редактироваться пользователями, храните их в реквизитах типа «ХранилищеЗначения» или в механизме присоединенных файлов.

Как обратиться к конкретной картинке внутри коллекции из кода?

Коллекция назначается свойству элемента формы целиком, а конкретное изображение выбирается числовым индексом — например, через данные числовой колонки таблицы или индекс картинки строки дерева. Индексация начинается с нуля в порядке следования элементов в редакторе коллекции.

Почему картинка не отображается в колонке таблицы формы?

Чаще всего причина в типе данных: колонка, связанная с картинкой значений, должна содержать число — индекс элемента коллекции. Также проверьте, что у колонки формы заполнено свойство картинки значений и что индексы не выходят за пределы коллекции.

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

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

Что произойдёт, если удалить общую картинку, используемую в формах?

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

Можно ли использовать одну коллекцию в нескольких формах и отчётах?

Да, в этом и смысл общих картинок: объект доступен во всех формах, командах и макетах конфигурации. Это обеспечивает единый стиль пиктограмм — при замене изображения в коллекции обновятся все места использования после обновления конфигурации базы данных.