gifts2017

Поиск нужной части штрих-кода

Опубликовал Vitalya Гуляев (Vix) в раздел Оборудование - Сканер штрих-кода

Получение элементов группы номенклатуры и поиск вхождения нужной части штрих-кода в справочнике партий

Ситуация, когда штрих-код при каждом новом постеплении различный, и для этого существует справочник.ус_Партии с реквитом "ШтрихКод", подчиненный справочнику "Номенклатура". Так вот, допустим что есть определенное правило поставщика, где конкретная часть штрих-кода отвечает за определенную информацию, например, первые 6 символов это дата, с 7-11 это наименование товара, 12-13 это цвет, дальше идет номер партии и свободные символы. Искать приходится только по конкретному товару (7-11 символы) и цвету (12-13 символы) , изходя их правил поставщика. Например: имеется штрих-кода: 1009110065230145267, 1809110065230262345, 1009110065210671342  ...первые 2 штрих-кода это один и тотже товар, только с разной датой, партией и конечными символами, третий штрих-код это тотже товар только еще и с другим цветом. Допустим пришел новый товар, штрих-кода которого в базе не существует...2510110065230763210. Необходимо определить, что это за товар, для этого ниже приведен код прямого запроса, который организует необходимую задачу. Работает только в SQL версии, при установленной ВК 1С++, плюс используется класс ЗапросSQL, который прилагаю отдельным файлом. 

  Запрос = СоздатьОбъект("ЗапросSQL");
  Запрос.ДобавитьУсловие("Ном", "ID", "", Группа, "");
  Запрос.текст = "
  |SELECT  Ном.ID AS [Товар $Справочник.Номенклатура]
  |FROM
  |  $Справочник.Номенклатура AS Ном
  |WHERE %ID AND Ном.ISMARK = '' AND Ном.IsFolder = 2 
  |ORDER BY Ном.ID
  |";
  тз = Запрос.Выполнить(); 
  тз.выбратьСтроки();
  СписокТовара = СоздатьОбъект("СписокЗначений");
  тз.выгрузить(СписокТовара);
  
  RS = СоздатьОбъект("ODBCRecordset");
  ТекстЗапроса = "
  |SELECT ус_Партии.PARENTEXT [Владелец $Справочник.Номенклатура]
  |   ,$ус_Партии.ШтрихКод ШтрихКод
  |FROM $Справочник.ус_Партии AS ус_Партии With (NOLOCK)
  |WHERE (ус_Партии.PARENTEXT IN (SELECT Val FROM #СписокТовара)) AND (ус_Партии.ISMARK = 0) AND ($ус_Партии.ШтрихКод LIKE '%"+СокрЛП(КодТовара)+"%')
  |GROUP BY ус_Партии.PARENTEXT
  |    , $ус_Партии.ШтрихКод
  |ORDER BY ус_Партии.PARENTEXT
  |";
  RS.УложитьСписокОбъектов(СписокТовара,"#СписокТовара");
  ТЗ = RS.ВыполнитьИнструкцию(ТекстЗапроса);  
  Если ПустоеЗначение(ТЗ) = 1 Тогда Нашли = 0; КонецЕсли;
  ТЗ.выбратьСтроку();

В итоге выберутся только товары из справочника партий с нужным вхождением символов "КодТовара", например, у каждого товара указан основной поставщик, а у поставщика имеется свое правило, исходя из этого я узнаю с какой группой товаров мне работать. Далее при сканировании 2510110065230763210, ищу, например КодТовара = 006523 в справочнике ус_Партии и нахожу два штрих-кода 1009110065230145267, 1809110065230262345. Все нужный товар найден.

Скачать файлы

Наименование Файл Версия Размер
ЗапросSQL.ert 5
.ert 70,00Kb
19.10.11
5
.ert 70,00Kb Скачать

См. также

Подписаться Добавить вознаграждение
В этой теме еще нет сообщений.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа