Имя: Пароль:
1C
 
Обработка штрихкодов. Нужна помощь.
0 Varlant1n
 
17.02.21
17:11
Здравствуйте. Есть форма обработки. На форме появляются товары из заказа клиента. Мне нужно щас сделать обработку штрихкодов, чтобы при наведении на штрихкод товара. В таблице на форме обработки в колонке КоличествоРеализации добавлялось по одному. При этом если у товара Реквизит, если реквизит Отгружено = Истина (это проверяется через запрос к ЗаказыКлиентовОстатки), тогда должно быть что-то по типу предупреждения о том, что данный товар уже отгружен. На форме строка отгруженного товара через условное оформление вычеркивается. Я смог добиться того, что я могу через сканер найти строку и начать добавлять при сканировании, но как только количество в заказе и количество в реализации равны друг другу, мне выдает ошибку, хотя должно быть предупреждение о том, что данного товара уже достаточно. Вот код, который я смог написать, не ругайтесь только. Я знаю вы умеете. Спасибо заранее за помощь)

&НаКлиенте
Процедура ОбработатьШтрихкоды(ДанныеШтрихкода)
    Если ЗначениеЗаполнено(Объект.Товары) Тогда
        Номенклатура = ПолучитьНоменклатуруПоШтрихкоду(ДанныеШтрихкода);
        Если Номенклатура <> Неопределено Тогда
            Активизировать();
            ТекущиеДанные = Объект.Товары.НайтиПоИдентификатору(НайтиТовар(Номенклатура));
            Если ТекущиеДанные.КоличествоРеализации = ТекущиеДанные.КоличествоВЗаказе И
                ТекущиеДанные.ПолностьюПоставлен Тогда
                Предупреждение("Данного товара уже достаточно! Верните товар на полку!");                
            КонецЕсли;
            Элементы.Товары.ТекущаяСтрока = ТекущиеДанные.НомерСтроки - 1;
        КонецЕсли;        
    Иначе
        Предупреждение("Номенклатура со штрихкодом %1 не найдена");
    КонецЕсли;        
КонецПроцедуры


&НаСервере
Функция НайтиТовар(Позиция)    
    ПараметрыОтбора = Новый Структура;
    ПараметрыОтбора.Вставить("Номенклатура", Позиция);
    ПараметрыОтбора.Вставить("Отгружено", Ложь);
    НайденныеСтроки = Объект.Товары.НайтиСтроки(ПараметрыОтбора);    
    Если НайденныеСтроки.Количество() <> 0 Тогда
        НайденнаяСтрока = НайденныеСтроки[0];
        
        Если НайденнаяСтрока.КоличествоРеализации < НайденнаяСтрока.КоличествоВЗаказе И НЕ НайденнаяСтрока.ПолностьюПоставлен Тогда
            НайденнаяСтрока.КоличествоРеализации = НайденнаяСтрока.КоличествоРеализации + 1;
        ИначеЕсли НайденнаяСтрока.КоличествоРеализации = НайденнаяСтрока.КоличествоВЗаказе Тогда
            НайденнаяСтрока.ПолностьюПоставлен = Истина;
        КонецЕсли;
    КонецЕсли;
Возврат НайденнаяСтрока.ПолучитьИдентификатор();
КонецФункции
2 + 2 = 3.9999999999999999999999999999999...