Как привязать уникальное фото к каждому инвентарному номеру или характеристике номенклатуры

Программист 1С v8.3 (Управляемые формы) Управленческий учет
← На главную

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

Метод 1. Использование справочника «Характеристики номенклатуры» и подсистемы БСП

Самый логичный путь в типовых конфигурациях (таких как УТ 11, ERP или КА 2) — это использование характеристик. Если для вида номенклатуры настроено ведение индивидуальных характеристик, то каждый «инвентарный номер» по сути становится отдельным элементом справочника ХарактеристикиНоменклатуры.

Рассмотрим подробнее, как добавить к ним изображения:

  1. Включим использование характеристик для конкретной номенклатурной позиции.
  2. Используем возможности Библиотеки стандартных подсистем (БСП). Для этого необходимо расширить состав типов для справочника присоединенных файлов. Обычно в типовых решениях уже существует справочник ХарактеристикиНоменклатурыПрисоединенныеФайлы.
  3. Если такого справочника нет, его нужно создать, указав владельцем справочник характеристик.

Проанализируем преимущества: этот метод является наиболее «штатным». При открытии карточки характеристики пользователь увидит стандартную «скрепку», через которую сможет загрузить фото. Для отображения картинки непосредственно на форме номенклатуры потребуется небольшая доработка кода для считывания основного изображения владельца.

Метод 2. Привязка через уникальные серии номенклатуры

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

Для реализации хранения фото в разрезе серий можно использовать следующий подход:

Создадим регистр сведений или отдельный вспомогательный справочник. Рассмотрим пример структуры регистра сведений КартинкиСерийНоменклатуры:

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

Метод 3. Хранение фотографий во внешних томах

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

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


&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
    // Маска имени файла: [КодНоменклатуры]_[ИнвентарныйНомер].jpg
    ПутьКФайлу = ПолучитьПутьКТому() + ТекущийОбъект.Код + "_" + ТекущийОбъект.ИнвентарныйНомер + ".jpg";
    Если ФайлСуществует(ПутьКФайлу) Тогда
        АдресКартинки = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ПутьКФайлу));
    КонецЕсли;
КонецПроцедуры

Этот подход позволяет сотрудникам контрольно-ревизионного управления (КРУ) оперативно просматривать фотографии, даже не заходя в 1С, просто открыв соответствующую папку на сервере.

Метод 4. Реализация через дополнительные реквизиты

Если конфигурация поддерживает механизм «Дополнительные сведения и реквизиты», мы можем добавить к характеристике или серии дополнительный реквизит с типом Значение реквизита объекта, указывающий на файл. Разберем по шагам настройку:

  1. Зайдем в раздел «Администрирование» — «Дополнительные реквизиты».
  2. Найдем объект «Характеристики номенклатуры».
  3. Добавим новый реквизит «Фото состояния».

Важный момент: этот способ не требует программирования и позволяет выводить фото в отчеты с помощью стандартного конструктора компоновки данных (СКД).

Метод 5. Использование табличных частей документов (вариант для специфических задач)

Иногда фото требуется не навсегда, а только в момент совершения определенной операции (например, при фиксации брака в документе поступления). Проанализируем ситуацию, предложенную одним из участников обсуждения: создание табличной части Файлы непосредственно в документе.

В этом случае в табличной части создаются реквизиты:

Хотя автор вопроса остановился на этом варианте, мы рекомендуем быть осторожными. Хранение BinaryData в табличных частях документов может значительно замедлить проведение этих документов и увеличит нагрузку на транзакционный лог базы данных. Оптимальнее все же использовать механизм ПрисоединенныеФайлы, который хранит данные в отдельных таблицах и не мешает оперативной работе с документами.

Резюме и рекомендации

Подводя итог нашему анализу, можно выделить следующие рекомендации:

  1. Для типовых решений: используйте расширение типа владельца в справочнике присоединенных файлов для характеристик или серий. Это сохранит целостность конфигурации и обеспечит поддержку стандартных функций.
  2. Для высоконагруженных систем: настраивайте хранение в томах на диске. Это убережет базу от раздувания.
  3. Для идентификации: если фото нужно КРУ для проверки («не продают ли новый телефон как брак»), лучше всего делать привязку к серии номенклатуры, так как серия уникальна для каждого изделия.

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

← На главную