|
Поиск дублей в ТЧ, внешней обработки. | ☑ | ||
---|---|---|---|---|
0
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
|
Метод "Найти"?
|
|||
3
KuBeR21RUS
05.03.21
✎
09:00
|
(1) Это было очень срочно :)
|
|||
4
ДенисЧ
05.03.21
✎
09:04
|
(3) А что, просто в ТЧ строку добавить и в эту строку писать - намного дольше получилось бы?
|
|||
5
KuBeR21RUS
05.03.21
✎
09:08
|
(4) Возможно, но очень нужно чтобы в колонку куда записывается полностью ШК, не было возможности задублировать.
Как это сделать? |
|||
6
KuBeR21RUS
05.03.21
✎
09:08
|
оптимизировать можно, когда не горит одно место.
|
|||
7
ДенисЧ
05.03.21
✎
09:08
|
(5) У ТЧ есть метод Найти() или НайтиСтроки()
В чём проблема найти что-то? |
|||
8
Йохохо
05.03.21
✎
09:13
|
(6) ваше место похоже у многих не горит за наличием отсутствия оного)
|
|||
9
Kassern
05.03.21
✎
09:14
|
(0) первый раз вижу чтобы так ТЧ заполняли программно) А может все таки:
Если Объект.НоменклатураДляВСД.НайтиСтроки(ТвояСтруктураПараметров).Количество()=0 Тогда НовСтрока=Объект.НоменклатураДляВСД.Добавить(); ЗаполнитьЗначениеСвойств(НовсТрока,ТвояСтруктураПараметров); КонецЕсли; Да нуу лучше так ОбъектShell = Новый COMОбъект("Wscript.Shell"); и поехали) |
|||
10
KuBeR21RUS
05.03.21
✎
09:16
|
(9) Может быть)
|
|||
11
ДенисЧ
05.03.21
✎
09:16
|
(9) Через вшелл быстрее, чем Добавить() ...
|
|||
12
KuBeR21RUS
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")
|
|||
16
KuBeR21RUS
05.03.21
✎
11:46
|
(15) Данные содержаться в штрих-коде, и там именно 210219 что означает 19.02.21
Вот её и нужно вытащить |
|||
17
Пузан
05.03.21
✎
11:48
|
(16) И че? Ты к году не можешь добавить впереди 20? Палка внизу большая а 1С совсем не того? За тебя еще и весь код писать? Ты элементарных вещей не знаешь.
Вот так должно быть: ДатаВыработки = Дата("20" + ДатаВырГод + ДатаВырМесяц + ДатаВырДень); И, блять, пройдись отладчиком, за тебя тут код писать не будут. |
|||
18
KuBeR21RUS
05.03.21
✎
12:33
|
(17) Затупил , сорри
|
|||
19
Пузан
05.03.21
✎
12:39
|
(18) ХуИбЕр, епта.
|
|||
20
НЕА123
05.03.21
✎
13:10
|
ДатаВыработки = Дата("20"+Сред(ШК,29,6);
|
|||
21
Ёпрст
05.03.21
✎
13:25
|
(12)
ЭлементыФормы.НоменклатураДляВСД.ДобавитьСтроку(); //так писать не надо. Нужно просто обращаться к реквизитам, а не к элементам формы |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |