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

14.03.23

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

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

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

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

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

За последние несколько лет, очень сильно распространилась  маркировка товаров и во многих случаях, работа на складе и в магазине происходит уже по кодам маркировки. Но, всеми любимые коды типа 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 = 'Создание штрихкодов по приходной'");

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

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

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

              

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

              

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

 

Вступайте в нашу телеграмм-группу Инфостарт

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

См. также

Логистика, склад и ТМЦ 1С:Предприятие 8 Россия Платные (руб)

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

50000 руб.

26.07.2023    11259    61    0    

12

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

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

89900 руб.

09.06.2020    56330    43    60    

78

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

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

12444 руб.

29.10.2014    232601    750    534    

498

Обмен с ГосИС Логистика, склад и ТМЦ Программист Пользователь 1С:Предприятие 8 1С:Розница 2 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Платные (руб)

Внешняя обработка для инвентаризации кодов маркировки в системе "Честный знак". Позволяет быстро определить и списать коды маркировки проданного, испорченного, утраченного (полный перечень причин списания указан ниже)  товара, которые всё ещё числятся за организацией. Привести в соответствие остатки маркированного товара программы 1С и системы "Честного знака".

6649 руб.

09.01.2024    16702    169    30    

158

Операции по ВЭД Оптовая торговля Розничная торговля Логистика, склад и ТМЦ Мастера заполнения Бухгалтер 1С:Предприятие 8 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Обработка значительно расширяет функционал типовой конфигурации «1С:Бухгалтерия предприятия» и позволяет осуществлять автоматическое заполнение ГТД в документах «Реализация товаров и услуг», «Списание товаров», «Отчет о розничных продажах», «Отчет комиссионера (агента) о продажах», «Требование-накладная», «Возврат товаров от покупателя», «Комплектация номенклатуры», «Безвозмездная передача», «Отчет производства за смену». Обработка предназначена для работы в конфигурации «1С:Бухгалтерия предприятия 8, редакция 3.0» Есть версия обработки оптимизированная для работы в 1CFresh

12200 руб.

19.06.2012    146345    318    81    

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