Подбор товара в РМК по номенклатуре и марке УТ 11.5

Хотел автоматом добавлять в Чек РМК товар и марку, используя такой вызов:

ФормаДляОбработки.ПоискПоШтрихкодуЗавершение(
Новый Структура("Количество, Штрихкод, Цена", СтрокаТЧ.Количество, КонтрольнаяМарка, СтрокаТЧ.Цена), Неопределено);

Но у клиента возникла проблема — некоторые товары хранятся без штрих-кода и возникает окно привязки товара к штрих-коду. При этом товар даже определяется по марке, но у пользователя запрашивается уточнение.

Клиент не хочет привязывать штрих-код к номенклатуре, т.к. один и тот же товар может быть на разных карточка, потому что товар приходит от разных производителей.

Решено передавать в поиск по штрих-коду еще и номенклатуру, но приходится называть ее особым образом, иначе 1С считает, что если встретилось поле Номенклатура, обработка штрих-кодов завершена. Кто так пишет?!

ФормаДляОбработки.ПоискПоШтрихкодуЗавершение(
	Новый Структура("Количество, Штрихкод, Цена, НоменклатураДляУточнения", 
	СтрокаТЧ.Количество, КонтрольнаяМарка, СтрокаТЧ.Цена, СтрокаТЧ.Номенклатура)
	, Неопределено);

Обработка штрих-кода осуществляется в процедуре: ШтрихкодированиеОбщегоНазначенияИС.ОбработатьВводШтрихкода.

Заполнение таблицы связывающей коды маркировки и товары осуществляется в процедуре: ШтрихкодированиеОбщегоНазначенияИС.ЗаполнитьДанныеКодовМаркировкиВходящимиДанными

Делаю расширение для модуля ШтрихкодированиеОбщегоНазначенияИС:

&Вместо("ЗаполнитьДанныеКодовМаркировкиВходящимиДанными")
Процедура бс_ЗаполнитьДанныеКодовМаркировкиВходящимиДанными(ДанныеПоШтрихкодам, СписокДанныхШтрихкода, ПараметрыСканирования)
	ПродолжитьВызов(ДанныеПоШтрихкодам, СписокДанныхШтрихкода, ПараметрыСканирования);

	ДанныеКодовМаркировки = ДанныеПоШтрихкодам.ДанныеКодовМаркировки;
	
	Для Каждого ДанныеШтрихкода Из СписокДанныхШтрихкода Цикл
		
		//Номенклатура использовать нельзя, уже зарезервирована
		Если НЕ ДанныеШтрихкода.Свойство("НоменклатураДляУточнения") Тогда
			Продолжить;
		КонецЕсли;
		
		ИскСтрока = ДанныеКодовМаркировки.Найти(СокрЛП(ДанныеШтрихкода.Штрихкод), "Штрихкод"); //Осипов

		Если ИскСтрока <> Неопределено Тогда 
			ИскСтрока.Номенклатура = ДанныеШтрихкода.НоменклатураДляУточнения; 
		КонецЕсли;
		
	КонецЦикла;
КонецПроцедуры

И все работает!

Еще раз могу констатировать что типовые конфигурации от 1С — это сложный черный ящик с запутанными и непрозрачными связями. Естественно, такой лапшевидный код сложно документировать и повторно использовать. Приходится подлазить в непонятных и не совсем очевидных местах.

По сути, типовые 1С пишутся только под те задачи, которые могут увидеть методисты 1С. Никто не задумывается о тех, кто будет дорабатывать и автоматизировать некоторые ручные процессы в типовых. Интерфейсы для автоматизации и повторного использования кода не делаются.

Казалось бы простой вопрос — «добавь в чек товар с определенной маркой«. Но у 1С для этого нет программного интерфейса. Блеск и нищета типовых!

Среда: УТ 11.5.19.74 Объем: 1 час.

fixin

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

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

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

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