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