Я до сих пор не могу понять, почему 1С прячет от пользователя коды маркировки (КМ) в документах? Один значок в табличной части "Товары" - это все, что вам доступно.
Почему бы не сделать удобные инструменты для работы с КМ в документах: выгружать/загружать в текстовые файлы, осуществлять поиск документов по КМ, проверять через API и делать разбор данных и т.п.?
Это странная позиция 1С. Особенно, если учесть, что все для этого они уже сделали. Для хранения КМ в документах 1С предусмотрела специальную табличную часть "ШтрихкодыУпаковок", а сами КМ - это элементы справочника "ШтрихкодыУпаковокТоваров"
Если вы используете маркировку в работе, то мой вам совет. Прежде всего, добавьте её отображение в документах. Хорошо, что это делается относительно легко, без серьезных изменений 1С.
Создайте расширение конфигурации и приступим.
Пробрасываем в расширение конфигурации процедуры из модуля формы документа "ПриСозданииНаСервереПосле" и добавьте вызов процедуры программного добавления табличной части на форме:
&НаСервере
Процедура ИТ_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
ИТ_ОбщиеИзмененияУФ.ВывестиТЧШтрихкодыУпаковок(ЭтаФорма);
КонецПроцедуры
Конечно, можно не добавлять в расширение конфигурации модули форм всех документов, где используется маркировка, а вместо этого, использовать типовой вызов для всех документов, любезно предусмотренный компанией 1С, через общий модуль "МодификацияКонфигурацииПереопределяемый.ПриСозданииНаСервере".
Однако помните, эта процедура вызывается со всех форм, и каждый раз вам придется проверять вид документа или непосредственно наличие табличной части "ШтрихкодыУпаковок" в метаданных документа. Сами выбирайте свой путь самурая, главное, чтоб вызывалась процедура "ВывестиТЧШтрихкодыУпаковок".
Итак.
Создаем общий модуль "ИТ_ОбщиеИзмененияУФ" и добавляем в нем вызываемую процедуру "ВывестиТЧШтрихкодыУпаковок".
Задача процедуры - программно вывести необходимую нам табличную часть на форму:
Процедура ВывестиТЧШтрихкодыУпаковок(ЭтаФорма) Экспорт
ИТ_РаботаСУправляемойФормой.ДобавитьГруппу(ЭтаФорма,"ИТ_ГруппаШтрихкодыУпаковок","Штрихкоды упаковок","ГруппаСтраницы",ВидГруппыФормы.Страница);
ИТ_РаботаСУправляемойФормой.ДобавитьТаблицу(ЭтаФорма,"ИТ_ШтрихкодыУпаковок","Штрихкоды упаковок", "ИТ_ГруппаШтрихкодыУпаковок","Объект.ШтрихкодыУпаковок");
ИТ_РаботаСУправляемойФормой.ДобавитьПоле(ЭтаФорма,ВидПоляФормы.ПолеВвода,"НомерСтроки","№","ИТ_ШтрихкодыУпаковок","Объект.ШтрихкодыУпаковок.НомерСтроки");
ИТ_РаботаСУправляемойФормой.ДобавитьПоле(ЭтаФорма,ВидПоляФормы.ПолеВвода,"ШтрихкодУпаковки","Штрихкод упаковки","ИТ_ШтрихкодыУпаковок","Объект.ШтрихкодыУпаковок.ШтрихкодУпаковки");
ИТ_РаботаСУправляемойФормой.ДобавитьПоле(ЭтаФорма,ВидПоляФормы.ПолеВвода,"Номенклатура","Номенклатура","ИТ_ШтрихкодыУпаковок","Объект.ШтрихкодыУпаковок.ШтрихкодУпаковки.Номенклатура");
ИТ_РаботаСУправляемойФормой.ДобавитьПоле(ЭтаФорма,ВидПоляФормы.ПолеВвода,"Характеристика","Характеристика","ИТ_ШтрихкодыУпаковок","Объект.ШтрихкодыУпаковок.ШтрихкодУпаковки.Характеристика");
//Специальная роль "ИТ_РедактированиеТЧШтрихкодыУпаковок" с правами на редактирование кодов маркировки в документе
ЭтаФорма.Элементы.ИТ_ШтрихкодыУпаковок.ТолькоПросмотр = НЕ Пользователи.РолиДоступны("ИТ_РедактированиеТЧШтрихкодыУпаковок");
//Кнопки действий с КМ (не входит в тему нашей статьи)
//ИТ_РаботаСУправляемойФормой.ДобавитьКоманду(ЭтаФорма,"ИТ_ВыгрузитьМаркерыИзДокументаВФайл","Выгрузить маркеры",ЭтаФорма.Элементы.ИТ_ШтрихкодыУпаковокКоманднаяПанель,"ИТ_ВыгрузитьМаркерыИзДокументаВФайл");
//ЭтаФорма.Элементы.КнопкаИТ_ВыгрузитьМаркерыИзДокументаВФайл.Картинка = БиблиотекаКартинок.ИТ_ЗагрузитьФайл;
КонецПроцедуры
В примере видно, что мы используем самописные процедуры работы с управляемыми формами. По их названиям вы поймете, что они делают.
Но, если вы хотите подробности, то приводим пример реализации общего модуля по работе с управляемыми формами:
Создаем отдельную роль "ИТ_РедактированиеТЧШтрихкодыУпаковок", которая сможет работать с маркировкой, а для остальных данную табличную часть делаем только для просмотра. Это защита от дурных рук.
Попутно можно программно добавить команды на форму (в примере они закомментированы).
Получаем табличную часть с КМ, с которыми можно работать и анализировать
Вот так...5 минут и работать станет удобней.
А теперь минутка рекомендаций для 1С:
Я рекомендую 1С добавить инструменты по работе с КМ:
- Поиск документов по КМ.
Только это должен быть не банальный поиск по справочнику, а поиск по хэшу с предварительной нормализаций введенного КМ в строку поиска, с удалением всех нечитаемых символов и криптохвостов (проверочных кодов) пришедших из сканера. В поиск, конечно, нужно включать и вышестоящие групповые или даже транспортные упаковки, если такая информация у вас сохраняется в 1С. Как-то так:
- Определение номенклатуры по КМ.
ERP умеет искать номенклатуру по штрихкодам, но не по КМ...а могла бы
Надеюсь, вместе мы сделаем 1С удобней для всех.
Вступайте в нашу телеграмм-группу Инфостарт