Картинка в карточке товара, сотрудника или контрагента: от файла до массовой загрузки
Содержание
Чтобы вставить фото в справочник 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
- Откройте
Справочники → Товары и услуги → Номенклатура(в БП) или разделНСИ и администрирование, ссылка «Номенклатура» (в УТ 11) и откройте нужную карточку. - Запишите элемент, если он новый. К незаписанному элементу файл не прикрепится: программе не к чему его привязать.
- Щёлкните по области изображения в карточке. Программа предложит загрузить картинку с компьютера или выбрать из уже присоединённых файлов.
- Выберите файл и подтвердите. Картинка появится в карточке и станет основным изображением элемента.
- Нажмите «Записать и закрыть».
Если нужно приложить к товару несколько фото (вид спереди, сбоку, упаковка), добавляйте их через кнопку со скрепкой в командной панели карточки. Основным остаётся одно изображение — его и показывает карточка, остальные лежат в списке файлов элемента.
Сотрудники и физлица в ЗУП 3.1
В карточке сотрудника и физического лица есть место под фотографию. Щелчок по нему открывает выбор файла. Фото хранится у физического лица, поэтому оно одно и то же во всех организациях, где человек работает.
Справочники, где области картинки нет
Контрагенты, договоры, основные средства, склады обычно не показывают картинку прямо в форме. Но фото к ним можно прикрепить через «Присоединённые файлы» (скрепка в командной панели). Изображение откроется двойным щелчком из списка файлов. Для фото основных средств при инвентаризации этого обычно хватает.
| Справочник | Где картинка | Сколько фото |
|---|---|---|
| Номенклатура (БП, УТ, КА, ERP) | Область изображения в карточке + скрепка | Одно основное, остальные в файлах |
| Физические лица, сотрудники (ЗУП) | Место под фото в карточке | Одно |
| Контрагенты, ОС, договоры | Только скрепка «Присоединённые файлы» | Сколько угодно, без показа в форме |
Где хранятся файлы: в базе или на диске
По умолчанию присоединённые файлы пишутся прямо в информационную базу. Для 50 фото это неважно. Для 5000 — уже вопрос размера базы и времени резервного копирования.
В типовых конфигурациях хранение файлов переключается в Администрирование → Общие настройки, в группе настроек присоединённых файлов. Там выбирают хранение в томах на диске и задают тома — каталоги, куда программа складывает файлы. Для клиент-серверной базы путь тома указывают так, чтобы он был доступен серверу 1С, а у пользователя, от имени которого работает служба сервера, были права на запись.
Тома на диске не попадают в выгрузку .dt. Если перевели файлы в тома, включите каталог тома в резервное копирование отдельно, иначе после восстановления базы все карточки останутся без фото.
Как вывести изображение в своей форме через Конфигуратор
Если картинка нужна там, где типовая форма её не показывает (например, фото контрагента или схема в карточке склада), понадобится доработка. Типовую конфигурацию с поддержкой лучше не снимать: всё делается в расширении конфигурации. Расширения работают на платформе 8.3.6 и выше.
Есть два способа хранения.
| Способ | Как устроено | Когда подходит |
|---|---|---|
Реквизит типа ХранилищеЗначения | Картинка лежит прямо в записи справочника | Маленькие иконки, логотипы, единицы и десятки элементов |
| Ссылка на присоединённый файл | В справочнике хранится только ссылка, файл — в справочнике файлов или томе | Фото товаров, сотни и тысячи элементов |
Вариант с хранилищем значения
- В расширении заимствуйте справочник и добавьте реквизит, например
Фото, с типомХранилищеЗначения. - Заимствуйте форму элемента. Добавьте реквизит формы
АдресКартинкитипа «Строка» и перетащите его на форму. В свойствах элемента выберите вид «Поле картинки». - При открытии формы на сервере положите картинку во временное хранилище и отдайте адрес полю.
&НаСервере
Процедура ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
ДанныеКартинки = Объект.Ссылка.Фото.Получить();
Если ДанныеКартинки <> Неопределено Тогда
АдресКартинки = ПоместитьВоВременноеХранилище(ДанныеКартинки, УникальныйИдентификатор);
КонецЕсли;
КонецПроцедуры
- Для загрузки добавьте команду, которая вызывает на клиенте
НачатьПомещениеФайлаНаСервер(платформа 8.3.18 и выше) илиНачатьПомещениеФайлав более ранних. Полученный адрес временного хранилища запишите вАдресКартинки, а при записи объекта сохраните данные в реквизит:
&НаСервере
Процедура ПередЗаписьюНаСервереПосле(Отказ, ТекущийОбъект, ПараметрыЗаписи)
Если ЭтоАдресВременногоХранилища(АдресКартинки) Тогда
ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресКартинки);
ТекущийОбъект.Фото = Новый ХранилищеЗначения(ДвоичныеДанные, Новый СжатиеДанных(9));
КонецЕсли;
КонецПроцедуры
После правки расширения выполните «Обновить конфигурацию базы данных». Изменение структуры (новый реквизит) потребует, чтобы в базе никто не работал.
Вариант со ссылкой на файл
В номенклатуре типовых конфигураций так уже сделано: у элемента есть реквизит со ссылкой на основной присоединённый файл, а картинка в форме получается из него. Для своих справочников логика та же: реквизит ссылается на элемент справочника присоединённых файлов, а форма получает двоичные данные файла и показывает их через тот же АдресКартинки. Тяжёлые данные при этом не читаются вместе с каждым элементом.
Как загрузить фотографии в 1С из папки пачкой
Вручную 30 фото загружаются за полчаса. Для каталога на 3000 позиций нужна обработка. В типовых конфигурациях встроенной загрузки картинок из папки по артикулу обычно нет, поэтому пишут внешнюю обработку или берут готовую у своего программиста.
Логика обработки:
- Пользователь указывает каталог с фото.
- Обработка перебирает файлы
*.jpg,*.pngчерезНайтиФайлы. - Из имени файла берётся артикул или код и ищется элемент номенклатуры.
- Файл прикрепляется к элементу как присоединённый.
- Если у элемента ещё нет основного изображения — новый файл становится основным.
- В конце выводится список файлов, для которых товар не нашёлся.
Фрагмент для конфигураций на БСП 3.x, где для добавления файла есть программный интерфейс РаботаСФайлами:
&НаСервере
Процедура ЗагрузитьФотоНаСервере(Каталог)
Файлы = НайтиФайлы(Каталог, "*.jpg", Ложь);
Для Каждого Файл Из Файлы Цикл
Номенклатура = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", Файл.ИмяБезРасширения);
Если Номенклатура.Пустая() Тогда
Сообщить(СтрШаблон("Не найден товар для файла %1", Файл.Имя));
Продолжить;
КонецЕсли;
ПараметрыФайла = РаботаСФайлами.ПараметрыДобавленияФайла();
ПараметрыФайла.ВладелецФайлов = Номенклатура;
ПараметрыФайла.ИмяБезРасширения = Файл.ИмяБезРасширения;
ПараметрыФайла.РасширениеБезТочки = Сред(Файл.Расширение, 2);
Адрес = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(Файл.ПолноеИмя));
РаботаСФайлами.ДобавитьФайл(ПараметрыФайла, Адрес);
КонецЦикла;
КонецПроцедуры
Назначение основного изображения в этом фрагменте опущено: имя реквизита со ссылкой на картинку зависит от конфигурации, его смотрят в Конфигураторе в составе реквизитов справочника.
Первый прогон делайте на копии базы. Повторный запуск без проверки «файл уже прикреплён» прикрепит те же фото второй раз.
Что учесть на практике:
- 🖥
НайтиФайлына сервере видит диски сервера, а не компьютера пользователя. В клиент-серверной базе папку кладут в сетевой каталог, доступный пользователю службы сервера 1С. - 🔢 Если артикулы с ведущими нулями, Excel и некоторые фотобанки их срезают. Сверьте 5–10 имён вручную до запуска.
- ⏱ 3000 фото по 200 КБ загружаются за минуты. По 5 МБ — заметно дольше, и база вырастет на 15 ГБ.
Особенности веб-клиента и тонкого клиента
В тонком клиенте фото загружается через обычный диалог выбора файла Windows, картинка показывается сразу после записи.
В веб-клиенте отличий больше:
- 🌐 выбор файла идёт через диалог браузера, а не через проводник 1С;
- 🧩 старые обработки, написанные под синхронные вызовы и прямую работу с файловой системой, в браузере падают. Нужны асинхронные методы (
НачатьПомещениеФайла,НачатьПомещениеФайлаНаСервер) и обработка оповещения; - 📂 массовая загрузка из папки в браузере возможна только через выбор нескольких файлов в диалоге или через каталог на сервере — перебрать локальную папку пользователя браузер не даст;
- 🐢 тяжёлые фото по 5 МБ заметно тормозят открытие карточки на медленном канале: картинка каждый раз едет с сервера в браузер.
В мобильном клиенте и мобильном приложении фото можно снимать камерой прямо в карточку, если конфигурация это поддерживает. Снимки с камеры такие же тяжёлые, как с телефона, поэтому сжатие стоит предусмотреть в самой доработке.
Ограничения и как не замедлить базу
Фото кажутся безобидными, пока их мало. Проблемы начинаются с тысяч элементов.
| Проблема | Причина | Решение |
|---|---|---|
| Список номенклатуры открывается медленно | Картинки в ХранилищеЗначения прямо в справочнике читаются вместе с объектом | Хранить ссылку на файл, а не данные |
| База выросла на десятки гигабайт | Несжатые фото с телефона | Ужимать до 100–300 КБ, перевести файлы в тома |
| Резервная копия делается часами | Файлы внутри базы | Тома на диске + отдельное копирование каталога тома |
| Обмен с сайтом или РИБ идёт долго | Картинки уходят в каждом пакете | Настроить правила обмена без файлов или выгружать фото отдельно |
Ещё два практических ограничения:
- 📏 в типовых конфигурациях бывает ограничение на максимальный размер загружаемого файла, оно задаётся в настройках работы с файлами. Если большое фото не загружается — проверьте его там или просто сожмите файл;
- 🔒 права: пользователь без права на добавление присоединённых файлов увидит картинку, но не сможет её заменить. Это настраивается в профилях групп доступа, а не в самой карточке.
Для печати ценников и каталогов с фото картинка нужна в нормальном качестве. 1000 пикселей по длинной стороне хватает и для экрана, и для печати на A4 в размере визитки.