Разработка и Конфигурация · 12 мин
Как создать коллекцию картинок в 1С
Как создать коллекцию картинок в 1С через конфигуратор, добавить изображения, подключить их к кнопкам и таблицам формы. Примеры кода и типичные ошибки.
Коллекция картинок в 1С — это объект конфигурации, который объединяет несколько изображений в один набор с единым именем. Такие коллекции используют для оформления кнопок командных панелей, отображения состояний в табличных частях, пиктограмм в деревьях значений и списках документов. Вместо десятков отдельных картинок вы храните один объект, а нужное изображение выбираете по индексу.
Типовые конфигурации поставляются с готовыми библиотеками картинок, но при доработке интерфейса часто требуется собственная коллекция: например, набор статусов заказа, пиктограммы категорий товаров или индикаторы для отчёта. Создать её можно в конфигураторе за несколько минут, а подключение к элементам формы выполняется либо настройкой свойств, либо программно через встроенный язык.
В материале разобран полный цикл: создание коллекции в ветви «Общие картинки», добавление и упорядочивание изображений, привязка к кнопкам и таблицам формы, программное обращение через БиблиотекаКартинок, а также ограничения по форматам и типичные ошибки, из-за которых картинки не отображаются.
Где в конфигураторе создаётся коллекция картинок
Все общие изображения конфигурации хранятся в ветви дерева конфигурации «Общие» → «Общие картинки». Чтобы создать новый объект, выделите этот узел, нажмите кнопку добавления или выберите «Добавить» в контекстном меню. Откроется палитра свойств новой картинки.
Ключевое свойство — вид картинки. Если оставить вид «Картинка», объект будет хранить одно изображение. Для коллекции переключите вид на «Коллекция картинок» — после этого вместо одиночной загрузки станет доступен редактор набора изображений. Имя объекта задавайте осмысленное и без пробелов, например СтатусыЗаказов или ПиктограммыКатегорий: именно по нему коллекция будет доступна в коде.
Заполните также синоним — он отображается в диалогах выбора картинки при настройке форм. Синоним не влияет на программное обращение, но упрощает работу при ручной настройке интерфейса.
Как добавить изображения в коллекцию
После установки вида «Коллекция картинок» откройте редактор: в палитре свойств нажмите ссылку «Загрузить из файла» для одиночной загрузки или используйте команду редактирования коллекции, которая открывает окно со списком элементов. В редакторе доступны кнопки добавления, удаления, перемещения элементов вверх и вниз.
Порядок элементов в коллекции критичен: программный доступ идёт по индексу, начиная с нуля. Если вы добавите картинки «Новый», «В работе», «Завершён», то индексы будут 0, 1 и 2 соответственно. Изменение порядка позже сломает логику там, где индексы захардкожены в коде, поэтому фиксируйте соответствие индексов и смысловых значений в комментарии или в перечислении.
Поддерживаются стандартные растровые форматы — PNG, BMP, GIF, JPEG, а также иконки ICO. Для интерфейсных пиктограмм практичнее PNG с прозрачным фоном: он корректно выглядит на разных цветовых схемах. Размер подбирайте под назначение: для кнопок командных панелей обычно используют небольшие изображения порядка 16×16 пикселей, для таблиц состояний — тоже компактные варианты, чтобы не раздувать высоту строк.
- 1Откройте конфигуратор и ветвь «Общие» → «Общие картинки»
- 2Добавьте новый объект и задайте имя, например СтатусыДокументов
- 3В палитре свойств установите вид «Коллекция картинок»
- 4Откройте редактор коллекции и загрузите изображения в нужном порядке
- 5Проверьте индексы элементов и зафиксируйте их в комментарии к коду
- 6Обновите конфигурацию базы данных (F7) и проверьте отображение в режиме предприятия
Как подключить коллекцию к элементам формы
Кнопки и команды
Для кнопки командной панели или команды формы картинка задаётся в свойстве «Картинка». В диалоге выбора перейдите на закладку общих картинок, найдите свою коллекцию и укажите конкретный элемент — среда покажет все изображения набора с их индексами. Для команды объекта метаданных (например, команды справочника) картинка задаётся аналогично в палитре свойств команды.
Табличные части и состояния
Для отображения пиктограмм в таблице формы используется связка свойств: у колонки таблицы устанавливается «КартинкаЗначений» (ваша коллекция), а данные колонки должны содержать число — индекс нужного элемента. Так реализуются классические колонки состояний: проведён, помечен на удаление, не проведён. В обычных формах аналогичную роль играли свойства «КартинкиСтрок» у табличного поля.
Деревья и списки
В дереве значений на форме коллекция подключается через свойство, отвечающее за картинки строк, после чего для каждой строки программно устанавливается индекс картинки. Это типовой приём для иерархических списков с разными типами узлов: группы показывают одну пиктограмму, элементы — другую.
Программное обращение к коллекции
Во встроенном языке все общие картинки доступны через свойство глобального контекста БиблиотекаКартинок. Обращение к коллекции как к целому объекту выглядит так: БиблиотекаКартинок.СтатусыДокументов. Если коллекция назначена свойству формы, индекс конкретного элемента задаётся отдельно — либо в данных строки таблицы, либо явным указанием.
Типовой фрагмент для таблицы значений на форме выглядит следующим образом: колонке назначается картинка значений, а при заполнении строк каждой строке присваивается числовой индекс в зависимости от состояния объекта. Ниже пример логики заполнения:
Для Каждого Строка Из ТаблицаДокументов Цикл
Если Строка.Проведен Тогда
Строка.ИндексКартинки = 0;
ИначеЕсли Строка.ПометкаУдаления Тогда
Строка.ИндексКартинки = 1;
Иначе
Строка.ИндексКартинки = 2;
КонецЕсли;
КонецЦикла;
Если нужно получить отдельную картинку из коллекции как самостоятельный объект (например, для вывода в табличный документ), используйте метод получения картинки из библиотеки с указанием индекса либо загрузите отдельную общую картинку. Учтите, что обращение к несуществующему имени в БиблиотекаКартинок вызовет ошибку времени выполнения, поэтому имя проверяйте заранее.
Индексы картинок удобно синхронизировать со значениями перечисления: создайте перечисление «СтатусыДокумента» и используйте порядковый номер значения как индекс в коллекции. Тогда при добавлении нового статуса достаточно дополнить оба объекта, а логика останется прозрачной.
Альтернативы коллекции: когда что выбрать
Коллекция — не единственный способ работы с изображениями в 1С. Если нужна одна иконка для кнопки, проще создать одиночную общую картинку. Если изображения динамические (фото товаров, сканы документов), их хранят не в конфигурации, а в базе данных — в реквизитах типа «ХранилищеЗначения» или в присоединенных файлах.
Варианты хранения картинок
Набор интерфейсных пиктограмм с доступом по индексу. Подходит для статусов, состояний, пиктограмм строк. Изменение требует обновления конфигурации.
Одно статичное изображение для кнопки или элемента формы. Проще в поддержке, но при множестве иконок засоряет ветвь метаданных.
Стандартные пиктограммы, встроенные в платформу. Не требуют хранения в конфигурации, но набор ограничен и зависит от версии платформы.
Пользовательские изображения, загружаемые в режиме предприятия. Единственный вариант для фото товаров и сканов; не подходит для интерфейсных иконок.
Отдельный случай — внешние файлы картинок на диске, загружаемые через Новый Картинка(ПутьКФайлу). Такой подход применяют в обработках и отчётах, но он создаёт зависимость от файловой системы сервера или клиента и плохо переносится между окружениями. Для интерфейса управляемых форм предпочтительнее общие картинки конфигурации.
Ограничения и типичные ошибки
Коллекция картинок — часть конфигурации, поэтому любое изменение набора требует обновления конфигурации базы данных. В клиент-серверном режиме при динамическом обновлении изменённые картинки могут не подхватиться у уже подключённых пользователей до перезапуска сеанса — учитывайте это при выкатке доработок.
Вторая частая проблема — рассинхронизация индексов. Если в коллекцию добавили элемент в середину списка, все индексы после него сдвинутся, и таблицы состояний начнут показывать неверные пиктограммы без каких-либо ошибок в коде. Безопасное правило: новые элементы добавляйте только в конец коллекции.
Третья группа ошибок связана с отображением: слишком большие исходники искажают высоту строк таблиц, изображения без прозрачности выглядят цветными квадратами на тёмных элементах, а картинка, назначенная колонке с нечисловыми данными, просто не отображается. Проверяйте тип данных колонки — для связи с коллекцией там должно быть число.
Как проверить результат
После создания коллекции обновите конфигурацию базы данных (клавиша F7 в конфигураторе) и запустите режим предприятия. Откройте форму, где используется коллекция, и проверьте отображение в разных сценариях: пустая таблица, заполненные строки с разными индексами, командные панели.
Контрольные точки
Каждая строка показывает пиктограмму, соответствующую её состоянию
Пустые ячейки или одинаковые картинки у разных состояний — проверьте тип колонки и индексы
Иконка видна и соответствует выбранному элементу коллекции
Кнопка без картинки — проверьте свойство «Отображение» и выбор элемента коллекции
Код выполняется без ошибок, картинка назначается
Ошибка «Поле объекта не обнаружено» — опечатка в имени общей картинки
Новые картинки видны после перезапуска сеанса
Старая версия отображается у активных пользователей — требуется перезапуск сеансов
Дополнительно прогоните проверку конфигурации (меню «Конфигурация» → «Проверка конфигурации»): она выявит битые ссылки на картинки, если объект был переименован или удалён, а ссылки в формах остались.
Что важно запомнить
Коллекция картинок создаётся в ветви «Общие картинки» с видом «Коллекция картинок», элементы добавляются в редакторе и адресуются по индексу с нуля. Подключение к формам — через свойства картинок у кнопок, колонок и таблиц, программный доступ — через БиблиотекаКартинок. Новые элементы добавляйте только в конец, а пользовательские изображения храните в базе, а не в конфигурации.
Частые вопросы
Можно ли изменить коллекцию картинок без конфигуратора?
Нет. Общие картинки — объекты метаданных, их состав меняется только в конфигураторе с последующим обновлением конфигурации базы данных. Если изображения должны редактироваться пользователями, храните их в реквизитах типа «ХранилищеЗначения» или в механизме присоединенных файлов.
Как обратиться к конкретной картинке внутри коллекции из кода?
Коллекция назначается свойству элемента формы целиком, а конкретное изображение выбирается числовым индексом — например, через данные числовой колонки таблицы или индекс картинки строки дерева. Индексация начинается с нуля в порядке следования элементов в редакторе коллекции.
Почему картинка не отображается в колонке таблицы формы?
Чаще всего причина в типе данных: колонка, связанная с картинкой значений, должна содержать число — индекс элемента коллекции. Также проверьте, что у колонки формы заполнено свойство картинки значений и что индексы не выходят за пределы коллекции.
Какой формат изображений лучше использовать для пиктограмм?
Оптимален PNG с прозрачным фоном: он корректно отображается на разных цветовых схемах интерфейса. Для кнопок и таблиц состояний используйте компактные размеры, иначе строки таблиц и панели будут неоправданно растягиваться по высоте.
Что произойдёт, если удалить общую картинку, используемую в формах?
Ссылки в свойствах форм станут пустыми, картинки перестанут отображаться, а программные обращения через БиблиотекаКартинок начнут вызывать ошибку времени выполнения. Перед удалением выполните поиск ссылок на объект (контекстное меню объекта → «Поиск ссылок на объект») и уберите все использования.
Можно ли использовать одну коллекцию в нескольких формах и отчётах?
Да, в этом и смысл общих картинок: объект доступен во всех формах, командах и макетах конфигурации. Это обеспечивает единый стиль пиктограмм — при замене изображения в коллекции обновятся все места использования после обновления конфигурации базы данных.