Изображения в 1С 8.3: от фото номенклатуры до рисунка в макете
Содержание
Чтобы поставить картинку в 1С 8.3 как пользователь, откройте карточку элемента (например, номенклатуры) и щёлкните по пустой области изображения справа: программа предложит выбрать файл с диска, сохранит его как присоединённый файл и покажет в карточке. Логотип и печать организации загружаются в карточке организации, раздел «Логотип и печать», и потом сами попадают в счёт на оплату.
Разработчику нужен другой инструмент: рисунок в макете табличного документа, поле картинки на форме, реквизит типа ХранилищеЗначения или общие картинки конфигурации. Ниже оба уровня: сначала то, что делается мышкой в типовой базе, потом код.
Что подготовить перед загрузкой изображений
Картинка в 1С — это просто двоичные данные файла. Программа не сжимает фото за вас, поэтому подготовка экономит место в базе.
- 🖼️ Формат. Для фото товаров берите JPG, для логотипов и печатей — PNG с прозрачным фоном. BMP и TIFF раздувают базу в разы.
- 📏 Размер. Для карточки товара хватает 800–1200 точек по длинной стороне и 100–300 КБ на файл. Фото с телефона на 5 МБ лучше ужать заранее.
- 🖨️ Печать и подпись. Сканируйте оттиск печати и подпись с разрешением около 300 dpi, обрежьте поля и уберите белый фон. Иначе в счёте поверх реквизитов ляжет белый прямоугольник.
- 🗂️ Имена файлов. Называйте файл по артикулу:
ART-1045.jpg. Так проще искать и загружать пакетом.
Логотип для шапки счёта удобно делать горизонтальным, с пропорцией примерно 3:1. Квадратный логотип в узкой области макета сожмётся и станет нечитаемым.
Как добавить картинку в карточку товара или другого справочника
В БП 3.0, УТ 11 и КА 2 механизм один — подсистема «Работа с файлами» из БСП. Картинка хранится как присоединённый файл, а одна из них назначается основной и выводится в карточке.
Основное изображение номенклатуры
- Откройте
Справочники → Номенклатура(в УТ 11 —НСИ и администрирование → Номенклатура). - Откройте карточку товара.
- Щёлкните по области изображения справа от реквизитов (в новой карточке она пустая, с надписью-приглашением).
- Выберите файл на диске и нажмите «Открыть».
- Запишите карточку.
Картинка появится в карточке и в списке присоединённых файлов элемента. Если щёлкнуть по уже загруженной картинке, программа откроет меню, где её можно заменить или просмотреть в полном размере.
Несколько фото одного товара
Дополнительные снимки добавляйте через команду присоединённых файлов в шапке карточки (значок скрепки или ссылка «Файлы»). В открывшемся списке нажмите «Добавить» и выберите один или несколько файлов. Основным останется то изображение, которое вы загрузили в область картинки.
Тот же приём работает для контрагентов, сотрудников, основных средств и документов: к ним можно прикрепить скан договора, фото объекта или паспорта.
Если картинка загрузилась, но в карточке пусто, проверьте, что элемент записан. До первой записи у элемента нет ссылки, и прикреплять файл не к чему.
Логотип, печать и подпись в печатных формах
Самый частый вопрос бухгалтеров — как вывести логотип и факсимиле в счёт. В БП 3.0 это делается без программиста.
- Откройте
Главное → Организациии карточку своей организации. - Разверните раздел «Логотип и печать».
- Загрузите по очереди логотип, печать и подписи руководителя и главного бухгалтера.
- Там же можно задать дополнительное условие оплаты для счёта — текст под таблицей.
- Запишите карточку.
Теперь в документе «Счёт покупателю» в меню печати появится вариант счёта с печатью и подписями. Обычная форма без факсимиле остаётся, выбирайте нужную при печати.
Логотип при этом выводится в шапке счёта, а печать и подписи — в подвале. Если оттиск ложится поверх текста, обрежьте поля исходного файла: макет масштабирует картинку под отведённую область.
Картинка в других печатных формах и отчётах
Для форм, где типовой загрузки нет (накладная, акт, ваш собственный бланк), нужен рисунок в макете. Здесь три пути:
| Способ | Когда подходит | Риски |
|---|---|---|
| Правка макета в режиме «Предприятие» | Разовая правка текста и оформления типовой формы | При обновлении конфигурации пользовательский макет нужно сверять с новым типовым |
| Внешняя печатная форма | Нужен свой бланк с логотипом, конфигурацию трогать нельзя | Нужен программист, форму надо подключить в разделе дополнительных обработок |
| Расширение конфигурации | Логотип должен быть в типовой форме у всех пользователей | Требует проверки после каждого обновления |
Пользовательские макеты в БП 3.0 лежат в Администрирование → Печатные формы, отчеты и обработки → Макеты печатных форм. Открыв макет, вы правите табличный документ прямо в программе.
Перед правкой макета выгрузите исходный вариант в файл: если что-то пойдёт не так, макет можно вернуть к типовому, но ваши прошлые изменения пропадут.
Как вставить картинку в макет и на форму программно
Разработчик работает с изображениями через объект Картинка. Его конструктор принимает двоичные данные или путь к файлу.
Рисунок в макете табличного документа
В конфигураторе откройте макет и выберите в меню Таблица → Рисунки → Картинка. Растяните рамку в нужной области и задайте рисунку имя, например Логотип. Саму картинку можно оставить пустой — её подставит код.
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ДанныеЛоготипа = ПолучитьДанныеЛоготипа(Организация); // ДвоичныеДанные или Неопределено
Если ДанныеЛоготипа <> Неопределено Тогда
ОбластьШапка.Рисунки.Логотип.Картинка = Новый Картинка(ДанныеЛоготипа);
Иначе
ОбластьШапка.Рисунки.Удалить(ОбластьШапка.Рисунки.Логотип);
КонецЕсли;
ТабДок.Вывести(ОбластьШапка);
Если картинки нет, рисунок лучше удалить из области, а не оставлять пустую рамку. Режим масштабирования (Растягивать, Пропорционально и другие) задаётся в свойствах рисунка в макете.
Когда картинка лежит в присоединённых файлах БСП, двоичные данные получают функцией РаботаСФайлами.ДвоичныеДанныеФайла(ПрисоединенныйФайл).
Логотип в типовой форме через расширение
Править макет типовой конфигурации напрямую — значит снять её с поддержки и мучиться при каждом обновлении. Правильнее сделать расширение конфигурации .
- В конфигураторе создайте расширение (
Конфигурация → Расширения конфигурации, кнопка «Добавить»). - Заимствуйте общий макет или объект, которому принадлежит печатная форма.
- Измените заимствованный макет: добавьте рисунок
Логотипв нужную область. - В модуле расширения перехватите процедуру вывода шапки и подставьте данные картинки кодом выше.
- Обновите конфигурацию базы данных и проверьте печать на тестовом документе.
После обновления типовой конфигурации откройте расширение и убедитесь, что заимствованный макет не разошёлся с новым типовым.
Поле картинки на управляемой форме
На форме картинку показывает элемент «Поле картинки». Ему нужен реквизит формы типа Строка, в котором лежит адрес картинки: адрес во временном хранилище или навигационная ссылка.
Загрузка файла пользователем с последующим показом:
&НаКлиенте
Процедура ЗагрузитьКартинку(Команда)
Оповещение = Новый ОписаниеОповещения("ПослеПомещенияФайла", ЭтотОбъект);
НачатьПомещениеФайла(Оповещение, , , Истина, УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ПослеПомещенияФайла(Результат, Адрес, ВыбранноеИмяФайла, ДополнительныеПараметры) Экспорт
Если Не Результат Тогда
Возврат;
КонецЕсли;
АдресКартинки = Адрес; // реквизит формы, к нему привязано поле картинки
Модифицированность = Истина;
КонецПроцедуры
Чтобы сохранить картинку
в элементе справочника, заведите реквизит типа ХранилищеЗначения и запишите его на сервере:
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
Если ЭтоАдресВременногоХранилища(АдресКартинки) Тогда
Данные = ПолучитьИзВременногоХранилища(АдресКартинки);
ТекущийОбъект.Изображение = Новый ХранилищеЗначения(Данные);
КонецЕсли;
КонецПроцедуры
При открытии записанного элемента адрес для поля берите навигационной ссылкой на реквизит, без чтения данных в форму:
АдресКартинки = ПолучитьНавигационнуюСсылку(Объект.Ссылка, "Изображение");
Иконки и картинки самой конфигурации
Для кнопок, команд и декораций не храните изображения в данных. Добавьте их в Общие → Общие картинки в конфигураторе и обращайтесь как БиблиотекаКартинок.ИмяКартинки. Такие картинки входят в конфигурацию и попадают ко всем пользователям с обновлением.
Ссылка на внешнее изображение вместо файла в базе
Иногда фото товаров уже лежат на сайте или в облаке, и копировать их в базу не хочется. Варианты такие:
- 🔗 Ссылка как текст. Пользователь заводит дополнительный реквизит типа «Строка» и вставляет туда адрес. Картинки в карточке не будет, но ссылку можно открыть в браузере.
- 🌐 Поле HTML-документа. На форме размещают поле HTML и формируют страницу с тегом
<img src="https://...">. Браузерный компонент сам загрузит картинку по адресу. - ⬇️ Загрузка с кэшированием. Код скачивает файл через
HTTPСоединениеодин раз и сохраняет его в базе. Дальше картинка открывается без интернета.
Для печатных форм подходит только третий путь: рисунку табличного документа нужны двоичные данные, ссылку он не отобразит.
Внешняя ссылка ломается без предупреждения: сайт переехал, файл переименовали — и в 1С пусто. Для товаров, которые вы печатаете в прайсах и каталогах, держите копию изображения в базе.
База знаний с иллюстрациями внутри 1С
Инструкции для сотрудников с картинками удобно хранить прямо в базе. Для этого в справочник (например, «Статьи базы знаний») добавляют реквизит типа ХранилищеЗначения, а на форму — поле форматированного документа.
Форматированный документ поддерживает текст с оформлением, списки, ссылки и встроенные картинки. Пользователь вставляет изображение кнопкой на панели редактирования поля, а при записи документ целиком сохраняется в хранилище:
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
ТекущийОбъект.Содержание = Новый ХранилищеЗначения(СодержаниеСтатьи, Новый СжатиеДанных(9));
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
Значение = ТекущийОбъект.Содержание.Получить();
Если ТипЗнч(Значение) = Тип("ФорматированныйДокумент") Тогда
СодержаниеСтатьи = Значение;
КонецЕсли;
КонецПроцедуры
Здесь СодержаниеСтатьи — реквизит формы типа ФорматированныйДокумент. Если статьи нужно выгружать на сайт, используйте метод ПолучитьHTML: он возвращает текст разметки и структуру вложенных картинок.
Если программиста нет, есть простой вариант на типовом функционале: справочник с описанием и присоединёнными скриншотами. Читать менее удобно, но картинки хранятся и ищутся по элементу.
Как не утяжелить базу картинками
Тысяча фото по 3 МБ — это 3 ГБ лишнего в базе, в резервных копиях и в каждой выгрузке .dt. Вот что помогает.
Хранение файлов в томах на диске
В конфигурациях на БСП файлы можно хранить не в таблицах базы, а в томах — папках на сервере. Настройка находится в разделе Администрирование → Общие настройки, в группе работы с файлами: включите хранение в томах и опишите хотя бы один том с путём к папке.
- 💾 База и её резервные копии становятся меньше.
- 📁 Папку томов нужно бэкапить отдельно, иначе при восстановлении картинки пропадут.
- 🔐 У пользователя, от имени которого работает сервер 1С, должны быть права на запись в эту папку.
Там же задаётся максимальный размер загружаемого файла: ограничение защищает базу от сканов по 50 МБ.
Правила для разработчика
- 🚫 Не читайте реквизит-хранилище в запросе списка. Каждая строка потащит за собой картинку целиком, и форма списка будет открываться секундами.
- 🔗 Показывайте картинку через
ПолучитьНавигационнуюСсылку: платформа отдаст данные только когда поле реально видно. - 🗜️
СжатиеДанныхвХранилищеЗначенияполезно для текста и BMP, но почти ничего не даёт для JPG и PNG — они уже сжаты. - 🧹 Временное хранилище очищайте или привязывайте к
УникальныйИдентификаторформы, чтобы данные удалялись при её закрытии. - 📐 Для превью в списках храните отдельную уменьшенную копию, а оригинал открывайте по запросу.