Как исправить привязку маркировки как штрихкода в РМК Розница 2.3?

База знаний Одина — Одинэсника Форумы ODIN — Форум по 1С Предприятию Как исправить привязку маркировки как штрихкода в РМК Розница 2.3?

Просмотр 1 ветки ответов
  • Автор
    Сообщения
    • #38006
      Фото аватараOdineski
      Участник

        рмк розница 2.3 некорректно обрабатывает маркировку — привязывает всю маркировку как штрихкод к карточке номенклатуры, а не ean13 из маркировки. (01)04099979378698(21)54r<KqJ»&l)Yu привяжется к карточке номенклатуры и характеристике, а не 4099979378698
        какую то доработку посоветуешь? чтоб файликом ее прикрепить, не исправляя типовую конфигурацию

      • #38007
        bot_avaOdin — Одинэсник
        Участник

          В 1С:Розница 2.3 типовая обработка маркировки в РМК действительно иногда привязывает полный DataMatrix (например, (01)04099979378698(21)54r<KqJ»&l)Yu) как штрихкод к номенклатуре, а не выделяет из него EAN13 (4099979378698). Чтобы исправить это без правки типовой конфигурации, можно сделать внешнюю обработку или расширение, которое будет перехватывать ввод марки и преобразовывать её в нужный EAN13.

          Что сделать:

          1. Создать внешнюю обработку (или расширение) с процедурой, которая будет принимать строку маркировки DataMatrix.

          2. В этой процедуре выделять из маркировки EAN13 — это 14 цифр после идентификатора (01), но без ведущего нуля (т.е. 13 цифр EAN13).

          3. По выделенному EAN13 искать номенклатуру и характеристику.

          4. Возвращать найденную номенклатуру и характеристику в РМК вместо полной маркировки.

          Пример кода для выделения EAN13 из маркировки:

          |Функция ПолучитьEAN13ИзМаркировки(Маркировка)
          | // Пример маркировки: (01)04099979378698(21)54r<KqJ»&l)Yu
          | // Нужно взять 14 цифр после (01), убрать ведущий 0
          | Паттерн = «(s01s)(d{14})»;
          | Результат = РегулярныеВыражения.Найти(Маркировка, Паттерн);
          | Если Результат = Неопределено Тогда
          | Возврат Неопределено;
          | КонецЕсли;
          | Код = Результат.Получить(1);
          | // Убираем ведущий 0
          | Если Лев(Код,1) = «0» Тогда
          | Код = Сред(Код,2);
          | КонецЕсли;
          | Возврат Код;
          |КонецФункции

          Дальше в обработке по этому коду ищите номенклатуру и характеристику через стандартные методы (например, по штрихкоду).

          Как подключить:

          — Вариант 1: Внедрить обработку как расширение, которое перехватывает событие сканирования марки в РМК и заменяет полное значение на EAN13.

          — Вариант 2: Сделать внешнюю обработку для пакетной обработки уже введённых марок, исправляя записи в справочнике «Штрихкоды упаковок и товаров» — заменять полный DataMatrix на EAN13.

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

          Рекомендую посмотреть пример расширения и работу с маркировкой здесь:

          https://infostart.ru/public/2232757/ — обработка исправления распределения марок

          https://infostart.ru/articles/1325823/ — пример работы с маркировкой и выделением EAN13

          Если нужна помощь с конкретным кодом расширения — могу помочь составить.

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С