Картинка в карточке товара, сотрудника или контрагента: от файла до массовой загрузки

· 9 мин

Содержание

Чтобы вставить фото в справочник 1С, откройте карточку элемента и щёлкните по пустой области картинки (в номенклатуре БП 3.0 и УТ 11 она в правой верхней части формы) или нажмите кнопку со скрепкой «Присоединённые файлы». Файл загрузится с компьютера, привяжется к элементу, и его можно сделать основным изображением. Программировать ничего не нужно: в типовых конфигурациях на платформе 8.3 механизм уже есть.

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

Какие картинки подходят и как их подготовить

Платформа 1С:Предприятие 8.3 показывает в формах стандартные растровые форматы. Всё остальное лучше конвертировать заранее, а не разбираться потом, почему вместо фото пустой квадрат.

ФорматПоведение в 1СЧто делать
JPG / JPEGПоказывается вездеОсновной формат для фото товаров и сотрудников
PNGПоказывается, держит прозрачностьДля логотипов, схем, картинок на белом фоне
BMP, GIF, TIFFПоказываютсяМожно, но BMP и TIFF тяжёлые — пересохраните в JPG
HEIC (фото с iPhone)Не отображается как картинкаКонвертировать в JPG до загрузки
WebP, RAW с камерыЗависит от платформы и клиента, часто не открываетсяКонвертировать в JPG или PNG

Размер решает больше, чем формат. Фото с телефона весит 3–8 МБ и имеет разрешение 4000 пикселей по длинной стороне. В карточке оно всё равно ужмётся до 200–300 пикселей, а база и резервные копии вырастут.

Ориентиры для подготовки:

  • 📐 длинная сторона — 800–1200 пикселей;
  • 🗜 JPG с качеством 75–85 %;
  • 📦 итоговый вес — 100–300 КБ на фото;
  • 🏷 имя файла — по артикулу или коду элемента: A-1025.jpg, 00-00000123.jpg. Это понадобится для массовой загрузки;
  • 🔤 в именах без пробелов в конце, без символов # % & ? — они ломают пути в веб-клиенте.

Пакетно ужать папку с фото можно любым бесплатным графическим редактором с режимом пакетной обработки. 500 фотографий по 5 МБ после сжатия займут не 2,5 ГБ, а 75–150 МБ.

Как добавить фото в карточку справочника штатно

В типовых конфигурациях (БП 3.0, УТ 11, КА 2, ERP, ЗУП 3.1) файлы к элементам справочников прикрепляет общий механизм «Присоединённые файлы» из библиотеки стандартных подсистем. Поэтому порядок действий почти одинаковый.

Номенклатура в БП 3.0 и УТ 11

  1. Откройте Справочники → Товары и услуги → Номенклатура (в БП) или раздел НСИ и администрирование, ссылка «Номенклатура» (в УТ 11) и откройте нужную карточку.
  2. Запишите элемент, если он новый. К незаписанному элементу файл не прикрепится: программе не к чему его привязать.
  3. Щёлкните по области изображения в карточке. Программа предложит загрузить картинку с компьютера или выбрать из уже присоединённых файлов.
  4. Выберите файл и подтвердите. Картинка появится в карточке и станет основным изображением элемента.
  5. Нажмите «Записать и закрыть».

Если нужно приложить к товару несколько фото (вид спереди, сбоку, упаковка), добавляйте их через кнопку со скрепкой в командной панели карточки. Основным остаётся одно изображение — его и показывает карточка, остальные лежат в списке файлов элемента.

Сотрудники и физлица в ЗУП 3.1

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

Справочники, где области картинки нет

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

СправочникГде картинкаСколько фото
Номенклатура (БП, УТ, КА, ERP)Область изображения в карточке + скрепкаОдно основное, остальные в файлах
Физические лица, сотрудники (ЗУП)Место под фото в карточкеОдно
Контрагенты, ОС, договорыТолько скрепка «Присоединённые файлы»Сколько угодно, без показа в форме

Где хранятся файлы: в базе или на диске

По умолчанию присоединённые файлы пишутся прямо в информационную базу. Для 50 фото это неважно. Для 5000 — уже вопрос размера базы и времени резервного копирования.

В типовых конфигурациях хранение файлов переключается в Администрирование → Общие настройки, в группе настроек присоединённых файлов. Там выбирают хранение в томах на диске и задают тома — каталоги, куда программа складывает файлы. Для клиент-серверной базы путь тома указывают так, чтобы он был доступен серверу 1С, а у пользователя, от имени которого работает служба сервера, были права на запись.

Тома на диске не попадают в выгрузку .dt. Если перевели файлы в тома, включите каталог тома в резервное копирование отдельно, иначе после восстановления базы все карточки останутся без фото.

Как вывести изображение в своей форме через Конфигуратор

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

Есть два способа хранения.

СпособКак устроеноКогда подходит
Реквизит типа ХранилищеЗначенияКартинка лежит прямо в записи справочникаМаленькие иконки, логотипы, единицы и десятки элементов
Ссылка на присоединённый файлВ справочнике хранится только ссылка, файл — в справочнике файлов или томеФото товаров, сотни и тысячи элементов

Вариант с хранилищем значения

  1. В расширении заимствуйте справочник и добавьте реквизит, например Фото, с типом ХранилищеЗначения.
  2. Заимствуйте форму элемента. Добавьте реквизит формы АдресКартинки типа «Строка» и перетащите его на форму. В свойствах элемента выберите вид «Поле картинки».
  3. При открытии формы на сервере положите картинку во временное хранилище и отдайте адрес полю.
&НаСервере
Процедура ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
	ДанныеКартинки = Объект.Ссылка.Фото.Получить();
	Если ДанныеКартинки <> Неопределено Тогда
		АдресКартинки = ПоместитьВоВременноеХранилище(ДанныеКартинки, УникальныйИдентификатор);
	КонецЕсли;
КонецПроцедуры
  1. Для загрузки добавьте команду, которая вызывает на клиенте НачатьПомещениеФайлаНаСервер (платформа 8.3.18 и выше) или НачатьПомещениеФайла в более ранних. Полученный адрес временного хранилища запишите в АдресКартинки, а при записи объекта сохраните данные в реквизит:
&НаСервере
Процедура ПередЗаписьюНаСервереПосле(Отказ, ТекущийОбъект, ПараметрыЗаписи)
	Если ЭтоАдресВременногоХранилища(АдресКартинки) Тогда
		ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресКартинки);
		ТекущийОбъект.Фото = Новый ХранилищеЗначения(ДвоичныеДанные, Новый СжатиеДанных(9));
	КонецЕсли;
КонецПроцедуры

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

Вариант со ссылкой на файл

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

Как загрузить фотографии в 1С из папки пачкой

Вручную 30 фото загружаются за полчаса. Для каталога на 3000 позиций нужна обработка. В типовых конфигурациях встроенной загрузки картинок из папки по артикулу обычно нет, поэтому пишут внешнюю обработку или берут готовую у своего программиста.

Логика обработки:

  1. Пользователь указывает каталог с фото.
  2. Обработка перебирает файлы *.jpg, *.png через НайтиФайлы.
  3. Из имени файла берётся артикул или код и ищется элемент номенклатуры.
  4. Файл прикрепляется к элементу как присоединённый.
  5. Если у элемента ещё нет основного изображения — новый файл становится основным.
  6. В конце выводится список файлов, для которых товар не нашёлся.

Фрагмент для конфигураций на БСП 3.x, где для добавления файла есть программный интерфейс РаботаСФайлами:

&НаСервере
Процедура ЗагрузитьФотоНаСервере(Каталог)
	Файлы = НайтиФайлы(Каталог, "*.jpg", Ложь);
	Для Каждого Файл Из Файлы Цикл
		Номенклатура = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", Файл.ИмяБезРасширения);
		Если Номенклатура.Пустая() Тогда
			Сообщить(СтрШаблон("Не найден товар для файла %1", Файл.Имя));
			Продолжить;
		КонецЕсли;
		ПараметрыФайла = РаботаСФайлами.ПараметрыДобавленияФайла();
		ПараметрыФайла.ВладелецФайлов = Номенклатура;
		ПараметрыФайла.ИмяБезРасширения = Файл.ИмяБезРасширения;
		ПараметрыФайла.РасширениеБезТочки = Сред(Файл.Расширение, 2);
		Адрес = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(Файл.ПолноеИмя));
		РаботаСФайлами.ДобавитьФайл(ПараметрыФайла, Адрес);
	КонецЦикла;
КонецПроцедуры

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

Первый прогон делайте на копии базы. Повторный запуск без проверки «файл уже прикреплён» прикрепит те же фото второй раз.

Что учесть на практике:

  • 🖥 НайтиФайлы на сервере видит диски сервера, а не компьютера пользователя. В клиент-серверной базе папку кладут в сетевой каталог, доступный пользователю службы сервера 1С.
  • 🔢 Если артикулы с ведущими нулями, Excel и некоторые фотобанки их срезают. Сверьте 5–10 имён вручную до запуска.
  • ⏱ 3000 фото по 200 КБ загружаются за минуты. По 5 МБ — заметно дольше, и база вырастет на 15 ГБ.

Особенности веб-клиента и тонкого клиента

В тонком клиенте фото загружается через обычный диалог выбора файла Windows, картинка показывается сразу после записи.

В веб-клиенте отличий больше:

  • 🌐 выбор файла идёт через диалог браузера, а не через проводник 1С;
  • 🧩 старые обработки, написанные под синхронные вызовы и прямую работу с файловой системой, в браузере падают. Нужны асинхронные методы (НачатьПомещениеФайла, НачатьПомещениеФайлаНаСервер) и обработка оповещения;
  • 📂 массовая загрузка из папки в браузере возможна только через выбор нескольких файлов в диалоге или через каталог на сервере — перебрать локальную папку пользователя браузер не даст;
  • 🐢 тяжёлые фото по 5 МБ заметно тормозят открытие карточки на медленном канале: картинка каждый раз едет с сервера в браузер.

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

Ограничения и как не замедлить базу

Фото кажутся безобидными, пока их мало. Проблемы начинаются с тысяч элементов.

ПроблемаПричинаРешение
Список номенклатуры открывается медленноКартинки в ХранилищеЗначения прямо в справочнике читаются вместе с объектомХранить ссылку на файл, а не данные
База выросла на десятки гигабайтНесжатые фото с телефонаУжимать до 100–300 КБ, перевести файлы в тома
Резервная копия делается часамиФайлы внутри базыТома на диске + отдельное копирование каталога тома
Обмен с сайтом или РИБ идёт долгоКартинки уходят в каждом пакетеНастроить правила обмена без файлов или выгружать фото отдельно

Ещё два практических ограничения:

  • 📏 в типовых конфигурациях бывает ограничение на максимальный размер загружаемого файла, оно задаётся в настройках работы с файлами. Если большое фото не загружается — проверьте его там или просто сожмите файл;
  • 🔒 права: пользователь без права на добавление присоединённых файлов увидит картинку, но не сможет её заменить. Это настраивается в профилях групп доступа, а не в самой карточке.

Для печати ценников и каталогов с фото картинка нужна в нормальном качестве. 1000 пикселей по длинной стороне хватает и для экрана, и для печати на A4 в размере визитки.

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

Почему фото загрузилось, но в карточке пусто?
Чаще всего файл в формате, который платформа не рисует (HEIC, некоторые WebP), или картинка прикреплена, но не выбрана основным изображением. Откройте список присоединённых файлов и проверьте расширение.
Можно ли вставить фото в табличную часть документа?
В типовых документах колонки с картинкой нет. Её добавляют доработкой в расширении: в колонке показывают изображение номенклатуры из строки.
Как заменить фото товара?
Загрузите новый файл и сделайте его основным. Старый файл остаётся в списке присоединённых, его можно пометить на удаление.
Попадут ли фото в выгрузку на сайт?
Только если правила обмена с сайтом выгружают присоединённые файлы. В стандартном обмене с сайтом картинки номенклатуры обычно включаются отдельной настройкой.
Сколько фото можно прикрепить к одному элементу?
Жёсткого лимита по количеству в механизме присоединённых файлов нет. Ограничивают размер базы и скорость работы, поэтому держите вес каждого файла небольшим.