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

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

#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С