Skip to main content

Загрузка расходов ЭДО Документация

Настройка

Алгоритмы распознания

Алгоритм для распознания строк

Подходит для случаев, где для заполнения строк расхода достаточно "Основного вложения".  Основное вложение - это электронный документ подтверждения факта хозяйственной деятельности (Акт, УПД). Если из предоставляемой поставщиком услуги можно выделить услугу (без мусора (меняющиеся части) и номер грузоперевозки, то этот тип алгоритма подойдёт для этого поставщика.

Выполняется в контексте:

УслугаПоставщика = СокрЛП(СтруктураСтроки.НаимТов);
Рез = Новый Структура("Контейнера,Услуга",Новый Массив,"");

Например, услуга в документе поставщика содержит услугу "XXXU1234567 Агентское вознаграждение ФИТ"
Как видим, услуга с номером контейнера и без "мусора".   В этом случае, будет достаточно выделить из строки номера контейнеров, а остальное считать услугой:

СыраяСтрока = СтрЗаменить(УслугаПоставщика,","," ");
ЧастиСтроки = СтрРазделить(СыраяСтрока," ",Ложь);
Для каждого Часть ИЗ ЧастиСтроки Цикл
	Контейнер = ВРег(СокрЛП(Часть));
	Если СтрДлина(Контейнер) <> 11 ИЛИ Сред(Контейнер,4,1)<>"U"  Тогда
		Рез.Услуга = Рез.Услуга + ?(Рез.Услуга = "",""," ")+Часть; 
		Продолжить;
	КонецЕсли;
	Рез.Контейнера.Добавить(Контейнер);	
КонецЦикла;
Рез.Услуга = СокрЛП(Рез.Услуга);

Услуга поставщика может быть похожа на следующую: "Перевозка контейнера XXXU1234567 Коносамент SKLM1111111 Маршрут: НАХОДКА ВОСТОЧНЫЙ - КЛЕЩИХА".  В этом случае в услуге есть "мусор", это номер коносамента, маршрут. Если мы их не уберём, то сопоставление номенклатуры работать не будет. В этом случае, всё до номера контейнера можно считать услугой, всё после - мусором:

СыраяСтрока = СтрЗаменить(УслугаПоставщика,","," ");
ЧастиСтроки = СтрРазделить(СыраяСтрока," ",Ложь);
БылКонтейнер = Ложь;
Для каждого Часть ИЗ ЧастиСтроки Цикл
	Контейнер = ВРег(СокрЛП(Часть));
	Если СтрДлина(Контейнер) <> 11 ИЛИ Сред(Контейнер,4,1)<>"U" Тогда
		Если БылКонтейнер = Ложь Тогда
			Рез.Услуга = Рез.Услуга + ?(Рез.Услуга = "",""," ")+Часть; 
		КонецЕсли;
		Продолжить;
	КонецЕсли;
	Рез.Контейнера.Добавить(Контейнер);	
	БылКонтейнер = Истина;
КонецЦикла;
Рез.Услуга = СокрЛП(Рез.Услуга);

Алгоритм распознания документов