В процессе автоматизации складского учета или розничной торговли часто возникает задача ведения учета в разрезе конкретных экземпляров товаров. Типичный пример: учет офисной мебели по инвентарным номерам или торговля бывшей в употреблении техникой, где для каждого телефона необходимо зафиксировать его текущее состояние (царапины, сколы) с помощью фотографии. В этой статье мы проанализируем ситуацию и разберем по шагам несколько способов реализации этой задачи в среде «1С:Предприятие».
Самый логичный путь в типовых конфигурациях (таких как УТ 11, ERP или КА 2) — это использование характеристик. Если для вида номенклатуры настроено ведение индивидуальных характеристик, то каждый «инвентарный номер» по сути становится отдельным элементом справочника ХарактеристикиНоменклатуры.
Рассмотрим подробнее, как добавить к ним изображения:
ХарактеристикиНоменклатурыПрисоединенныеФайлы.Проанализируем преимущества: этот метод является наиболее «штатным». При открытии карточки характеристики пользователь увидит стандартную «скрепку», через которую сможет загрузить фото. Для отображения картинки непосредственно на форме номенклатуры потребуется небольшая доработка кода для считывания основного изображения владельца.
В конфигурациях «1С:Управление торговлей» и ERP для поштучного учета часто применяются серии. Серия может выступать в роли уникального идентификатора (серийного или инвентарного номера). Выясним причину, по которой этот метод иногда предпочтительнее: серии позволяют отслеживать движения конкретного экземпляра по всем складским документам без создания огромного количества характеристик.
Для реализации хранения фото в разрезе серий можно использовать следующий подход:
Создадим регистр сведений или отдельный вспомогательный справочник. Рассмотрим пример структуры регистра сведений КартинкиСерийНоменклатуры:
Номенклатура (Тип: СправочникСсылка.Номенклатура)Серия (Тип: СправочникСсылка.СерииНоменклатуры)Файл (Тип: СправочникСсылка.СерииНоменклатурыПрисоединенныеФайлы)Такая структура позволит избежать дублирования данных и обеспечит быстрый поиск изображения при сканировании серийного номера на складе.
Когда количество уникальных инвентарных единиц исчисляется десятками тысяч, хранение картинок непосредственно в базе данных SQL может привести к её чрезмерному росту и замедлению работы. Посмотрим на пример реализации через внешние тома хранения файлов.
В настройках системы «1С» можно включить хранение файлов в томах на диске. В этом случае в базе остается только ссылка на файл, а сама картинка лежит в сетевой папке. Рассмотрим подробнее логику работы программного кода для динамического отображения такой картинки:
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
// Маска имени файла: [КодНоменклатуры]_[ИнвентарныйНомер].jpg
ПутьКФайлу = ПолучитьПутьКТому() + ТекущийОбъект.Код + "_" + ТекущийОбъект.ИнвентарныйНомер + ".jpg";
Если ФайлСуществует(ПутьКФайлу) Тогда
АдресКартинки = ПоместитьВоВременноеХранилище(Новый ДвоичныеДанные(ПутьКФайлу));
КонецЕсли;
КонецПроцедуры
Этот подход позволяет сотрудникам контрольно-ревизионного управления (КРУ) оперативно просматривать фотографии, даже не заходя в 1С, просто открыв соответствующую папку на сервере.
Если конфигурация поддерживает механизм «Дополнительные сведения и реквизиты», мы можем добавить к характеристике или серии дополнительный реквизит с типом Значение реквизита объекта, указывающий на файл. Разберем по шагам настройку:
Важный момент: этот способ не требует программирования и позволяет выводить фото в отчеты с помощью стандартного конструктора компоновки данных (СКД).
Иногда фото требуется не навсегда, а только в момент совершения определенной операции (например, при фиксации брака в документе поступления). Проанализируем ситуацию, предложенную одним из участников обсуждения: создание табличной части Файлы непосредственно в документе.
В этом случае в табличной части создаются реквизиты:
ИдентификаторСтроки (для связи с основной ТЧ «Товары»);ДанныеФайла (тип ХранилищеЗначения).Хотя автор вопроса остановился на этом варианте, мы рекомендуем быть осторожными. Хранение BinaryData в табличных частях документов может значительно замедлить проведение этих документов и увеличит нагрузку на транзакционный лог базы данных. Оптимальнее все же использовать механизм ПрисоединенныеФайлы, который хранит данные в отдельных таблицах и не мешает оперативной работе с документами.
Подводя итог нашему анализу, можно выделить следующие рекомендации:
Используя предложенные методы, вы сможете создать надежную систему визуального контроля инвентарных единиц, которая поможет избежать злоупотреблений и повысит качество учета.