Загрузка расходов ЭДО Документация
Настройка
Алгоритмы распознания
Алгоритм для распознания строк
Подходит для случаев, где для заполнения строк расхода достаточно "Основного вложения". Основное вложение - это электронный документ подтверждения факта хозяйственной деятельности (Акт, УПД). Если из предоставляемой поставщиком услуги можно выделить услугу без мусора (меняющиеся части) и номер грузоперевозки, то этот тип алгоритма подойдёт для этого поставщика.
Выполняется в контексте:
УслугаПоставщика = СокрЛП(СтруктураСтроки.НаимТов);
Рез = Новый Структура("Контейнера,Услуга",Новый Массив,"");
Например, услуга в документе поставщика содержит услугу "XXXU1234567 Агентское вознаграждение ФИТ"
Как видим, услуга с номером контейнера и без "мусора". В этом случае, будет достаточно выделить из строки номера контейнеров, а остальное считать услугой:
СыраяСтрока = СтрЗаменить(УслугаПоставщика,","," ");
ЧастиСтроки = СтрРазделить(СыраяСтрока," ",Ложь);
Для каждого Часть ИЗ ЧастиСтроки Цикл
Контейнер = ВРег(СокрЛП(Часть));
Если СтрДлина(Контейнер) <> 11 ИЛИ Сред(Контейнер,4,1)<>"U" Тогда
Рез.Услуга = Рез.Услуга + ?(Рез.Услуга = "",""," ")+Часть;
Продолжить;
КонецЕсли;
Рез.Контейнера.Добавить(Контейнер);
КонецЦикла;
Рез.Услуга = СокрЛП(Рез.Услуга);
Услуга поставщика может быть похожа на следующую: "Перевозка контейнера XXXU1234567 Коносамент SKLM1111111 Маршрут: НАХОДКА ВОСТОЧНЫЙ - КЛЕЩИХА". В этом случае в услуге есть "мусор", это номер коносамента, маршрут. Если мы их не уберём, то сопоставление номенклатуры работать не будет. В этом случае, всё до номера контейнера можно считать услугой, всё после - мусором:
СыраяСтрока = СтрЗаменить(УслугаПоставщика,","," ");
ЧастиСтроки = СтрРазделить(СыраяСтрока," ",Ложь);
БылКонтейнер = Ложь;
Для каждого Часть ИЗ ЧастиСтроки Цикл
Контейнер = ВРег(СокрЛП(Часть));
Если СтрДлина(Контейнер) <> 11 ИЛИ Сред(Контейнер,4,1)<>"U" Тогда
Если БылКонтейнер = Ложь Тогда
Рез.Услуга = Рез.Услуга + ?(Рез.Услуга = "",""," ")+Часть;
КонецЕсли;
Продолжить;
КонецЕсли;
Рез.Контейнера.Добавить(Контейнер);
БылКонтейнер = Истина;
КонецЦикла;
Рез.Услуга = СокрЛП(Рез.Услуга);