![]() |
![]() |
![]() |
|
v7: Сканирование марок на нетленке 7.7 MWWRuza, Somebody, p-soft, runuts, den_oren, NorthWind, H A D G E H O G s, vis, Silgis, Builder, vsy, dedmoroz777, Prog_man, nick86, Fedor-1971, denk32, takefive, trad, uno-group, Злопчинский, mortal, vyaz, laeg, Vbirf, liap_ok, abfm, Djelf, hunter76, dchumak, ЕRPe, Crusher, ldo6, Ager, Шурик71, Chai Nic, s_trikozin, shuhard, BSV, skafandr, Олдж, Caesar, NikeArz, PLUT
| ☑ | ||
---|---|---|---|---|
0
Олдж
29.08.25
✎
09:40
|
Доброго всем дня, досталась самописная база на 7.7 (вообще ничего типового).
Из ТиС 7.7 вставлены обработки и процедуры касающиеся подключения оборудования. Необходимо прикрутить сканирование марок (табак, вода) при отгрузке. По хотению Зака, наборщик должен сплошняком просто "пропикать" марки, а они вносятся в заказ на наборку. Такое хотение упирается в определение номенклатуры из сканированной марки. На текущий момент идея: выделение штрих-кода из марки и по штрих-коду определять номенклатуру. Но есть марки, где штрих-кода нет. Например сканируют на отгрузку целиком паллету. Существует ли такой четкий алгоритм? Или пусть выбирают номенклатуру и только потом сканируют марки? |
|||
1
p-soft
29.08.25
✎
09:44
|
надо процессы разложить. между сканированием марки и сканированием паллеты большой логический разрыв.
|
|||
2
p-soft
29.08.25
✎
09:47
|
(1) да, марки проще сканировать через сканирование товара. но если ввести распознавание типа штрихкода, то можно из марок выдирать товар и сканировать только марки. можно даже ругаться, что вместо марки паллет подсунули.
|
|||
3
Олдж
29.08.25
✎
09:49
|
(2) Вот, такая же идея. Но бывает отгрузка либо штучно (мелкий клиент), либо паллетой (крупный оптовик)
Если отгрузка паллетой оптовику, вряд ли надо разбирать паллету и сканироватьпоштучно :-) Также передать транспортную марку паллеты да и всё. Можно ли из паллеты определить номенклатуру ? |
|||
4
p-soft
29.08.25
✎
09:56
|
(3) все сделать можно, но тема длинная. должна быть процедура формирования паллета, с хранением содержимого в системе учета. потом уже проще - определили что это паллет - определяем допустимые с ним действия и работаем
|
|||
5
p-soft
29.08.25
✎
09:58
|
(4) вообще, вы движетесь в сторону wms. тему можем голосом обсудить
|
|||
6
Злопчинский
29.08.25
✎
11:39
|
(5) работа с марками для 77 полностью поддерживается victuan1
См. www.ais-soft.ru И как правильно заметили - от сканирования марок до сканирования паллеты может много чего произойти. Начиная с того что совсем не обозначено как и откуда товар принимается. Если приходит паллетами с агрегацией, то при о грузке нетронутой паллеты все может быть просто. А может и какая-то бОльшая складская автоматизация по требуется как выше написали |
|||
7
Злопчинский
29.08.25
✎
13:02
|
И начинать надо не с вопросов отгрузки марок, а с приемки.
|
|||
8
H A D G E H O G s
29.08.25
✎
11:55
|
Кто в курсе, сети карают штрафами за пересорт хотя бы коробок в паллете? Речь про ЧЗ.
|
|||
9
p-soft
29.08.25
✎
11:59
|
(8) надо договор смотреть, все штрафы пишутся явно. кривой паллет просто отказываются принимать
|
|||
10
H A D G E H O G s
29.08.25
✎
12:02
|
(9) Они для всех поставщиков типовые, даже для крупных заводов или мелких оптовичков. Но это по ЕГАИС, там все строго. Насколько строго это для ЧЗ?
|
|||
11
p-soft
29.08.25
✎
12:06
|
(10) ну чз работает только если мы перемещаем марки. если по накладной все совпадает, то остальное зависит от процессов принимающей стороны
|
|||
12
MWWRuza
гуру
29.08.25
✎
12:54
|
(0) Такое хотение упирается в определение номенклатуры из сканированной марки.
У меня так, может пригодится:// Функция РазобратьШК(ШК) Экспорт - Возвращает тип отсканированного ШтрихКода // 1 - EAN(13 или 8) обычный ШК товара // 2 - DataMatrix пачки сигарет // 3 - DataMatrix блока сигарет // 4 - PDF-417 алкоголь, старая марка // 5 - DataMatrix алкоголь,новая марка // 6 - DataMatrix алкоголь, старая марка, "маленький квадратик" // 7 - DataMatrix прочей упаковки сигарет // 8 - Сокращенный код маркировки прочих товаров, в том числе молока // МРЦ - максимальная розничная цена сигарет // Тип - тип старой марки // Сер - серия старой марки // Ном - номер старой марки Функция РазобратьШК(Знач ШК) Экспорт СЗ = СоздатьОбъект("СписокЗначений"); СтрШК = СокрЛП(ШК); Если СтрДлина(СтрШК) <= 13 Тогда СЗ.ДобавитьЗначение(1, "ТипЕд"); СЗ.ДобавитьЗначение(СтрШК, "ЕАН"); СЗ.ДобавитьЗначение(0); ИначеЕсли (СтрДлина(СтрШК) <= 29) И (СтрДлина(СтрШК) >= 21) Тогда СЗ.ДобавитьЗначение(2, "ТипЕд"); ВыдЕАН = СокрЛП(Число(Лев(ШК, 14))); СЗ.ДобавитьЗначение(ВыдЕАН, "ЕАН"); Если СтрДлина(СтрШК) >= 25 Тогда МРЦ = ВернутьМРЦ(Сред(СокрЛП(СтрШК), 22, 4)); Иначе МРЦ = 0; КонецЕсли; СЗ.ДобавитьЗначение(МРЦ, "МРЦ"); ИначеЕсли СтрДлина(СтрШК) = 68 Тогда СЗ.ДобавитьЗначение(4, "ТипЕд"); СЗ.ДобавитьЗначение(СтрШК, "ЕАН"); СЗ.ДобавитьЗначение(0); ИначеЕсли СтрДлина(СтрШК) = 150 Тогда СЗ.ДобавитьЗначение(5, "ТипЕд"); СЗ.ДобавитьЗначение(СтрШК, "ЕАН"); СЗ.ДобавитьЗначение(0); ИначеЕсли (СтрДлина(СтрШК) >= 30) И (СтрДлина(СтрШК) < 68) Тогда Если Сред(СтрШК,4,1) = "-" Тогда Тип = Лев(СтрШК,3); СтрТипа = ""; СзТиповМарок = ЗаполнитьСписокТиповМарок(); Поз = СзТиповМарок.НайтиЗначение(Число(Тип)); Если Поз = 0 Тогда Предупреждение("Тип марки не найден!"); Иначе СзТиповМарок.ПолучитьЗначение(Поз,СтрТипа); КонецЕсли; Если Найти(СтрТипа,"ФСМ. ") > 0 Тогда ДлинаНомераМарки=9; Иначе ДлинаНомераМарки=8 КонецЕсли; СЗ.ДобавитьЗначение(6, "ТипЕд"); СЗ.ДобавитьЗначение(СтрШК); СЗ.ДобавитьЗначение(0); СЗ.ДобавитьЗначение(Лев(ШК,3), СокрЛП(СтрТипа)); СЗ.ДобавитьЗначение(Сред(ШК,Найти(ШК,"-") + 1,3)); СЗ.ДобавитьЗначение(Сред(ШК,Найти(ШК,"-") + 4,ДлинаНомераМарки)); Иначе СтрШК = СтрЗаменить(СтрШК, "(", ""); СтрШК = СтрЗаменить(СтрШК, ")", ""); Если Лев(СтрШК, 2) = "01" Тогда Если Найти(СтрШК, Симв(29)) > 0 Тогда // Марка полная, со сканера СЗ.ДобавитьЗначение(7, "ТипЕд"); GTIN = Сред(СтрШК, 3, 14); ШК = СокрЛП(Число(Сред(СтрШК, 3, 14))); СЗ.ДобавитьЗначение(ШК, "ЕАН"); СЗ.ДобавитьЗначение(GTIN, "GTIN"); СЗ.ДобавитьЗначение(0, "МРЦ"); Иначе Если Найти(СтрШК, "8005") = 0 Тогда // Упаковка, отличная от блока GTIN = СокрЛП(Число(Сред(СтрШК, 3, 14))); МРЦ = 0; Если Лев(GTIN, 1) = "0" Тогда ЕАН = Сред(GTIN, 2, 13); Иначе ЕАН = Лев(GTIN, 13); КонецЕсли; СЗ.ДобавитьЗначение(7, "ТипЕд"); СЗ.ДобавитьЗначение(ЕАН, "ЕАН"); СЗ.ДобавитьЗначение(МРЦ, "МРЦ"); СЗ.ДобавитьЗначение(GTIN, "GTIN"); СЗ.ДобавитьЗначение(ПривестиШкБлокаКВидуУПД(СтрШК), "ШКУПД"); ИначеЕсли Найти(СтрШК, "8005") >= 25 Тогда ШК = СокрЛП(Число(Сред(СтрШК, 3, 14))); МРЦ = ВычислитьМРЦ_Блока(СтрШК); СЗ.ДобавитьЗначение(3, "ТипЕд"); СЗ.ДобавитьЗначение(ШК, "ЕАН"); СЗ.ДобавитьЗначение(МРЦ, "МРЦ"); СЗ.ДобавитьЗначение(ПривестиШкБлокаКВидуУПД(СтрШК), "ШКУПД"); КонецЕсли; КонецЕсли; КонецЕсли; КонецЕсли; ИначеЕсли (СтрДлина(СтрШК) >= 19) И (СтрДлина(СтрШК) < 21) Тогда // Молочка и другой товар сокращенные ШК = СокрЛП(Число(Сред(СтрШК, 3, 14))); СЗ.ДобавитьЗначение(8, "ТипЕд"); СЗ.ДобавитьЗначение(ШК, "ЕАН"); СЗ.ДобавитьЗначение(0, "МРЦ"); СЗ.ДобавитьЗначение(ПривестиШкБлокаКВидуУПД(СтрШК), "ШКУПД"); КонецЕсли; Возврат СЗ; КонецФункции // КонецФункци РазобратьШК(ШК) А если Вы хотите из палеты что-то получить, то Вам сначала нужно в ЦРПТ запрос на "Разагрегацию" сделать, что-бы получить список марок в ней, вплоть до штук, если конечно поставщик провел в ЧЗ агрегацию и марка на палете не отсебячина чисто для логистики, а реально агрегат от ЧЗ... Такое у меня тоже есть, по крайней мере, для сигарет, я разбираю короба до блоков, блоки до пачек... Более крупные не пробовал, у меня только розница, они палетами не получают :-) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |