Проблема с Штрихкодом на коробке!

  • Автор темы Автор темы Farhad
  • Дата начала Дата начала
F

Farhad

Один программист программировал вот это для нас:

Код:
Функция СШКНеизвестныйКод(Штрихкод, ТипКода, СШК) Экспорт

СтрокаШК = "";
стр="0123456789";
Если ТипКода =  ПланыВидовХарактеристик.ТипыШтрихкодов.Code39 Тогда
Для М=1 по стрдлина(Штрихкод)Цикл
сим = Сред(Штрихкод,М,1);
Если найти(стр,сим)>0 тогда
СтрокаШК=СтрокаШК+сим;
ИначеЕсли СтрДлина(СтрокаШК)>0 И Сим=" " Тогда
//Это ШК
Прервать;	 

КонецЕсли;
КонецЦикла;
Если НЕ СтрокаШК="" Тогда
Эл=Справочники.Номенклатура.НайтиПоНаименованию(СтрокаШК, истина);
Если НЕ Эл=Справочники.Номенклатура.ПустаяСсылка() тогда
Ответ = СШКНоменклатура(Эл, , , Справочники.Качество.Новый, Эл.ЕдиницаХраненияОстатков, 6, СШК);
Возврат Ответ;
КонецЕсли;	
КонецЕсли;	

КонецЕсли;	
Возврат Ложь;


КонецФункции // СШКНеизвестныйКод()
Но работает это не так как надо!
Каждый раз, когда сканировать один и тоже товар, он прибавляет на новую строку!!! Как это решить?
 
Позвольте полюбопытствовать, просто любопытно, русский язык для вас родной?
 
НЕТ :)
 
Антиоффтоп: Как я понял, код должен искать по штрихкоду существующий элемент, а новый добавлять только в случае, если такого нет. А он добавляет элемент всегда.
Дело в том, что в этом фрагменте нет кода создания элемента справочника, он создается или в СШКНоменклатура(), или где-то до/после вызова СШКНеизвестныйКод()

Если СШКНоменклатура() просто создает номенклатуру, то, скорее всего надо строку
"Если НЕ Эл=Справочники.Номенклатура.ПустаяСсылка() тогда"
записать без НЕ.
 
В таком случи он пишет:

imageshack.us

Нам нужен толка строка "1623" (это наименования товара), а остальные игнорировать. Потому что у каждой коробке свой номер, не смотря на то что товары одинаковые.

А вот и сам штрихкод:

imageshack.us
 
Код функции в студию :)

Код:
Функция СШКНоменклатура(Номенклатура, Характеристика, Серия, Качество,
Единица, Количество, СШК) Экспорт

Результат		= Истина;
ИмяТекСтраницы  = ЭлементыФормы.ОсновнаяПанель.ТекущаяСтраница.Имя;
СтруктураПодбора = РаботаСТорговымОборудованием.СформироватьСтруктуруПодбора(Дата, Номенклатура, Характеристика,
Серия, Качество, Единица,
Количество, Неопределено,
Неопределено, Ложь,
Неопределено);

Если	 ИмяТекСтраницы = "Товары" Тогда
ОбработкаПодбора(Товары, СтруктураПодбора);
ИначеЕсли ИмяТекСтраницы = "Тара" Тогда
ОбработкаПодбора(ВозвратнаяТара, СтруктураПодбора);
Иначе
Предупреждение("На странице """
+ ИмяТекСтраницы
+ """ подбор номенклатуры не предусмотрен.");
КонецЕсли;

Возврат Результат;

КонецФункции // СШКНоменклатура()
 
Если СШКНоменклатура() просто создает номенклатуру, то, скорее всего надо строку
"Если НЕ Эл=Справочники.Номенклатура.ПустаяСсылка() тогда"
записать без НЕ.
Судя по коду функции, мое предположение не верно...

... а еще подумалось, что и
Как я понял, код должен искать по штрихкоду существующий элемент, а новый добавлять только в случае, если такого нет. А он добавляет элемент всегда.
он элемент справочника добавляет, или строку в документ? Что-то мне подумалось, что второе. Тогда, все написанное ранее можешь забыть. Проблема не в этих функциях. Смотрите после их вызова.
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab