Имя: Пароль:
1C
1С v8
Поиск дублей в ТЧ, внешней обработки.
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)
ЭлементыФормы.НоменклатураДляВСД.ДобавитьСтроку(); //так писать не надо.
Нужно просто обращаться к реквизитам, а не к элементам формы
AdBlock убивает бесплатный контент. 1Сергей