Фотографии в 1С 8.3: съёмка, прикрепление к карточке, хранение и печать
Содержание
Камеры в обычной программе 1С на компьютере нет: чтобы сделать фото в 1С: Предприятие, товар снимают телефоном или фотоаппаратом, а готовый файл прикрепляют к карточке. Делается это в карточке номенклатуры: щелчок по области картинки или команда присоединённых файлов (значок скрепки), затем выбор файла с диска.
Снимать прямо из программы можно только в мобильном клиенте и мобильных приложениях 1С: там при добавлении файла доступна камера телефона. Всё остальное — хранение, печать, массовая загрузка — одинаково для любого способа съёмки.
Как снять и подготовить фото до загрузки в 1С
Большинство проблем с картинками в базе начинается не в 1С, а на этапе съёмки. Снимок с телефона весит 3–8 МБ и имеет размер 4000×3000 пикселей. Для карточки товара и печатной формы это в десятки раз больше нужного.
Подготовьте файл заранее:
- 📷 Снимайте на светлом однотонном фоне, товар по центру, без бликов.
- ✂️ Обрежьте лишнее поле вокруг товара.
- 📐 Уменьшите длинную сторону до 800–1200 пикселей — для экрана и печати на А4 этого достаточно.
- 💾 Сохраните в JPEG с качеством 80–85%. Итоговый вес — 100–300 КБ.
- 🏷️ Назовите файл по артикулу или коду товара:
A-1024.jpg. Это пригодится при массовой загрузке.
Пакетно уменьшить сотню снимков удобно бесплатными программами вроде IrfanView или XnConvert: задаёте размер и качество один раз и прогоняете всю папку.
Если в учёте нужен не товар, а документ (скан накладной, чек, договор), лучше использовать сканер или приложение-сканер на телефоне. Такие файлы прикрепляют к документу так же, через присоединённые файлы.
Как прикрепить фото к карточке номенклатуры
В типовых конфигурациях на платформе 8.3 (Бухгалтерия предприятия 3.0, Управление торговлей 11, Комплексная автоматизация, ERP) механизм один — подсистема «Присоединённые файлы». Различается только вид карточки.
Бухгалтерия предприятия 3.0
- Откройте
Справочники → Номенклатураи нужную карточку. - Щёлкните по области картинки в карточке — откроется выбор файла.
- Укажите подготовленный снимок и нажмите «Открыть».
- Запишите карточку.
Файл сохраняется как присоединённый к этому элементу, а в карточке показывается как основное изображение. Остальные файлы (паспорт, сертификат, второе фото) добавляют через команду присоединённых файлов в шапке карточки.
Управление торговлей 11 и ERP
- Откройте
НСИ и администрирование → Номенклатура(в УТ 11 раздел так и называется) и карточку товара. - Щёлкните по области изображения или откройте список файлов карточки.
- Добавьте один или несколько снимков с диска.
- Если файлов несколько, выберите тот, который станет основным изображением: он показывается в карточке, подборе и выгружается на сайт первым.
Фото, загруженное в карточку, но не выбранное основным, в карточке не отображается. Пользователь думает, что загрузка «не сработала», и добавляет файл ещё раз — в базе копятся дубли.
Через перетаскивание
Файл можно перетащить мышью из Проводника прямо в список присоединённых файлов. Это быстрее, когда к одной карточке нужно добавить пять-шесть снимков.
| Действие | Бухгалтерия 3.0 | УТ 11 / ERP |
|---|---|---|
| Открыть справочник | Справочники → Номенклатура | НСИ и администрирование → Номенклатура |
| Добавить фото | щелчок по картинке в карточке | щелчок по картинке или список файлов |
| Несколько фото на товар | да, через присоединённые файлы | да, с выбором основного |
Какие форматы и размеры поддерживает 1С
Платформа 8.3 показывает в поле картинки распространённые растровые форматы и SVG.
| Формат | Где уместен | Замечание |
|---|---|---|
| JPEG | фото товаров | основной вариант, лучший баланс веса и качества |
| PNG | логотипы, схемы, прозрачный фон | для фотографий весит в 3–5 раз больше JPEG |
| GIF, BMP, TIFF | старые архивы, сканы | BMP и TIFF без сжатия тяжёлые, лучше пересохранить |
| SVG | значки, векторные логотипы | для фотографий не подходит |
| HEIC (iPhone) | — | на Windows-клиенте обычно не отображается, конвертируйте в JPEG |
Отдельного жёсткого лимита на размер картинки у платформы нет. Ограничение задают типовые конфигурации: в настройках работы с файлами есть параметр максимального размера загружаемого файла. Если пользователь пытается приложить файл больше лимита, программа откажет с сообщением о превышении размера.
Хорошее правило: фото товара — не больше 500 КБ. Тысяча товаров по 300 КБ — это 300 МБ, по 5 МБ — уже 5 ГБ, и база начинает расти быстрее, чем учёт.
Где хранить фотографии: в базе или в томах на диске
Типовые конфигурации умеют хранить файлы двумя способами.
В информационной базе. Файл лежит внутри базы. Плюс — всё в одном месте, резервная копия базы включает и картинки. Минус — база разбухает, выгрузка в .dt и бэкап идут дольше.
В томах на диске. Файлы лежат в папке на сервере, база хранит только ссылку. Плюс — база остаётся компактной. Минус — папку нужно бэкапить отдельно и следить за правами доступа.
Хранение в томах включают в разделе Администрирование → Общие настройки, в группе настроек работы с файлами. После этого создают элемент справочника томов хранения: путь к папке, максимальный размер тома, порядок заполнения.
Требования к тому:
- 📁 Путь — сетевой UNC-путь вида
\\fileserver\1c-files\trade, а неD:\Фотона компьютере бухгалтера. - 🔐 В клиент-серверном варианте права на запись нужны учётной записи, под которой работает служба сервера 1С, а не пользователю Windows.
- 🗄️ В файловом варианте — всем пользователям, которые добавляют файлы.
Если включить тома, а ранее загруженные файлы оставить в базе, база не уменьшится сама. В типовых есть механизм переноса файлов из базы в тома — запускайте его вне рабочего времени, на большой базе он идёт часами.
| Критерий | В базе | В томах |
|---|---|---|
| До 1–2 тыс. фото | удобно | избыточно |
| Десятки тысяч фото | база растёт на гигабайты | рекомендуется |
| Резервное копирование | одним файлом | база + папка |
| Облачная база (1С:Фреш и т. п.) | единственный вариант | обычно недоступно |
Фото в печатных формах и отчётах
Пользователь без программиста может вывести фото в тех печатных формах, где разработчик конфигурации это предусмотрел. Например, в типовых этикетках и ценниках шаблон редактируется в конструкторе, и в некоторых шаблонах доступно поле изображения товара.
Если нужной печатной формы с картинкой нет, её делают через внешнюю печатную форму или расширение конфигурации — так типовая конфигурация останется без изменений и обновится без проблем.
Принцип вывода картинки в табличный документ:
- В макете печатной формы в нужную область добавляют объект «Рисунок» и задают ему имя, например
Фото. - При формировании печатной формы получают двоичные данные снимка.
- Присваивают картинку рисунку в области и выводят область.
// Область — область макета, в которой размещён рисунок с именем "Фото"
ДанныеФото = ПолучитьДанныеФото(Товар); // ДвоичныеДанные или Неопределено
Если ДанныеФото <> Неопределено Тогда
Область.Рисунки.Фото.Картинка = Новый Картинка(ДанныеФото);
КонецЕсли;
ТабДок.Вывести(Область);
Задайте рисунку в макете режим размера «Пропорционально». Тогда вертикальные и горизонтальные снимки впишутся в ячейку без искажений.
Для прайс-листа с фотографиями на 500 позиций особенно важен вес исходников. Табличный документ с тяжёлыми снимками формируется медленно и при сохранении в PDF превращается в файл на сотни мегабайт.
Фото в своей конфигурации: реквизит и поле картинки
Если вы дорабатываете свою конфигурацию без подсистемы присоединённых файлов, классическая схема такая:
- реквизит справочника
Фотос типомХранилищеЗначения; - реквизит формы
АдресКартинкис типом «Строка»; - поле картинки на форме, связанное с
АдресКартинки.
При открытии формы показываем сохранённое фото по навигационной ссылке, при загрузке — помещаем файл во временное хранилище, при записи — переносим его в реквизит.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если ЗначениеЗаполнено(Объект.Ссылка) Тогда
АдресКартинки = ПолучитьНавигационнуюСсылку(Объект.Ссылка, "Фото");
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ЗагрузитьФото(Команда)
Оповещение = Новый ОписаниеОповещения("ПослеПомещенияФайла", ЭтотОбъект);
НачатьПомещениеФайла(Оповещение, , , Истина, УникальныйИдентификатор);
КонецПроцедуры
&НаКлиенте
Процедура ПослеПомещенияФайла(Результат, Адрес, ВыбранноеИмяФайла, ДополнительныеПараметры) Экспорт
Если Результат Тогда
АдресКартинки = Адрес;
Модифицированность = Истина;
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
Если ЭтоАдресВременногоХранилища(АдресКартинки) Тогда
ДанныеФото = ПолучитьИзВременногоХранилища(АдресКартинки);
ТекущийОбъект.Фото = Новый ХранилищеЗначения(ДанныеФото);
КонецЕсли;
КонецПроцедуры
Сжатие Новый СжатиеДанных(9) для фото в JPEG почти ничего не даёт: формат уже сжат. Экономить место нужно на этапе подготовки файла, а не в коде.
Массовая загрузка фото: обмен с сайтом и пакет из папки
Вручную прикреплять фото к трём тысячам товаров никто не станет. Есть три рабочих пути.
1. Обмен с сайтом. Типовой обмен с интернет-магазином по формату CommerceML передаёт изображения номенклатуры вместе с товарами. Обычно фото ведут в 1С и выгружают на сайт, а не наоборот: так 1С остаётся единственным источником правды.
2. Загрузка из Excel . Стандартная загрузка табличных данных в типовых переносит текстовые и числовые поля — наименование, артикул, цены. Картинки из ячеек Excel она не забирает. Поэтому из Excel загружают справочник, а фото — отдельно, по артикулу.
3. Обработка «папка → карточки». Снимки лежат в папке, имя файла совпадает с артикулом. Обработка находит товар и прикрепляет файл. Для своей конфигурации с реквизитом Фото основа выглядит так:
&НаСервереБезКонтекста
Процедура ЗагрузитьИзКаталога(Каталог)
Файлы = НайтиФайлы(Каталог, "*.jpg");
Для Каждого Файл Из Файлы Цикл
Ссылка = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул", Файл.ИмяБезРасширения);
Если Ссылка.Пустая() Тогда
Сообщить(СтрШаблон("Не найден товар с артикулом %1", Файл.ИмяБезРасширения));
Продолжить;
КонецЕсли;
ТоварОбъект = Ссылка.ПолучитьОбъект();
ТоварОбъект.Фото = Новый ХранилищеЗначения(Новый ДвоичныеДанные(Файл.ПолноеИмя));
ТоварОбъект.Записать();
КонецЦикла;
КонецПроцедуры
Код выполняется на сервере, поэтому в клиент-серверном варианте папка должна быть доступна серверу 1С по сетевому пути. Для типовой конфигурации вместо записи в реквизит используют программный интерфейс подсистемы присоединённых файлов — так фото появится там же, где его ждёт пользователь.
Когда фото не загружается или не видно
Ошибки с картинками однотипны, и почти всегда их видно по симптому.
Как не раздуть базу фотографиями
Когда фото становится много, база растёт, бэкап идёт ночь, а список товаров открывается с задержкой. Что помогает:
- 📉 Лимит на входе. Договоритесь, что в базу попадают только подготовленные снимки до 500 КБ. Это дешевле, чем потом чистить.
- 🗂️ Тома вместо базы. От нескольких тысяч фото включайте хранение в томах и переносите туда старые файлы.
- 🧹 Удаление дублей. Пройдитесь по карточкам с несколькими одинаковыми снимками. Помеченные на удаление файлы физически исчезнут только после удаления помеченных объектов.
- 🔍 Контроль роста. В клиент-серверном варианте раз в квартал смотрите размер таблиц в СУБД: если лидирует таблица присоединённых файлов, пора переносить их в тома.
Удаление помеченных объектов и перенос файлов в тома выполняйте вне рабочего времени и после резервного копирования базы и папки томов.