Доработка обработки загрузки картинок для Розница 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 час.

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Читайте также:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *