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

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

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




Свежие комментарии