Оповещение о дублях в заказе на перемещение. Розница 3

Клиенту нужно чтобы при добавлении товара в документ «Заказ на перемещение» если такой товар уже есть, выходило предупреждение.

Сделал контроль при добавлении через подбор:

При добавлении строки:

При реализации интересно обрабатываю, изменилась табличная часть или нет, через контроль состава таблицы до и после, чтобы не залазить внутрь модулей.

Расширяю форму документа:

&НаКлиенте
&Вместо("ОбработкаОповещения")
Процедура дор_ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
	
	ЭтоСобытиеПодбораВЭтуФорму = 
		ИмяСобытия = "ПодборПроизведен"   
		И Источник <> Новый УникальныйИдентификатор("00000000-0000-0000-0000-000000000000")
		И Источник = УникальныйИдентификатор;
	
	Если ЭтоСобытиеПодбораВЭтуФорму
		Тогда
		
		СооЗапасы = Новый Соответствие();                              
		
		Для Каждого Строка из Объект.Запасы Цикл
			С = Новый Структура("Номенклатура, Характеристика, Количество", Строка.Номенклатура, строка.Характеристика, 
			Строка.Количество);
			СооЗапасы.Вставить("" + Строка.Номенклатура + "|" + строка.Характеристика, 
			С);
		КонецЦикла;
	КонецЕсли;
	
	ПродолжитьВызов(ИмяСобытия, Параметр, Источник);
	
	Если ЭтоСобытиеПодбораВЭтуФорму
		Тогда       
		Текст = "";
		Для Каждого Строка из Объект.Запасы Цикл
			С = СооЗапасы.Получить("" + Строка.Номенклатура + "|" + строка.Характеристика);
			Если С <> неопределено Тогда
				Если С.Количество < строка.Количество Тогда
					Текст = Текст + ?(Текст = "", "", Символы.ПС) + "Уже есть товар:" + С.Номенклатура + " " + С.Характеристика 
					+ " было: "  + С.Количество
					+ " стало: " + Строка.Количество; 
				КонецЕсли;
			КонецЕсли;
		КонецЦикла;               
		
		Если Текст <> "" И дор_С.ЭтоТоваровед()
			Тогда
			ПоказатьПредупреждение(, Текст);
		КонецЕсли;
	КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура дор_ЗапасыПриОкончанииРедактированияПосле(Элемент, НоваяСтрока, ОтменаРедактирования)
	ТекущиеДанные = Элементы.Запасы.ТекущиеДанные;

	С = Новый Структура("Номенклатура, Характеристика", ТекущиеДанные.Номенклатура, ТекущиеДанные.Характеристика); 
	ИскСтроки = Объект.Запасы.НайтиСтроки(С);
	Если НоваяСтрока 
		И ИскСтроки.Количество() > 1 
		И дор_С.ЭтоТоваровед()
		
		тогда
		
		Текст = "Уже есть товар:" + С.Номенклатура + " " + С.Характеристика 
		+ " в строке: "  + ИскСтроки[0].номерСтроки;
		ПоказатьПредупреждение(, Текст);
	КонецЕсли;
КонецПроцедуры



Среда: Розница 3.0.12.237. Объем: 1 час.

image_pdfimage_print

fixin

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

Вам может также понравиться...

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

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