Загрузка результатов инвентаризации из Excel. УТ 11.5

Клиенту нужно было загружать результаты инвентаризации из Excel.

Взял обработку с Инфостарта Загрузка из Excel в табличную часть документа прямо из документа (пересчет товаров, заказ на перемещение, перемещение товаров, установка цен номенклатуры)

Все хорошо, все работает.

Но есть один нюанс — у клиента есть дубли артикулов.

Пришлось немножко доработать поиск по артикулу:

МассивТоваровДокумента = Новый Массив();
Для каждого стр Из ДокументОбъект.Товары Цикл
	Если ЗначениеЗаполнено(Стр.Номенклатура) Тогда
		МассивТоваровДокумента.Добавить(Стр.Номенклатура);
	КонецЕсли;
КонецЦикла; 
...
//Номенклатура = Справочники.Номенклатура.НайтиПоРеквизиту("Артикул",Артикул);
Номенклатура = НайтиПоАртикулу(МассивТоваровДокумента, Артикул);
Если Не ЗначениеЗаполнено(Номенклатура) Тогда
	Сообщить("Не найдена номенклатура с артикулом "+Артикул);
	Продолжить;		
КонецЕсли;      
...
Функция НайтиПоАртикулу(МассивТоваровДокумента, Артикул)
	З = Новый Запрос(
	"ВЫБРАТЬ
	|	Номенклатура.Ссылка КАК Ссылка,
	|	ВЫБОР
	|		КОГДА Номенклатура.Ссылка В (&МассивТоваровДокумента)
	|			ТОГДА 1
	|		КОГДА Номенклатура.ПометкаУдаления
	|			ТОГДА 3
	|		ИНАЧЕ 2
	|	КОНЕЦ КАК Порядок
	|ИЗ
	|	Справочник.Номенклатура КАК Номенклатура
	|ГДЕ
	|	Номенклатура.Артикул = &Артикул
	|
	|УПОРЯДОЧИТЬ ПО
	|	Порядок");    
	З.УстановитьПараметр("Артикул", Артикул); 
	З.УстановитьПараметр("МассивТоваровДокумента", МассивТоваровДокумента); 
	Выборка = З.Выполнить().Выбрать();
	Если Выборка.Следующий() Тогда
		Возврат Выборка.Ссылка;
	КонецЕсли;
КонецФункции

Среда: УТ 11.5.12.53 Объем: 0.8 час.

fixin

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

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

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

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