|   |   | 
| 
 | v7: Сканирование марок на нетленке 7.7 | ☑ | ||
|---|---|---|---|---|
| 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, 								"МРЦ");
		СЗ.ДобавитьЗначение(ПривестиШкБлокаКВидуУПД(СтрШК), "ШКУПД");		
	КонецЕсли;	
	Возврат СЗ;
КонецФункции
// КонецФункци РазобратьШК(ШК)А если Вы хотите из палеты что-то получить, то Вам сначала нужно в ЦРПТ запрос на "Разагрегацию" сделать, что-бы получить список марок в ней, вплоть до штук, если конечно поставщик провел в ЧЗ агрегацию и марка на палете не отсебячина чисто для логистики, а реально агрегат от ЧЗ... Такое у меня тоже есть, по крайней мере, для сигарет, я разбираю короба до блоков, блоки до пачек... Более крупные не пробовал, у меня только розница, они палетами не получают :-) | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |