Изображения в 1С 8.3: от фото номенклатуры до рисунка в макете

· 10 мин

Содержание

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

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

Что подготовить перед загрузкой изображений

Картинка в 1С — это просто двоичные данные файла. Программа не сжимает фото за вас, поэтому подготовка экономит место в базе.

  • 🖼️ Формат. Для фото товаров берите JPG, для логотипов и печатей — PNG с прозрачным фоном. BMP и TIFF раздувают базу в разы.
  • 📏 Размер. Для карточки товара хватает 800–1200 точек по длинной стороне и 100–300 КБ на файл. Фото с телефона на 5 МБ лучше ужать заранее.
  • 🖨️ Печать и подпись. Сканируйте оттиск печати и подпись с разрешением около 300 dpi, обрежьте поля и уберите белый фон. Иначе в счёте поверх реквизитов ляжет белый прямоугольник.
  • 🗂️ Имена файлов. Называйте файл по артикулу: ART-1045.jpg. Так проще искать и загружать пакетом.

Логотип для шапки счёта удобно делать горизонтальным, с пропорцией примерно 3:1. Квадратный логотип в узкой области макета сожмётся и станет нечитаемым.

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

В БП 3.0, УТ 11 и КА 2 механизм один — подсистема «Работа с файлами» из БСП. Картинка хранится как присоединённый файл, а одна из них назначается основной и выводится в карточке.

Основное изображение номенклатуры

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

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

Несколько фото одного товара

Дополнительные снимки добавляйте через команду присоединённых файлов в шапке карточки (значок скрепки или ссылка «Файлы»). В открывшемся списке нажмите «Добавить» и выберите один или несколько файлов. Основным останется то изображение, которое вы загрузили в область картинки.

Тот же приём работает для контрагентов, сотрудников, основных средств и документов: к ним можно прикрепить скан договора, фото объекта или паспорта.

Если картинка загрузилась, но в карточке пусто, проверьте, что элемент записан. До первой записи у элемента нет ссылки, и прикреплять файл не к чему.

Логотип, печать и подпись в печатных формах

Самый частый вопрос бухгалтеров — как вывести логотип и факсимиле в счёт. В БП 3.0 это делается без программиста.

  1. Откройте Главное → Организации и карточку своей организации.
  2. Разверните раздел «Логотип и печать».
  3. Загрузите по очереди логотип, печать и подписи руководителя и главного бухгалтера.
  4. Там же можно задать дополнительное условие оплаты для счёта — текст под таблицей.
  5. Запишите карточку.

Теперь в документе «Счёт покупателю» в меню печати появится вариант счёта с печатью и подписями. Обычная форма без факсимиле остаётся, выбирайте нужную при печати.

Логотип при этом выводится в шапке счёта, а печать и подписи — в подвале. Если оттиск ложится поверх текста, обрежьте поля исходного файла: макет масштабирует картинку под отведённую область.

Картинка в других печатных формах и отчётах

Для форм, где типовой загрузки нет (накладная, акт, ваш собственный бланк), нужен рисунок в макете. Здесь три пути:

СпособКогда подходитРиски
Правка макета в режиме «Предприятие»Разовая правка текста и оформления типовой формыПри обновлении конфигурации пользовательский макет нужно сверять с новым типовым
Внешняя печатная формаНужен свой бланк с логотипом, конфигурацию трогать нельзяНужен программист, форму надо подключить в разделе дополнительных обработок
Расширение конфигурацииЛоготип должен быть в типовой форме у всех пользователейТребует проверки после каждого обновления

Пользовательские макеты в БП 3.0 лежат в Администрирование → Печатные формы, отчеты и обработки → Макеты печатных форм. Открыв макет, вы правите табличный документ прямо в программе.

Перед правкой макета выгрузите исходный вариант в файл: если что-то пойдёт не так, макет можно вернуть к типовому, но ваши прошлые изменения пропадут.

Как вставить картинку в макет и на форму программно

Разработчик работает с изображениями через объект Картинка. Его конструктор принимает двоичные данные или путь к файлу.

Рисунок в макете табличного документа

В конфигураторе откройте макет и выберите в меню Таблица → Рисунки → Картинка. Растяните рамку в нужной области и задайте рисунку имя, например Логотип. Саму картинку можно оставить пустой — её подставит код.

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

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

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

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

Когда картинка лежит в присоединённых файлах БСП, двоичные данные получают функцией РаботаСФайлами.ДвоичныеДанныеФайла(ПрисоединенныйФайл).

Логотип в типовой форме через расширение

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

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

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

Поле картинки на управляемой форме

На форме картинку показывает элемент «Поле картинки». Ему нужен реквизит формы типа Строка, в котором лежит адрес картинки: адрес во временном хранилище или навигационная ссылка.

Загрузка файла пользователем с последующим показом:

&НаКлиенте
Процедура ЗагрузитьКартинку(Команда)
	Оповещение = Новый ОписаниеОповещения("ПослеПомещенияФайла", ЭтотОбъект);
	НачатьПомещениеФайла(Оповещение, , , Истина, УникальныйИдентификатор);
КонецПроцедуры

&НаКлиенте
Процедура ПослеПомещенияФайла(Результат, Адрес, ВыбранноеИмяФайла, ДополнительныеПараметры) Экспорт
	Если Не Результат Тогда
		Возврат;
	КонецЕсли;
	АдресКартинки = Адрес; // реквизит формы, к нему привязано поле картинки
	Модифицированность = Истина;
КонецПроцедуры

Чтобы сохранить картинку в элементе справочника, заведите реквизит типа ХранилищеЗначения и запишите его на сервере:

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

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

АдресКартинки = ПолучитьНавигационнуюСсылку(Объект.Ссылка, "Изображение");

Иконки и картинки самой конфигурации

Для кнопок, команд и декораций не храните изображения в данных. Добавьте их в Общие → Общие картинки в конфигураторе и обращайтесь как БиблиотекаКартинок.ИмяКартинки. Такие картинки входят в конфигурацию и попадают ко всем пользователям с обновлением.

Ссылка на внешнее изображение вместо файла в базе

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

  • 🔗 Ссылка как текст. Пользователь заводит дополнительный реквизит типа «Строка» и вставляет туда адрес. Картинки в карточке не будет, но ссылку можно открыть в браузере.
  • 🌐 Поле HTML-документа. На форме размещают поле HTML и формируют страницу с тегом <img src="https://...">. Браузерный компонент сам загрузит картинку по адресу.
  • ⬇️ Загрузка с кэшированием. Код скачивает файл через HTTPСоединение один раз и сохраняет его в базе. Дальше картинка открывается без интернета.

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

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

База знаний с иллюстрациями внутри 1С

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

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

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

&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
	Значение = ТекущийОбъект.Содержание.Получить();
	Если ТипЗнч(Значение) = Тип("ФорматированныйДокумент") Тогда
		СодержаниеСтатьи = Значение;
	КонецЕсли;
КонецПроцедуры

Здесь СодержаниеСтатьи — реквизит формы типа ФорматированныйДокумент. Если статьи нужно выгружать на сайт, используйте метод ПолучитьHTML: он возвращает текст разметки и структуру вложенных картинок.

Если программиста нет, есть простой вариант на типовом функционале: справочник с описанием и присоединёнными скриншотами. Читать менее удобно, но картинки хранятся и ищутся по элементу.

Как не утяжелить базу картинками

Тысяча фото по 3 МБ — это 3 ГБ лишнего в базе, в резервных копиях и в каждой выгрузке .dt. Вот что помогает.

Хранение файлов в томах на диске

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

  • 💾 База и её резервные копии становятся меньше.
  • 📁 Папку томов нужно бэкапить отдельно, иначе при восстановлении картинки пропадут.
  • 🔐 У пользователя, от имени которого работает сервер 1С, должны быть права на запись в эту папку.

Там же задаётся максимальный размер загружаемого файла: ограничение защищает базу от сканов по 50 МБ.

Правила для разработчика

  • 🚫 Не читайте реквизит-хранилище в запросе списка. Каждая строка потащит за собой картинку целиком, и форма списка будет открываться секундами.
  • 🔗 Показывайте картинку через ПолучитьНавигационнуюСсылку: платформа отдаст данные только когда поле реально видно.
  • 🗜️ СжатиеДанных в ХранилищеЗначения полезно для текста и BMP, но почти ничего не даёт для JPG и PNG — они уже сжаты.
  • 🧹 Временное хранилище очищайте или привязывайте к УникальныйИдентификатор формы, чтобы данные удалялись при её закрытии.
  • 📐 Для превью в списках храните отдельную уменьшенную копию, а оригинал открывайте по запросу.

Почему картинка не отображается

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

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

Можно ли загрузить фото товаров пакетом, а не по одному?
В типовых конфигурациях есть загрузка номенклатуры из файла, но для картинок пакетный режим зависит от конфигурации. Надёжный путь — обработка, которая сопоставляет файл с товаром по артикулу в имени файла.
Попадут ли картинки товаров в обмен с сайтом или маркетплейсом?
Если правила обмена передают присоединённые файлы — да. Основное изображение передаётся чаще всего, дополнительные — по настройке обмена.
Видно ли картинку в веб-клиенте и мобильном клиенте?
Да. Поле картинки и форматированный документ работают во всех клиентах. Отличается только способ выбора файла: в веб-клиенте его выбирают через диалог браузера.
Какой максимальный размер картинки можно загрузить?
Ограничение задаётся в настройках работы с файлами. Платформа большие файлы примет, но ставить фото крупнее 1–2 МБ в карточку товара нет смысла.
Сохранится ли логотип в счёте после обновления 1С?
Да. Логотип, печать и подписи хранятся в данных организации, а не в макете, поэтому обновление их не затирает.