Массовое создание штрихкодов по приходной накладной в УНФ, редакция 1.6 (1.6.26.185), УНФ, редакция 3.0 (3.0.2.178)

14.03.23

Учетные задачи - Логистика, склад и ТМЦ

Для ускорения работы с номенклатурой в УНФ есть возможность автоматизировать массовое создание штрихкодов для номенклатуры.

Скачать файлы

Наименование Файл Версия Размер
Массовое создание штрихкодов по приходной накладной в УНФ, редакция 1.6 (1.6.26.185), УНФ, редакция 3.0 (3.0.2.178):
.epf 9,23Kb
4
.epf 9,23Kb 4 Скачать

За последние несколько лет, очень сильно распространилась  маркировка товаров и во многих случаях, работа на складе и в магазине происходит уже по кодам маркировки. Но, всеми любимые коды типа EAN13, ещё долгое время не будут вытеснены полностью и будут служить надежным вариантом учета складских остатков. Регулярно для всех программистов возникает задача по ускорению и оптимизации работы складских работников путем сокращения ручных операции. Сделать оптимизацию работы можно различными способами, например, загрузить необходимую информацию о номенклатуре по обмену или через файл загрузки. Но иногда поставщикам лень делать какие-либо дополнительные действия. Поставщики отправляют через ЭДО документ и считают на этом свою миссию законченной, а между тем кладовщику кроме приемки самого товара и кодов маркировки надо завести штрихкоды «от производителя» или сформировать и записать собственные.

В данной статье мы рассмотрим вариант с приходом маркированного товара от производителя и формирования штрихкодов по коду маркировки с выделением из него GTIN, который поставщик использовал для заказа кода маркировки. Полученный GTIN используем для формирования штрихкода EAN13. GTIN является уникальным идентификатором товара и именно его производители, очень часто использую для печати своих EAN13.

Пример протестирован на Управление нашей фирмой, редакция 1.6 (1.6.26.185), Управление нашей фирмой, редакция 3.0 (3.0.2.178).

Задача обработки после принятия маркированного товара и проверки кодов маркировки, сформировать по полученным кодам маркировки штрихкоды EAN13. Если, товар не маркированный, то чтобы не заходить в каждую карточку товара для формирования и записи штрихкода, сформировать и записать свои штрихкоды штучного товара сразу для всех «Приходной накладной». Разберем код маркировки, взятый как случайный пример с сайта честного знака (01)04660068212768(21)JfdaC6MeDQEMz91ffd0929ymi3p633GKY5Vv1T6olD8LdVe0g+jSquYWSP4bDZU53OIkf8Mqbnhu1guGXz8FN6IRrsWThu/DOGdoQ5D6DcA==

Нажимаем на кнопку обработки «Вычислить штрихкоды» и получаем результат. Обратите внимание на начало кода как он должен быть напечатан по всем правилам «(01)04660068212768», GTIN 04660068212768, если убрать у него вначале ноль, тогда как раз и получается EAN13 4660068212768. Я сделал очень простой код, который в запросе использует «Подстроку» и начиная с 6 символа отрезает 13 символов «ПОДСТРОКА(ПриходнаяНакладнаяШтрихкодыУпаковок.ШтрихкодУпаковки.ЗначениеШтрихкода, 6, 13)». Если у поставщика не правильно сформированы коды маркировка, тогда потребуется обрабатывать ошибки отдельно. Не забудьте нажать кнопку «Записать штрихкоды», только после этого они сохранятся! С формированием штрихкода по коду маркировки разобрались, теперь посмотрим, что делать, если к нам пришел не маркированный товар, а нам нужно быстро присвоить штрихкоды. Для начала формирования собственных штрихкодов, так же нажимаем на кнопку обработки «Вычислить штрихкоды», в обработку загружается номенклатура и характеристика, но штрихкоды не заполнены. Для работы потребуется,чтобы в программе было включено формирование собственных штрихкодов. Если формирование собственных штрихкодов включено, нажимаем на кнопку «Сгенерировать и записать свои штрихкоды. Стандартный механизм генерации штрихкодов учитывает только записанные штрихкоды и благодаря этому достигается уникальность штрихкодов в базе данных, поэтому сразу после формирования нового штрихкода, его приходится записывать, чтобы сформировать новый. После выполнения записи штрихкодов, они появятся на форме обработки, повторно записывать их в базу данных не нужно. Ниже я приведу весь код использованный в обработке. Если вы хотите, вставить в 1С как внешнею обработку не забудьте в «модуль объекта» добавить  «СведенияОВнешнейОбработке». Текст «СведенияОВнешнейОбработке» будет приведен после текста модуля формы с соответствующим комментарием.

//// Текст для модуля формы обработки

&НаКлиенте

Процедура ВычислитьШтрихкоды(Команда)

               //// очищаем таблицу 

               МаркировкаТаб.Очистить(); 

               //// запросом находим номенклатуру и если есть коды маркировки вычисляем по ним штрихкод для записи EAN13

               ВычислитьШтрихкодыНаСервере();

               ///// создаем переменную для проверки дублей штрихкодов

               КоличествоВ1С = 0;

               //// готовим данные для сообщения количества дублей штрихкодов

               Для каждого Строка Из МаркировкаТаб Цикл

                              Если Строка.ЕстьВ1С = ИСТИНА Тогда

                                            КоличествоВ1С = КоличествоВ1С +1;  

                              КонецЕсли;

               КонецЦикла;

               //// выводим предупреждение если есть дубли штрихкодов

               Если КоличествоВ1С >0 Тогда

                              //// формируем текст для предупреждения, чтобы не использовать модальный режим 

                              ТекстПредупрежденияКарта = "В 1С уже есть " + КоличествоВ1С + " штрихкодов. Для отмеченых строк штрихкоды создаваться не будут.";

                              //// выводим предупреждение для пользователя       

                              ПоказатьПредупреждение(,ТекстПредупрежденияКарта, 100,"Проверьте таблицу,есть дубли штрихкодов!");

               КонецЕсли;

КонецПроцедуры



&НаСервере

Процедура ВычислитьШтрихкодыНаСервере()

               //// в запросе используем левое соединение таблиц приходной накладной "Запасы" и "ШтрихкодыУпаковок".             

               Запрос = Новый Запрос;

               Запрос.Текст =

               "ВЫБРАТЬ РАЗЛИЧНЫЕ

               |             ПриходнаяНакладнаяЗапасы.Номенклатура КАК Номенклатура,

               |             ПриходнаяНакладнаяЗапасы.Характеристика КАК Характеристика,

               |               ПОДСТРОКА(ПриходнаяНакладнаяШтрихкодыУпаковок.ШтрихкодУпаковки.ЗначениеШтрихкода, 6, 13) КАК ШтрихкодУпаковкиЗначениеШтрихкода

               |ПОМЕСТИТЬ ШтрихкодыПоПриходнойТаб

               |ИЗ

               |             Документ.ПриходнаяНакладная.Запасы КАК ПриходнаяНакладнаяЗапасы

               |                            ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПриходнаяНакладная.ШтрихкодыУпаковок КАК ПриходнаяНакладнаяШтрихкодыУпаковок

               |                            ПО (ПриходнаяНакладнаяШтрихкодыУпаковок.Ссылка = ПриходнаяНакладнаяЗапасы.Ссылка)

               |                                          И ПриходнаяНакладнаяЗапасы.Номенклатура = ПриходнаяНакладнаяШтрихкодыУпаковок.ШтрихкодУпаковки.Номенклатура

               |                                          И ПриходнаяНакладнаяЗапасы.Характеристика = ПриходнаяНакладнаяШтрихкодыУпаковок.ШтрихкодУпаковки.Характеристика

               |ГДЕ

               |             ПриходнаяНакладнаяЗапасы.Ссылка = &Ссылка

               |;

               |

               |////////////////////////////////////////////////////////////////////////////////

               |ВЫБРАТЬ

               |             ШтрихкодыПоПриходнойТаб.Номенклатура КАК Номенклатура,

               |             ШтрихкодыПоПриходнойТаб.Характеристика КАК Характеристика,

               |             ШтрихкодыПоПриходнойТаб.ШтрихкодУпаковкиЗначениеШтрихкода КАК ШтрихкодУпаковкиЗначениеШтрихкода,

               |             ВЫБОР

               |                            КОГДА ШтрихкодыПоПриходнойТаб.ШтрихкодУпаковкиЗначениеШтрихкода = ШтрихкодыНоменклатуры.Штрихкод

               |                                          ТОГДА ИСТИНА

               |                            ИНАЧЕ ЛОЖЬ

               |             КОНЕЦ КАК ЕстьВ1С

               |ИЗ

               |             ШтрихкодыПоПриходнойТаб КАК ШтрихкодыПоПриходнойТаб

               |                            ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ШтрихкодыНоменклатуры КАК ШтрихкодыНоменклатуры

               |                            ПО ШтрихкодыПоПриходнойТаб.ШтрихкодУпаковкиЗначениеШтрихкода = ШтрихкодыНоменклатуры.Штрихкод";

              

               //// устанавливаем параметры запроса. В нашем случаи, это ссылка на выбранный документ

               Запрос.УстановитьПараметр("Ссылка", Объект.ПриходнаяНакладная);

               //// выполняем запрос

               РезультатЗапроса = Запрос.Выполнить();

               //// выгружаем полученные данные для загрузки в таблицу

               ДляВыгрузкиТаб = РезультатЗапроса.Выгрузить();

               //// загружаем результат выгрузки в табличную часть обработки

               МаркировкаТаб.Загрузить(ДляВыгрузкиТаб);

              

КонецПроцедуры



&НаКлиенте

Процедура ЗаписатьШтрихкоды(Команда)

               //// вызываем серверную процедуру

               ЗаписатьШтрихкодыНаСервере();

КонецПроцедуры



&НаСервере

Процедура ЗаписатьШтрихкодыНаСервере()

               //// из табличной части обработки получем: номенклатуру ,характеристику и штрихкод для записи в регистр сведений

               Для каждого Строка Из МаркировкаТаб Цикл

                              //// по условию отбираем строки только которые не являются дублями штрихкодов

                              Если  Строка.ЕстьВ1С = ЛОЖЬ Тогда

                                            //// в УНФ штрихкоды храняться в регистре сведений "ШтрихкодыНоменклатуры", создаем запись

                                            НовыйШтрихкод = РегистрыСведений.ШтрихкодыНоменклатуры.СоздатьМенеджерЗаписи();   

                                            НовыйШтрихкод.Номенклатура = Строка.Номенклатура;

                                            НовыйШтрихкод.Характеристика = Строка.Характеристика;

                                            НовыйШтрихкод.Штрихкод = Строка.ШтрихкодУпаковкиЗначениеШтрихкода;

                                            //// используем "попытку", чтобы в случаи ошибки знать подробности без захода в журнал регистрации

                                            Попытка

                                                           НовыйШтрихкод.Записать();

                                            Исключение

                                                           //// ОписаниеОшибки() получает краткое описание для сообщения пользователю

                                                           ОшибкаДляПользователя = ОписаниеОшибки();

                                                           Сообщить("Запись не удалась. " + ОшибкаДляПользователя);

                                            КонецПопытки;

                              КонецЕсли;

               КонецЦикла;

               //// для пользователя выводим сообщение об окончании работы

               Сообщить("Обработка закончена.");

              

КонецПроцедуры

//// команда устанавливает отметку во всей табличной части обработки

&НаКлиенте

Процедура УстановитьОтметку(Команда)

               Для каждого Строка Из МаркировкаТаб Цикл

                              Строка.ЕстьВ1С = ИСТИНА;

               КонецЦикла;

КонецПроцедуры

//// команда снимает отметку во всей табличной части обработки

&НаКлиенте

Процедура СнятьОтметку(Команда)

               Для каждого Строка Из МаркировкаТаб Цикл

                              Строка.ЕстьВ1С = ЛОЖЬ;

               КонецЦикла;

КонецПроцедуры

//// команда использует стандартный механизм генерации штрихкодов для штучного товара УНФ,

//// так как следующий уникальный штрихкод можно получить только после записи, записываем полученный до генерации следующего

&НаКлиенте

Процедура СгенерироватьСвоиШтрихкоды(Команда)

               //// генерируем штрихкоды по табличной части обработки

               Для каждого Строка Из МаркировкаТаб Цикл

                              Если Строка.ЕстьВ1С = ЛОЖЬ Тогда

                                            //// говоим данные для записи штрихкода

                                            НоменклатураДляЗаписи = Строка.Номенклатура;

                                            ХарактеристикаДляЗаписи = Строка.Характеристика;

                                            ШтрихкодДляЗаписи = СформироватьШтрихкодEAN13();

                                            Строка.ШтрихкодУпаковкиЗначениеШтрихкода =ШтрихкодДляЗаписи;

                                            //// записываем штрихкод

                                             ЗаписатьСвоиШтрихкодыНаСервере(НоменклатураДляЗаписи,ХарактеристикаДляЗаписи,ШтрихкодДляЗаписи);

                              КонецЕсли;

               КонецЦикла;

               //// сообщаем пользователю об окончании работы

               Сообщить("Обработка закончена.");

КонецПроцедуры



// Формирует штрихкод EAN13.

//

&НаСервереБезКонтекста

Функция СформироватьШтрихкодEAN13()

              

               Возврат РегистрыСведений.ШтрихкодыНоменклатуры.СформироватьШтрихкодEAN13();

              

КонецФункции // Сформировать   

//// записываем штрихкоды, которые уже были сгенерированы стандартной функцией УНФ

&НаСервере

Процедура ЗаписатьСвоиШтрихкодыНаСервере(НоменклатураДляЗаписи,ХарактеристикаДляЗаписи,ШтрихкодДляЗаписи)

               //// из полученных данных готовим необходимые поля для записи: Номенклатура, Характеристика, Штрихкод.

               НовыйШтрихкод = РегистрыСведений.ШтрихкодыНоменклатуры.СоздатьМенеджерЗаписи();   

               НовыйШтрихкод.Номенклатура = НоменклатураДляЗаписи;

               НовыйШтрихкод.Характеристика = ХарактеристикаДляЗаписи;

               НовыйШтрихкод.Штрихкод = ШтрихкодДляЗаписи;

               //// используем "попытку", чтобы в случаи ошибки знать подробности без захода в журнал регистрации

               Попытка

                              НовыйШтрихкод.Записать();

               Исключение

                              //// ОписаниеОшибки() получает краткое описание для сообщения пользователю

                              ОшибкаДляПользователя = ОписаниеОшибки();

                              Сообщить("Запись не удалась. " + ОшибкаДляПользователя);

               КонецПопытки;

КонецПроцедуры

//// текст для модуля объекта обработки

Функция СведенияОВнешнейОбработке() Экспорт

              

               ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.1.3.1");

              

               ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();

               ПараметрыРегистрации.Версия = "1.0";

               ПараметрыРегистрации.БезопасныйРежим = Ложь;

              

               НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();

               НоваяКоманда.Представление = НСтр("ru = 'Создание штрихкодов по приходной'");

               НоваяКоманда.Идентификатор = "Создание штрихкодов по приходной";

               НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы();

               НоваяКоманда.ПоказыватьОповещение = Истина;

              

               Возврат ПараметрыРегистрации;

              

КонецФункции

 

обработка штрихкоды массовое формирование УНФ Приходная накладная

См. также

SALE! 20%

Автоматический заказ поставщику в 1С: загрузка прайсов и анализ цен поставщиков для УТ 10.3, УТ 11, КА2, УНФ, УПП, ERP, Розница 2

Бюджетирование и планирование Оптовая торговля Розничная торговля Логистика, склад и ТМЦ Анализ продаж Платформа 1С v7.7 Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Оптовая торговля, дистрибуция, логистика Беларусь Украина Россия Казахстан Управленческий учет Платные (руб)

Система управления запасами для 1С помогает работать с запасами правильно: автоматически рассчитывает потребность и делает заказ поставщику, загружает прайсы, перемещает товары по филиалам, анализирует продажи и позволяет управлять ассортиментом.

28500 22800 руб.

21.04.2017    90185    105    39    

191

Модуль "Ответственное хранение" или фулфилмент (FBS / FBO) для 1С:УТ 11.5, КА 2.5, ERP 2.5

Логистика, склад и ТМЦ Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Оптовая торговля, дистрибуция, логистика Управленческий учет Платные (руб)

Модуль "Ответственное хранение" для 1С (УТ 11.5, КА 2.5, ERP 2.5) позволяет организовать учет ответственного хранения товаров с весовыми характеристиками, в том числе со сроком годности и личным кабинетом Поклажедателя. Модуль реализован в виде расширения конфигурации, устанавливается в режиме 1С:Предприятие 8 за 5 минут по инструкции, что позволяет оставить конфигурацию 1С на стандартной поддержке и продолжать получать стандартные обновления от фирмы "1С".

60000 руб.

09.06.2020    34317    27    57    

54

SALE! 10%

Загрузка номенклатуры из Excel в УТ11, КА 2, ERP 2, Розница 2. Дополнительные реквизиты и сведения, характеристики, картинки, цены, остатки

Загрузка и выгрузка в Excel Розничная торговля Логистика, склад и ТМЦ Ценообразование, анализ цен Прайсы Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Розница 2 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Управленческий учет Платные (руб)

Загрузка из файлов xls, xlsx, ods, csv, mxl в УТ11, КА 2, ERP 2, Розница 2. Задействованы все возможности конфигурации - заполнение реквизитов номенклатуры, дополнительных реквизитов и сведений, характеристики, доп.реквизиты и сведения характеристик. Дополнительные обработки для расширения возможностей.

10560 9504 руб.

29.10.2014    210184    620    524    

439

Загрузка номенклатуры c картинками (несколько потоков одновременно) и сопутствующими данными в базу и любые документы из yml, xls, xlsx, xlsm, ods, ots, csv для УТ 10.3, УТ 11 (все), БП 3, КА 2, ERP 2, УНФ 1.6/3.0, Розница 2

Загрузка и выгрузка в Excel Логистика, склад и ТМЦ Ценообразование, анализ цен Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Платные (руб)

Эволюция не стоит на месте - новая удобная версия функциональной обработки для Вашего бизнеса! Что же Вы получаете? Удобный и интуитивно понятный интерфейс с 3-мя этапами работы. 2 режима - автоматический и ручной. Чтение XLSX, XLSM, CSV, XML/YML форматов без офиса, на любом сервере! Визуальное связывание колонок файла и реквизитов простым перетаскиванием колонок. Создание или обновление номенклатуры с иерархией, характеристик, доп. реквизитов, упаковок, загрузка практически неограниченного количества картинок на одну номенклатуру (с возможностью загрузки в несколько потоков одновременно), с хранением в томах или в базе. Загрузка номенклатуры поставщиков или поиск по их данным номенклатуры. Загрузка доп. реквизитов в характеристики. Загрузка штрихкодов с генерацией новых. Создание элементов справочников и ПВХ "на лету" для выбранных реквизитов. (Обновление от 11.12.2023, версия 9.5 - 9.9)

13200 руб.

20.11.2015    150727    367    375    

501

AS WMS: автоматизация склада с адресным хранением с помощью ТСД

Логистика, склад и ТМЦ Платформа 1С v8.3 Россия Платные (руб)

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

40000 руб.

26.07.2023    3232    13    0    

8
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. user1684662 12.05.23 11:10 Сейчас в теме
Обработка только по приходной работает? А если мне нужно просто для всей номенклатуры с отбором?
Оставьте свое сообщение