Торговля и Склад · 11 мин
Как сделать прайс с картинками в 1С
Практическое руководство: как вывести изображения номенклатуры в прайс-лист 1С через макет СКД или внешнюю печатную форму, настроить размеры и проверить результат.
Стандартный прайс-лист в 1С выводит только текст: наименование, артикул, цену. Клиенту же удобнее видеть товар, поэтому возникает задача добавить в прайс фотографии номенклатуры. В типовых конфигурациях (Управление торговлей 11, Комплексная автоматизация, ERP) это решается двумя путями: доработкой макета отчёта «Прайс-лист» на СКД или созданием внешней печатной формы с выводом картинок программно.
Ключевое условие — изображения должны быть заранее присоединены к карточкам номенклатуры. 1С хранит их как присоединённые файлы в справочнике «НоменклатураПрисоединенныеФайлы» (в УТ 11) или «Хранилище дополнительной информации» (в старых конфигурациях вроде УТ 10.3). Если картинок нет в базе, сначала нужно их загрузить — вручную через карточку товара или пакетной обработкой загрузки изображений из папки.
Ниже разобраны оба рабочих способа: типовой с минимальной доработкой и программный для полного контроля над оформлением. Подход подходит и для «1С:Розница», и для «Управление нашей фирмой» — отличаются только названия отчётов и макетов.
Подготовка: загрузка изображений в карточки номенклатуры
Прежде чем настраивать вывод, убедитесь, что у товаров есть картинки. Откройте карточку номенклатуры: в УТ 11 изображение видно слева в форме элемента, а полный список присоединённых файлов доступен по команде «Присоединенные файлы» в меню «Ещё». Одна из картинок помечается как основная — именно её логично выводить в прайс.
Для массовой загрузки используйте типовую обработку «Загрузка изображений номенклатуры» (в УТ 11: раздел «CRM и маркетинг» → «Настройки и справочники» или через поиск по функциям). Обработка позволяет сопоставить файлы из папки с товарами по наименованию файла и артикулу. Перед загрузкой приведите имена файлов к виду «АРТИКУЛ.jpg» — это резко снижает число несопоставленных позиций.
Обратите внимание на размер файлов. Фотографии с фотоаппарата по 5–10 МБ раздувают базу и замедляют формирование прайса. Оптимально заранее уменьшить изображения до 500–800 пикселей по большей стороне — для прайса этого достаточно, а файл будет весить десятки килобайт.
Способ 1: доработка типового отчёта «Прайс-лист» через СКД
В УТ 11 прайс-лист построен на системе компоновки данных. Откройте отчёт («CRM и маркетинг» → «Прайс-лист»), перейдите в настройки и включите расширенный режим — появится возможность редактировать колонки. Однако вывести картинку напрямую в СКД-отчёт нельзя: СКД не умеет отображать двоичные данные как изображения в ячейках.
Поэтому рабочий вариант — внешний отчёт на базе той же схемы компоновки, где после формирования результата картинки подставляются программно в готовый табличный документ. Логика такая: отчёт формируется стандартно, затем код обходит строки результата и в колонку «Изображение» вставляет картинку, полученную из присоединённого файла товара.
Для получения картинки в запросе или коде используется обращение к реквизиту «ФайлКартинки» номенклатуры (в УТ 11 он есть в карточке товара) и функция «РаботаСФайлами.ДвоичныеДанныеФайла()», возвращающая двоичные данные. Из них создаётся объект «Картинка», который помещается в область табличного документа.
ДвоичныеДанные = РаботаСФайлами.ДвоичныеДанныеФайла(ФайлКартинки);
Если ДвоичныеДанные <> Неопределено Тогда
Картинка = Новый Картинка(ДвоичныеДанные);
Рисунок = Область.Рисунки.Добавить(ТипРисункаТабличногоДокумента.Картинка);
Рисунок.Картинка = Картинка;
Рисунок.РазмерПропорционально = Истина;
КонецЕсли;Способ 2: внешняя печатная форма с программным выводом
Внешняя печатная форма даёт полный контроль над оформлением: размер ячеек, рамки, шрифты, порядок колонок. Создаётся внешняя обработка с макетом табличного документа, где в макете задаётся строка с областью под картинку фиксированной высоты — например, 60–80 пикселей.
В модуле обработки выполняется запрос по номенклатуре с ценами (цены берутся из регистра «Цены номенклатуры» с отбором по виду цен и дате), затем для каждой строки выводится область макета и отдельно вставляется рисунок. Картинка масштабируется под размер ячейки, чтобы не ломать вёрстку.
Готовая обработка подключается через «Администрирование» → «Печатные формы, отчеты и обработки» → «Дополнительные отчеты и обработки». После регистрации прайс с картинками станет доступен пользователям из списка номенклатуры или из раздела дополнительных отчётов — без изменения конфигурации, что сохраняет простое обновление.
- 1Убедитесь, что у товаров загружены изображения и выбрана основная картинка
- 2Решите, какой способ подходит: доработка отчёта или внешняя обработка
- 3Создайте макет с областью под изображение фиксированной высоты
- 4Напишите код получения двоичных данных файла картинки и вставки рисунка
- 5Подключите обработку через «Дополнительные отчеты и обработки»
- 6Сформируйте прайс по тестовой группе товаров и проверьте результат
Настройка размеров и оформления
Главная проблема прайса с картинками — «разъезжающаяся» вёрстка: у разных товаров фото разных пропорций, и строки получаются разной высоты. Решение — фиксированная высота строки (например, 70–90 пикселей) и вставка рисунка с пропорциональным масштабированием в заданный прямоугольник. Свойство «РазмерПропорционально» у рисунка табличного документа сохраняет пропорции, не растягивая фото.
Ширину колонки с изображением задайте одинаковой для всех строк — обычно 2,5–3 см. Если картинка квадратная, а ячейка вытянутая, останутся пустые поля — это нормально и выглядит аккуратнее, чем растянутое фото. Для товаров без изображения выводите заглушку (серый квадрат с подписью «нет фото») или оставляйте ячейку пустой, но не пропускайте строку целиком.
Для печати учитывайте альбомную ориентацию: с колонкой изображений прайс становится шире. Проверьте в предварительном просмотре, помещается ли таблица на лист А4, и при необходимости сократите количество колонок с характеристиками или включите масштаб «По ширине страницы» в настройках печати табличного документа.
Альтернативы: Excel, HTML и публикация на сайте
Если цель — отправить красивый прайс клиенту, а не печатать, рассмотрите выгрузку в Excel. Макет табличного документа 1С с картинками сохраняется в XLSX, и изображения встраиваются в файл. Ограничение: файл получается тяжёлым, а вёрстка в Excel может немного отличаться от предпросмотра в 1С.
Второй вариант — формирование HTML-файла, где картинки выгружаются в отдельную папку, а в странице прописываются ссылки на них. Такой прайс легко отправить архивом или выложить в личный кабинет клиента. Третий путь — интеграция с сайтом: если каталог уже синхронизирован с 1С, прайс с фото формируется на стороне сайта, и дорабатывать отчёты в 1С вообще не нужно.
Сравнение вариантов
Подходит для внутреннего использования в УТ 11; требует программной вставки картинок после формирования и осторожности при обновлениях
Полный контроль оформления, конфигурация не меняется, обновления не ломаются; нужны навыки программирования на встроенном языке
Быстро и без доработок, но большой вес файла и возможные искажения вёрстки
Лучший вариант для клиентов и больших прайсов; требует отдельной разработки выгрузки
Проверка результата и типичные ошибки
После настройки сформируйте прайс по небольшой группе товаров, где точно есть и картинки, и их отсутствие. Проверьте: все ли изображения вывелись, не растянуты ли они, корректно ли обработаны позиции без фото, помещается ли документ на печатный лист. Затем сформируйте прайс по крупной группе и замерьте время формирования — если оно превышает пару минут, стоит оптимизировать запрос или уменьшить размер исходных фото.
Как проверить результат
У всех товаров с основным изображением фото видно в прайсе
Пустые ячейки у товаров, у которых картинка в карточке есть
Фото не растянуты и не сплющены, строки одинаковой высоты
Вертикальные фото растянуты на всю ширину, вёрстка «прыгает»
Прайс на 200–300 позиций формируется за разумное время
Формирование зависает или 1С закрывается с ошибкой памяти
Частая ошибка — обращение к несуществующему реквизиту: в разных конфигурациях ссылка на основную картинку называется по-разному («ФайлКартинки» в УТ 11, «ОсновноеИзображение» в УТ 10.3). Вторая типичная проблема — права доступа: у пользователя без прав на присоединённые файлы прайс сформируется без картинок, хотя у администратора всё работает. Третья — попытка вставить картинку прямо в ячейку как значение: табличный документ выводит изображения только через коллекцию «Рисунки» области.
Ограничения и когда привлекать специалиста
Самостоятельно задачу можно решить, если у вас есть базовые навыки работы с конфигуратором и встроенным языком 1С, а конфигурация типовая. Если конфигурация сильно доработана, используется обмен с сайтом или прайс должен формироваться по расписанию и рассылаться клиентам — разумнее поручить задачу специалисту по 1С, чтобы не нарушить существующие механизмы.
Учтите и лицензионный момент: фотографии товаров должны быть вашими или полученными от поставщика с правом использования. Автоматическая выгрузка чужих фото с маркетплейсов в прайс может нарушать авторские права.
Что важно запомнить
Прайс с картинками строится на присоединённых файлах номенклатуры: сначала загружаются и оптимизируются изображения, затем картинки выводятся в табличный документ программно — через доработанный отчёт СКД или внешнюю печатную форму. Контролируйте размер фото, высоту строк и права доступа, а конфигурацию не меняйте без необходимости.
Частые вопросы
Можно ли вывести картинки в прайсе без программирования?
Полноценно — нет: ни СКД, ни стандартные настройки отчётов не умеют отображать изображения из присоединённых файлов в ячейках. Минимальный код для вставки рисунков в табличный документ потребуется в любом случае. Альтернатива без кода — формировать прайс на стороне сайта или в Excel-шаблоне, заполняемом выгрузкой.
Почему в прайсе не выводятся картинки, хотя в карточке товара они есть?
Чаще всего причины три: у пользователя нет прав на чтение присоединённых файлов, код обращается не к тому реквизиту (в разных конфигурациях он называется по-разному) или у товара не назначена основная картинка — файл присоединён, но не выбран как изображение по умолчанию.
Сколько позиций выдержит прайс с картинками?
Точного ограничения нет, но на практике табличный документ с сотнями встроенных изображений формируется медленно и потребляет много памяти. Для прайсов свыше нескольких сотен позиций лучше формировать документ порциями по группам товаров или выгружать в HTML/Excel, где картинки подключаются ссылками, а не встраиваются.
Как уменьшить вес прайса в Excel с картинками?
Уменьшайте сами изображения до загрузки в 1С — до 500–800 пикселей по большей стороне. Сжатие уже встроенных в XLSX картинок возможно средствами Excel («Сжать рисунки»), но это дополнительный ручной шаг при каждой выгрузке, поэтому правильнее готовить файлы заранее.
Сломается ли доработка при обновлении конфигурации?
Если прайс реализован как внешняя обработка или внешний отчёт — обновления его не затронут. Если изменён типовой макет или модуль отчёта «Прайс-лист», при обновлении изменения могут быть замещены типовыми, и доработку придётся восстанавливать вручную. Поэтому внешняя подключаемая форма — более безопасный путь.