Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Поиск дублей в ТЧ, внешней обработки.

Поиск дублей в ТЧ, внешней обработки.
Я
   KuBeR21RUS
 
05.03.21 - 08:50
Есть обработка для работы со сканером ШК.
При сканирование ШК, данные ШК попадают в ТЧ, внешней обработки.

Есть проблема, в том что нужно искать дубли по ШК (вдруг отсканировали 2 раза 1 и тот же ШК)

Не могу понять как это реализовать, и как зациклить проверку при каждом новом сканировании. Поиск нужен именно по полю ШК.

Процедура КнопкаВыполнитьНажатие(Кнопка)
Результат = РаботаСТорговымОборудованием.ВвестиШтрихкод();
    Если Не ПустаяСтрока(Результат) Тогда  ШК = Результат;
    КонецЕсли;    
//Разбор ШК    
КодНоменклатура = Сред(ШК,10,7);
Количество =  Число(Сред(ШК,21,6));
ДатаВырГод = Сред(ШК,29,2);
ДатаВырМесяц = Сред(ШК,31,2);
ДатаВырДень = Сред(ШК,33,2);
ДатаВыработки = Формат(ДатаВырДень+ "." +ДатаВырМесяц+ "." + ДатаВырГод,"ДФ=ддММгг");
//Сообщить("Штрих-код номенклатуры: " + КодНоменклатура + " Вес: " + Количество*0.001 + " кг. Дата производства: " + ДатаВыработки);
ЭлементыФормы.НоменклатураДляВСД.ДобавитьСтроку();
ЭлементыФормы.НоменклатураДляВСД.ТекущаяСтрока.КодТовара = КодНоменклатура;
ОбъектShell = Новый COMОбъект("Wscript.Shell");
    ОбъектShell.SendKeys("{TAB}");
    ОбъектShell.SendKeys("{F4}");
    ОбъектShell.SendKeys("{F7}");
    ОбъектShell.SendKeys(КодНоменклатура);
    ОбъектShell.SendKeys("{ENTER}");
    ОбъектShell.SendKeys("{TAB}");
    ОбъектShell.SendKeys(Количество*0.001);
    ОбъектShell.SendKeys("{TAB}");
    ОбъектShell.SendKeys("КГ");
    ОбъектShell.SendKeys("{TAB}");
    ОбъектShell.SendKeys(ДатаВыработки);
    ОбъектShell.SendKeys("{TAB}");
    ОбъектShell.SendKeys(ШК);
    ОбъектShell.SendKeys("{TAB}");
    ОбъектShell.SendKeys("{ESC}");
//Разобрали ШК на код товара,Вес,Дату.    
КонецПроцедуры
   ДенисЧ
 
1 - 05.03.21 - 08:55
   Галахад
 
2 - 05.03.21 - 08:57
Метод "Найти"?
   KuBeR21RUS
 
3 - 05.03.21 - 09:00
(1) Это было очень срочно :)
   ДенисЧ
 
4 - 05.03.21 - 09:04
(3) А что, просто в ТЧ строку добавить и в эту строку писать - намного дольше получилось бы?
   KuBeR21RUS
 
5 - 05.03.21 - 09:08
(4) Возможно, но очень нужно чтобы в колонку куда записывается полностью ШК, не было возможности задублировать.
Как это сделать?
   KuBeR21RUS
 
6 - 05.03.21 - 09:08
оптимизировать можно, когда не горит одно место.
   ДенисЧ
 
7 - 05.03.21 - 09:08
(5) У ТЧ есть метод Найти() или НайтиСтроки()
В чём проблема найти что-то?
   Йохохо
 
8 - 05.03.21 - 09:13
(6) ваше место похоже у многих не горит за наличием отсутствия оного)
   Kassern
 
9 - 05.03.21 - 09:14
(0) первый раз вижу чтобы так ТЧ заполняли программно) А может все таки:
Если Объект.НоменклатураДляВСД.НайтиСтроки(ТвояСтруктураПараметров).Количество()=0 Тогда 
 НовСтрока=Объект.НоменклатураДляВСД.Добавить();
 ЗаполнитьЗначениеСвойств(НовсТрока,ТвояСтруктураПараметров);
КонецЕсли;
Да нуу лучше так ОбъектShell = Новый COMОбъект("Wscript.Shell"); и поехали)
   KuBeR21RUS
 
10 - 05.03.21 - 09:16
(9) Может быть)
   ДенисЧ
 
11 - 05.03.21 - 09:16
(9) Через вшелл быстрее, чем Добавить() ...
   KuBeR21RUS
 
12 - 05.03.21 - 11:29
(11) Процедура КнопкаВыполнитьНажатие(Кнопка)
Результат = РаботаСТорговымОборудованием.ВвестиШтрихкод();
    Если Не ПустаяСтрока(Результат) Тогда  ШК = Результат;
    КонецЕсли;    
//Разбор ШК    

КодНоменклатура = Сред(ШК,10,7);
Количество =  Число(Сред(ШК,21,6));
ДатаВырГод = Сред(ШК,29,2);
ДатаВырМесяц = Сред(ШК,31,2);
ДатаВырДень = Сред(ШК,33,2);
КодШК = ШК;
ДатаВыработки = Дата(Формат(ДатаВырДень+ "." +ДатаВырМесяц+ "." + ДатаВырГод,"ДФ=ддММгг"));
Сообщить("Штрих-код номенклатуры: " + КодНоменклатура + " Вес: " + Количество*0.001 + " кг. Дата производства: " + ДатаВыработки);
ЭлементыФормы.НоменклатураДляВСД.ДобавитьСтроку();
ЭлементыФормы.НоменклатураДляВСД.ТекущаяСтрока.КодТовара = КодНоменклатура;
ЭлементыФормы.НоменклатураДляВСД.ТекущаяСтрока.ШК = КодШК;  // 0100000002502384310300900011210219

ЭлементыФормы.НоменклатураДляВСД.ТекущаяСтрока.Вес = Количество*0.001;
ЭлементыФормы.НоменклатураДляВСД.ТекущаяСтрока.ДатаВыработки = ДатаВыработки;
КонецПроцедуры


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

help me please....
   Пузан
 
13 - 05.03.21 - 11:38
Отладчиком пользоваться умеешь? Что там в ДатаВыработки?
ДатаВыработки = Дата(Формат(ДатаВырДень+ "." +ДатаВырМесяц+ "." + ДатаВырГод,"ДФ=ддММгг")); - сдается мне что уже тут проблемы, потому что чушь какая-то, зачем-то формат.
Надо сделать вот так: ДатаВыработки = Дата("" + ДатаВырГод + ДатаВырМесяц + ДатаВырДень);
   Пузан
 
14 - 05.03.21 - 11:38
+(13) и год должен быть 4 знака.
   Пузан
 
15 - 05.03.21 - 11:39
+(14) в Дата() должно получиться что-то типа Дата("20210305")
   KuBeR21RUS
 
16 - 05.03.21 - 11:46
(15) Данные содержаться в штрих-коде, и там именно 210219 что означает 19.02.21
Вот её и нужно вытащить
   Пузан
 
17 - 05.03.21 - 11:48
(16) И че? Ты к году не можешь добавить впереди 20? Палка внизу большая а 1С совсем не того? За тебя еще и весь код писать? Ты элементарных вещей не знаешь.
Вот так должно быть:
ДатаВыработки = Дата("20" + ДатаВырГод + ДатаВырМесяц + ДатаВырДень);

И, блять, пройдись отладчиком, за тебя тут код писать не будут.
   KuBeR21RUS
 
18 - 05.03.21 - 12:33
(17) Затупил , сорри
   Пузан
 
19 - 05.03.21 - 12:39
(18) ХуИбЕр, епта.
   НЕА123
 
20 - 05.03.21 - 13:10
ДатаВыработки = Дата("20"+Сред(ШК,29,6);
   Ёпрст
 
21 - 05.03.21 - 13:25
(12)
ЭлементыФормы.НоменклатураДляВСД.ДобавитьСтроку(); //так писать не надо.
Нужно просто обращаться к реквизитам, а не к элементам формы


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.