Доработка обработки загрузки картинок для Розница 2.3
Сегодня будем дорабатывать обработку от CodeStar по загрузке картинок в базу 1С: Розница.
Обработка обрабатывает каталог с картинками и привязывает их к товару. При этом есть режим поиска товара по штрих-коду.
Но она работает только если штрих-код находится на первом месте в названии файла. У клиента же штрих-код может находиться в любом месте названия файла.
Судя по коду, если в названии файла присутствует разделитель (по умолчанию подчеркивани), берется первая часть наименования:
Отладить этот код сложно, потому что код выполняется в фоне, я сначала попытался удалить предупреждение при открытии:
Но потом я понял, что как внешняя обработка код не исполнится, т.к. он выполняется в фоне.
Доделал выделение штрих-кода из любой позиции в наименовании файла.
И еще реализовал пожелание выделять главную картинку символом @, потому что изначально главной считалась картинка без подчеркивания, т.е. схема работала если файлы называть: EAN13 (главный), EAN13_2, EAN_3 и т.д.
Процедура ЗагрузитьКартинки_Новая() КоличествоФайлов = МассивФайлов.Количество(); КолОбработано = 0; Для каждого Файлик из МассивФайлов Цикл ЭтоГлавныйФайл = Истина; ЗначениеПоиска = Файлик.ЗначениеПоиска; Если Файлик.Свойство("НазваниеФайла") Тогда НазваниеФайла = Файлик.НазваниеФайла; Иначе НазваниеФайла = ЗначениеПоиска; //+++ Осипов 2022-07-13 ЗначениеПоискаИсходное = ЗначениеПоиска; Если ПолеПоиска = "Штрихкод" Тогда М = СтрРазделить(ЗначениеПоиска,Разделитель); Для Каждого Эл ИЗ М Цикл Эл = СокрЛП(Эл); Если СтрДлина(Эл) = 13 И СтроковыеФункцииКлиентСервер.ТолькоЦифрыВСтроке(Эл) Тогда ЗначениеПоиска = Эл; Если Найти(ЗначениеПоискаИсходное, "@") <> 0 Тогда ЭтоГлавныйФайл = истина; Иначе ЭтоГлавныйФайл = ложь; КонецЕсли; Сообщить("Выделен штрихкод: " + ЗначениеПоиска + " из: " + ЗначениеПоискаИсходное + " картинка главная: " + Формат(ЭтоГлавныйФайл, "БЛ=Нет; БИ=Да")); Прервать; КонецЕсли; КонецЦикла; КонецЕсли; //--- Осипов 2022-07-13 Индекс = СтрНайти(ЗначениеПоиска,Разделитель); Если Индекс > 0 Тогда ЗначениеПоиска = Лев(ЗначениеПоиска, Индекс-1); ЭтоГлавныйФайл = Ложь; КонецЕсли; КонецЕсли; ... КонецПроцедуры
Среда: 2.3.11.44 Объем: 1 час.
Свежие комментарии