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

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

Как обратиться к общим картинкам в 1С

Как обратиться к общим картинкам в 1С: обращение из кода через БиблиотекаКартинок, назначение картинок кнопкам и командам, типовые ошибки и проверка результата.

Общие картинки в 1С — это ветка дерева конфигурации «Общие → Общие картинки», где хранятся изображения, доступные из любого места прикладного решения: из форм, команд, кнопок, табличных документов и кода на встроенном языке. Использование общих картинок вместо загрузки файлов с диска делает конфигурацию самодостаточной: изображения хранятся внутри информационной базы и не зависят от внешних файлов и путей на компьютере пользователя.

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

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

Где находятся общие картинки и какие бывают

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

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

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

Как обратиться к общей картинке из кода

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

&НаКлиенте

Процедура ПриОткрытии(Отказ)

// Назначаем картинку кнопке формы

Элементы.КнопкаЗагрузить.Картинка = БиблиотекаКартинок.ЗагрузитьИзФайла;

// Меняем картинку декорации

Элементы.ДекорацияСтатус.Картинка = БиблиотекаКартинок.Информация;

КонецПроцедуры

Тот же приём работает на сервере — контекст не имеет значения, БиблиотекаКартинок доступна и в серверных, и в клиентских процедурах, и в модулях объектов. Например, в модуле менеджера справочника можно подставить картинку в макет табличного документа:

&НаСервере

Процедура ЗаполнитьКартинку(ТабДок)

Область = ТабДок.ПолучитьОбласть("Шапка");

Область.Рисунки.Логотип.Картинка = БиблиотекаКартинок.ЛоготипКомпании;

ТабДок.Вывести(Область);

КонецПроцедуры

Если имя картинки хранится в переменной (например, пришло из настроек), прямое обращение через точку невозможно — платформа не поддерживает вычисляемое имя свойства для библиотеки картинок. В таком случае применяют соответствие имён и картинок, заполненное заранее, либо структуру с явным перечислением допустимых имён.

bsl
Элементы.КнопкаДействие.Картинка = БиблиотекаКартинок.ВыполнитьЗадачу;

Как назначить картинку кнопке, команде или колонке без кода

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

Для кнопок формы картинка чаще всего наследуется от связанной команды: если у команды картинка задана, кнопка отобразит её автоматически. Отдельное свойство «Картинка» у кнопки нужно только когда кнопка должна отличаться от команды.

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

Назначение картинки команде
  1. 1
    Откройте конфигуратор и найдите нужную команду в дереве конфигурации
  2. 2
    Откройте палитру свойств и перейдите к свойству «Картинка»
  3. 3
    Нажмите кнопку выбора и откройте вкладку «Из конфигурации» или «Из платформы»
  4. 4
    Выберите картинку и подтвердите выбор
  5. 5
    Обновите конфигурацию базы данных и проверьте отображение в режиме предприятия

Как добавить свою картинку в конфигурацию

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

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

Имя картинки должно быть уникальным в пределах конфигурации и не совпадать с именами предопределённых картинок платформы. Если назвать свою картинку так же, как стандартную, обращение по имени может вернуть не ту, которую вы ожидали, — поведение зависит от приоритета, и полагаться на него не стоит.

Обращение к картинкам в отчётах и динамических списках

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

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

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

Типичные ошибки и как их проверить

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

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

Третья ситуация — картинка есть в дереве конфигурации, но недоступна в расширении. Если доработка выполняется в расширении конфигурации, общие картинки основной конфигурации доступны только после явного заимствования: добавьте нужную картинку в расширение через «Добавить → заимствовать», иначе обращение из кода расширения не сработает.

Типичные ошибки
01
Опечатка в имени картинки — код выполняется, но кнопка остаётся без пиктограммы; сверяйте имя с деревом конфигурации
02
Использование имени с пробелами или кириллицей при обращении из кода — переименуйте картинку латиницей
03
Назначение картинки элементу формы до его создания — перенесите код в ПриСозданииНаСервере
04
Обращение к картинке основной конфигурации из расширения без заимствования — добавьте картинку в расширение
05
Загрузка тяжёлых изображений в общие картинки — размер конфигурации и обновлений растёт, сжимайте файлы заранее

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

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

Дополнительная проверка — поиск по конфигурации. Выполните «Правка → Найти» по имени картинки, чтобы увидеть все места её использования и убедиться, что нигде не осталось обращений по старому имени после переименования.

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

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

Отображение картинки на кнопке в режиме предприятия
Норма

Пиктограмма видна рядом с надписью или вместо неё

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

Кнопка пустая — вероятно, неверное имя картинки

Значение БиблиотекаКартинок.Имя в отладчике
Норма

Значение типа Картинка, не пустое

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

Пустая картинка — имя не найдено

Поиск имени картинки по конфигурации
Норма

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

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

Есть ссылки на старое или несуществующее имя

Итог

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

Общие картинки вызываются из кода через БиблиотекаКартинок.Имя или назначаются декларативно в свойстве «Картинка». Собственные изображения добавляются в ветку «Общие → Общие картинки» с именем латиницей. Пустая картинка вместо пиктограммы почти всегда означает ошибку в имени — проверяйте через отладчик и поиск по конфигурации.

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

Можно ли обратиться к картинке по имени, хранящемуся в строковой переменной?

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

Почему картинка видна в конфигураторе, но не отображается в режиме предприятия?

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

Как использовать общие картинки в расширении конфигурации?

Картинку из основной конфигурации нужно заимствовать: в расширении добавьте объект «Общая картинка» с таким же именем через механизм заимствования. После этого обращение БиблиотекаКартинок.Имя из кода расширения будет работать. Можно также добавить в расширение собственную картинку, независимую от основной конфигурации.

Чем отличается картинка «Из файла» в свойствах команды от общей картинки?

Картинка «Из файла» встраивается в конкретное место использования и не доступна из других объектов и из кода. Общая картинка хранится один раз в конфигурации и переиспользуется везде. Если одно изображение нужно в нескольких местах, правильнее добавить его в общие картинки.

Какие форматы изображений поддерживаются?

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

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

В новых версиях платформы набор предопределённых картинок может меняться: отдельные изображения переименовывают или удаляют. Найдите обращения к пропавшим картинкам поиском по конфигурации и замените их на актуальные имена из текущей версии платформы либо на собственные общие картинки.