Добавление картинок в 1С 8.3: от карточки до печатной формы

· 9 мин

Содержание

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

Загрузить изображение в 1С Предприятие 8.3 можно четырьмя разными способами, и выбор зависит от того, зачем вам картинка: показать фото товара в списке, вывести логотип в счёт, прикрепить скан договора или загрузить сотни изображений разом через код. Ниже — каждый сценарий отдельно, с путями меню и рабочими примерами на встроенном языке.

Куда вам нужно изображение?

Картинка товара в карточке номенклатуры

Самый частый запрос — прикрепить фотографию к товару, чтобы она отображалась в списке и в карточке.

В «Управлении торговлей» 11 и «Рознице» картинки номенклатуры хранятся в присоединённых файлах. Порядок действий:

  1. Откройте нужную позицию: Нормативно-справочная информация → Номенклатура (в УТ) или Справочники → Номенклатура (в БП).
  2. В панели навигации карточки (ссылки слева или сверху формы) выберите Файлы.
  3. Нажмите Добавить → Файл с диска, выберите изображение формата JPG или PNG.
  4. Чтобы фото показывалось как основное, в списке файлов отметьте его командой установки основной картинки (команда в командной панели списка файлов).

Если ссылки Файлы в карточке нет, значит в настройках не включена работа с файлами. Включите её: Администрирование → Настройки работы с файлами (Органайзер) → флаг хранения файлов.

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

КонфигурацияГде лежит картинкаПуть к номенклатуре
Бухгалтерия 3.0Присоединённые файлыСправочники → Номенклатура
Управление торговлей 11Присоединённые файлы (основная картинка)НСИ → Номенклатура
РозницаПрисоединённые файлыСправочники → Номенклатура

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

Логотип и печать организации для счёта и акта

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

В «Бухгалтерии» 3.0 для этого есть штатный механизм, код писать не нужно:

  1. Откройте Главное → Организации (или Справочники → Организации) и выберите свою организацию.
  2. Перейдите по ссылке Логотип и печать.
  3. Загрузите три картинки: логотип, факсимильную подпись руководителя и изображение печати.
  4. Там же есть команда предпросмотра — она покажет, как счёт будет выглядеть с загруженными изображениями.

Требования к файлам печати и подписи:

  • 🖼 Формат — PNG с прозрачным фоном, иначе под печатью будет белый прямоугольник.
  • 📐 Рекомендуемый размер печати — примерно 300×300 пикселей, подписи — около 150×50.
  • 🎨 Скан делайте на белом листе и обрезайте по краям, фон потом убирается в графическом редакторе.

После настройки в форме счёта на оплату включите флаг вывода логотипа и печати — он находится в самой печатной форме или в её настройках. Счёт сразу сформируется с картинками.

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

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

Порядок в конфигураторе (или в режиме «Предприятие» через расширение конфигурации ):

  1. Откройте макет печатной формы (объект типа «Табличный документ»).
  2. В меню Таблица → Рисунки → Вставить картинку добавьте объект-рисунок на нужную область.
  3. В свойствах рисунка задайте тип: Картинка — для статичного изображения (логотип прямо в макете) или Параметр — чтобы подставлять картинку из данных.
  4. Для параметра в коде печати заполните его значением типа Картинка.

Пример кода, который кладёт логотип в параметр макета перед выводом области:

Макет = ПолучитьМакет("ПечатьСчёта");
Область = Макет.ПолучитьОбласть("Шапка");

// картинка хранится в реквизите организации как ХранилищеЗначения
ДвоичныеДанные = Организация.Логотип.Получить();
Если ДвоичныеДанные <> Неопределено Тогда
    Область.Рисунки.Логотип.Картинка = Новый Картинка(ДвоичныеДанные);
КонецЕсли;

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

Имя рисунка в области (Рисунки.Логотип) должно точно совпадать с тем, что вы задали в свойствах объекта в макете, иначе получите ошибку обращения к несуществующему полю.

Для статичной картинки, которая не меняется от документа к документу (например, подложка бланка), проще вставить её прямо в макет через Вставить картинку → Из файла — тогда код не нужен вовсе.

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

Загрузка изображения через встроенный язык

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

Базовая цепочка: прочитать файл с диска → упаковать в ХранилищеЗначения → записать в реквизит объекта.

// на сервере
ДвоичныеДанные = Новый ДвоичныеДанные("C:\Фото\товар_001.png");

ОбъектНоменклатуры = Номенклатура.ПолучитьОбъект();
ОбъектНоменклатуры.ФайлКартинки = Новый ХранилищеЗначения(
    ДвоичныеДанные, Новый СжатиеДанных());
ОбъектНоменклатуры.Записать();

Чтобы показать картинку на управляемой форме, двоичные данные кладут во временное хранилище и ссылаются на адрес:

&НаСервере
Процедура ЗагрузитьКартинкуНаСервере(АдресВоВременномХранилище)
    ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресВоВременномХранилище);
    АдресКартинки = ПоместитьВоВременноеХранилище(ДвоичныеДанные, УникальныйИдентификатор);
КонецПроцедуры

Поле картинки на форме в свойстве Данные при этом указывает на реквизит с адресом. Для выбора файла пользователем на клиенте применяют НачатьПомещениеФайла — асинхронный метод, который открывает диалог и сам помещает файл во временное хранилище.

Несколько практических моментов:

  • СжатиеДанных() экономит место в базе для PNG и BMP; JPG уже сжат, разница будет небольшой.
  • Чтение файла (Новый ДвоичныеДанные(путь)) выполняется на той стороне, где лежит файл: путь C:\... на сервере указывает на диск сервера, а не на компьютер пользователя.
  • Для массового импорта обходите файлы в цикле, но записывайте объекты порциями и не держите все двоичные данные в памяти сразу.

Типичная задача — связать фотографии из папки с товарами по артикулу в имени файла. Общая схема обработки:

// на сервере: имена файлов вида "АРТ-00123.jpg"
ФайлыНаДиске = НайтиФайлы("C:\Фото\", "*.jpg");

Для Каждого Файл Из ФайлыНаДиске Цикл
    Артикул = Файл.ИмяБезРасширения;

    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ Ссылка ИЗ Справочник.Номенклатура
                   |ГДЕ Артикул = &Артикул";
    Запрос.УстановитьПараметр("Артикул", Артикул);
    Выборка = Запрос.Выполнить().Выбрать();

    Если Выборка.Следующий() Тогда
        ДвоичныеДанные = Новый ДвоичныеДанные(Файл.ПолноеИмя);
        Объект = Выборка.Ссылка.ПолучитьОбъект();
        Объект.ФайлКартинки = Новый ХранилищеЗначения(ДвоичныеДанные, Новый СжатиеДанных());
        Объект.Записать();
    КонецЕсли;
КонецЦикла;

Такой код удобно оформить внешней обработкой с полем выбора каталога — тогда импорт запускается в режиме «Предприятие» без изменения конфигурации.

Присоединённые файлы и сканы документов

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

Чтобы прикрепить готовый файл:

  1. Откройте документ или элемент справочника.
  2. Нажмите ссылку Файлы (или Присоединённые файлы) в панели навигации.
  3. Добавить → Файл с диска — выберите скан или фотографию.

Чтобы отсканировать прямо из 1С:

  1. В том же списке файлов нажмите Создать → Со сканера.
  2. При первом запуске выберите TWAIN-драйвер вашего сканера.
  3. Задайте разрешение (для текстовых документов хватает 200–300 dpi) и формат — PNG для чёрно-белых, JPG для цветных.

Сканирование работает только в тонком и толстом клиенте с установленным расширением работы с файлами. В веб-клиенте нужен внешний компонент, браузер сам к сканеру не обращается.

Диагностика частых проблем при работе с изображениями:

Диагностика: выберите симптом

Производительность: чтобы база не раздувалась от картинок

Изображения — тяжёлые данные. Тысяча фотографий товаров по 500 КБ — это уже 500 МБ в базе, и это напрямую влияет на скорость резервного копирования и обновления.

Главное решение — хранить файлы не внутри информационной базы, а в томах на диске:

  • Откройте Администрирование → Настройки работы с файлами (или Органайзер → Файлы).
  • Включите хранение в томах и укажите каталог на диске сервера.
  • Старые файлы, уже лежащие в базе, можно перенести в тома регламентной обработкой из того же раздела настроек.

Ещё несколько приёмов, снижающих нагрузку:

  • 📉 Уменьшайте размер картинок перед загрузкой: для карточки товара достаточно стороны 800–1000 пикселей, 4000-пиксельное фото со смартфона только занимает место.
  • 🗜 Для PNG применяйте СжатиеДанных() при записи в ХранилищеЗначения.
  • 🖼 Если нужны эскизы в списках, храните отдельно уменьшенную копию, а не ресайзите оригинал на каждое открытие формы.

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

Хранение в томах почти всегда предпочтительнее хранения в базе: резервная копия базы становится в разы легче, а сами файлы бэкапятся отдельно средствами операционной системы.

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

В каком формате загружать картинки в 1С?
Надёжнее всего PNG и JPG (RGB). Логотипы и печати — PNG с прозрачным фоном. Форматы TIFF, CMYK-JPEG и WebP 1С отображает не везде, их лучше пересохранить.
Почему путь `C:\...` в коде не находит мой файл?
В клиент-серверном варианте Новый ДвоичныеДанные("C:\...") на сервере читает диск сервера, а не компьютера пользователя. Чтобы взять файл с машины клиента, используйте НачатьПомещениеФайла и временное хранилище.
Можно ли вставить несколько картинок к одному товару?
Да, через присоединённые файлы их можно прикрепить сколько угодно. Основной считается только одна — та, что отмечена соответствующей командой в списке файлов; она и показывается в карточке.
Чем картинка в макете отличается от хранимой в реквизите?
Статичная картинка в макете одна на всю печатную форму (подложка, рамка бланка). Картинка из реквизита или хранилища значения подставляется в параметр и может быть своей для каждого объекта — например, фото конкретного товара.
Как удалить загруженное изображение?
Откройте список Файлы у объекта и удалите ненужный файл обычной командой удаления. Если он лежал в базе, место освободится после удаления помеченных объектов; если в томе — файл уберётся при регламентной очистке тома.