Маркировка табака. Формирование тега 1162 "код товара" для передачи в ККТ и ОФД

27.06.19

Задачи пользователя - Адаптация типовых решений

С 01.07.2019 стартует новый этап маркировки сигарет. Теперь в кассе обязательно надо будет считывать марку с пачек табака, если она там есть. Считывать и передавать в ОФД через тег 1162 в онлайн-кассе. А как сформировать данные этого тега? Не все так просто...

Марка на табак - это последовательность символов. Например "00000046186195Xp4k=xyAQDPtFEa". Это штрихкод марки.

А передать в тег 1162 нужно байтовый массив. Описано тут: https://xn--80ajghhoc2aj1c8b.xn--p1ai/upload/iblock/784/Algoritm_zapisi_tega_1162_tabachnoy_produktsii.pdf

Предлагаю свой вариант, как это сделать средствами 1С:

Функция ПолучитьКодДляПередачиТега1162(ШтрихкодМарки)

    //В штрихкоде марки нас интересуют первые 14 символов  - GTIN и вторые 7  - серия

    ГТИН   = Лев(ШтрихкодМарки,14);
    Серия  = Сред(ШтрихкодМарки,15,7);
    
    //GTIN преобразуем в число, получаем строку байтов (HEX на самом деле), добиваем до 6 байтов
    
    Попытка
        ГТИНЧислом  = Число(ГТИН);
        ГТИНБайтами = "";
        Пока ГТИНЧислом > 0 Цикл
              ГТИНБайтами = Сред("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ", ГТИНЧислом%16 + 1, 1) + ГТИНБайтами;
              ГТИНЧислом = Цел(ГТИНЧислом/16) ;
           КонецЦикла;
    Исключение
        Возврат "";
    Конецпопытки;    
    
    Пока СтрДлина(ГТИНБайтами)<12 Цикл
        ГТИНБайтами = "0"+ГТИНБайтами;
    КонецЦикла;    
        
    //Серию преобразуем в байты посимвольно старым методом - через временный файл
    
    ИмяФ = ПолучитьИмяВременногоФайла("txt");
    Т = Новый ТекстовыйДокумент();
    Т.УстановитьТекст(Серия);
    Т.Записать(ИмяФ,КодировкаТекста.ANSI);
    ДД = Новый ДвоичныеДанные(ИмяФ);
    СерияБайтами = Строка(ДД);
    СерияБайтами = СтрЗаменить(СерияБайтами," ","");
    УдалитьФайлы(ИмяФ);
    
    //Формируем код товара для передачи. 0005 это код типа маркрировки - "табак".
    
    мбКодТовара    = "0005"+ГТИНБайтами+СерияБайтами;
    ВрКодТовара    = мбКодТовара;    


    МассивБайт  = "";
    
    Пока СтрДлина(мбКодТовара)>0 Цикл
        
        МассивБайт = МассивБайт+" "+Лев(мбКодТовара,2);
        мбКодТовара = Сред(мбКодТовара,3);
                
    КонецЦикла;    
    

    //Все!!! Вот эту строку с "массивом байт" можно передавать в тег 1162 в ККТ
    Возврат СокрЛП(МассивБайт);


    
 Но если интересно, покажу дальше, как сделать из строки двоичные данные, а из них BASE64

 Ведь именно это мы увидим в личном кабинете ОФД....   

мбКодТовара = ВрКодТовара;

     //Получаем из строки байтов двоичные данные
    
    Попытка
        ТипhexBinary    = ФабрикаXDTO.Тип("http://www.w3.org/2001/XMLSchema", "hexBinary"); 
        ДвоичныеДанные      = ФабрикаXDTO.Создать(ТипhexBinary,мбКодТовара);
    Исключение
        Возврат "";
    КонецПопытки;    
    
    //Кодируем их в BASE64
    
    Попытка
        СтрКод = Base64Строка(ДвоичныеДанные.Значение);
    Исключение
        Возврат "";
    КонецПопытки;        
    
    Возврат СтрКод;
    
КонецФункции

 

Маркировка сигареты 1162 код товара

См. также

Табличная часть в доп. реквизитах и формирование таблиц в шаблоне docx для 1С:ДО 3.0

Адаптация типовых решений Платформа 1С v8.3 1С:Документооборот Россия Платные (руб)

Расширение конфигурации для «1С:Документооборот КОРП», редакция 3.0. позволяет: 1.использовать произвольные табличные части в качестве дополнительных реквизитов к документу; 2 использовать произвольные табличные части в шаблонах в формате docx для автоматического заполнения таблиц.

29400 руб.

29.06.2023    4968    11    5    

20

Загрузка чеков в 1С из ФНС в документы БП, УНФ, ERP, КА и УТ

Кассовые операции Файловый обмен (TXT, XML, DBF), FTP ЭДО и ОФД Программист Бухгалтер Пользователь Платформа 1С v8.3 Бухгалтерский учет 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Бухгалтерский учет Налоговый учет Управленческий учет Платные (руб)

В публикации размещены специализированные обработки для загрузки кассовых чеков в базах 1С (для локальных баз): '1С:Бухгалтерия предприятия, ред. 3.0', '1С:Управление нашей фирмой 8, ред. 3.0', '1С:Комплексная автоматизация, ред. 2.5', ‘1С:ERP Управление предприятием, ред. 2’ и ‘1С:Управление торговлей, ред. 11.5’. Вы просто сканируете QR коды с бумажных и электронных чеков c помощью мобильного приложения ФНС и чеки автоматически (без ручного ввода) загружаются в документы 'Авансовый отчет', 'Расходы предпринимателя', 'Путевой лист', 'Приходная накладная', 'Поступление (акты, накладные, УПД)', 'Приобретение товаров и услуг', 'Отчет о розничных продажах' и 'Поступление денежных документов'.

12960 руб.

19.08.2020    66230    309    73    

213

ЭДО: организация архива оригиналов первичных документов, комплексный отчет по ошибкам

Документооборот и делопроизводство (СЭД) ЭДО и ОФД Учет документов Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Мощный, единый инструмент для решения всех проблем, связанных с переходом на ЭДО. Экономит бумагу и время - организует архив оригиналов первичных документов прямо в базе 1С, в прикрепленных файлах к соответствующим документам. С помощью комплексного отчета по ошибкам в ЭДО позволяет выявить и исправить все возможные ошибки - ошибочно сопоставленные документы, не подписанные документы, подписанные, но не загруженные в 1С документы. Автоматически сопоставляет не сопоставленные между собой документы. Может работать по расписанию и присылать отчет о состоянии архива/по ошибкам на почту. Взаимодействует напрямую с сервисами Диадок/СБИС, имеет интуитивно понятный интерфейс и учитывает 3-х летний опыт 40+ клиентов.

14880 руб.

17.12.2018    44807    62    51    

75

Загрузка данных из ОФД в 1С:Бухгалтерию 3.0, 1С:КА 2.4, 2.5, УНФ 1.6/3.0 о денежных поступлениях (чеках)

Кассовые операции ЭДО и ОФД Бухгалтер Платформа 1С v8.3 Бухгалтерский учет 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Комплексная автоматизация 2.х Россия Бухгалтерский учет Платные (руб)

Согласно 54-ФЗ по правилам ведения кассовых операций необходимо оформлять приходные кассовые ордера (ПКО) и расходные кассовые ордера (РКО) на основании чеков ККМ. Все данные о чеках, можно взять на сайте оператора фискальных данных (ОФД). Обработка загрузки данных из ОФД в 1С сделает за вас в 1С - ПКО и РКО, Операции по платежным картам или Отчет о розничных продажах (может создать номенклатуру в 1С, указать налоги и др. реквизиты в документах в зависимости от налогообложения ККМ в торговой точке). Проверено на: OFD.RU / Первый ОФД / Такском / Платформа ОФД / Ярус / ОФД Яндекс / ОФД Астрал /ОФД СБИС / Гарант ОФД / КОРУС ОФД / КОНТУР ОФД / ОФД АО Тандер / ИнитПро / Группа Элемент/

3600 руб.

09.08.2017    149031    874    372    

531

Выгрузка УПД реализации из 1С в xml ФНС для загрузки в ЭДО: Диадок, СБИС, Такском, КОРУС, Астрал и прочие. Обработка на управляемых формах для БП 3.0, УНФ 1.6 / 3.0, УТ 11.4 / 11.5, КА 2, ERP 2 (Приказ ФНС №820 от 19.12.2018, 736 от 12.10.2020)

Оптовая торговля Производство готовой продукции (работ, услуг) Файловый обмен (TXT, XML, DBF), FTP ЭДО и ОФД Бухгалтер Платформа 1С v8.3 Бухгалтерский учет Управляемые формы 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Бухгалтерский учет Платные (руб)

Выгрузка УПД, товарной накладной ТОРГ-12, акта, счета-фактуры по реализации (в БП сч-ф на аванс) в xml-файл в формате ФНС приказ 820 от 19.12.2018. Выгрузка УКД и корректировочного счета-фактуры в xml-файл в формате ФНС приказ 736 от 12.10.2020. Выгрузка товарной накладной в xml-файл ФНС приказ 551 от 13.11.2015, редакция 08.04.2019. Выгрузка акта приемки-сдачи работ (услуг) в xml-файл ФНС приказ 552 от 13.11.2015, редакция 08.04.2019. Добавлена выгрузка счетов на оплату по документам ЗаказПокупателя (в УНФ), ЗаказКлинета (в УТ / КА / ERP), СчетНаОплатуПокупателю (в БП). Добавлена обработка Выгрузка УПД c документов реализации 1С в Контур.Диадок по API.

15600 руб.

13.04.2018    83010    394    9    

429

Государственные контракты в УТ 11.5, КА 2.5.11 с выгрузкой в ЕИС (Госзакупки)

Регламентированный учет и отчетность Обмен с ГосИС ЭДО и ОФД Бухгалтер Пользователь Платформа 1С v8.3 1С:Управление торговлей 11 Оптовая торговля, дистрибуция, логистика Россия Управленческий учет Платные (руб)

Работаете по контрактной схеме, сталкивались с проблемой, что в контракте жестко указаны наименование, цена, единица измерения товара. И не все готовы создавать новую номенклатуру под каждый контракт или менять наименование и единицу измерения для уже имеющейся. Тем более, бывает так, что контракт - это формальность. Контракт не описывает жесткие условия поставки, нужно соблюсти правильность в предоставлении документов. Данное решение позволит вам оперировать своей номенклатурой при оформлении реализаций по государственному контракту в УТ 11.5 и КА 2.5.11, в то же время выводить на печать документы, соответствующие данным контракта. Реализована выгрузка для сайта госзакупок (ЕИС) по 44-ФЗ.

40800 руб.

19.12.2022    10648    21    19    

17

Групповая выгрузка и загрузка файлов из 1С в XML для ЭДО в каталог по приказу №820 ФНС (для УТ 10.3/11, КА2, ERP2, БП3, УНФ, УПП1.3, Розница2.3). Поддержка маркировки. Прослеживание товаров.

ЭДО и ОФД Файловый обмен (TXT, XML, DBF), FTP Обмен с ГосИС Бухгалтер Пользователь Платформа 1С v8.3 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Бухгалтерский учет Платные (руб)

Групповая выгрузка файлов из 1С в формате XML для ЭДО в каталог по приказу №820 ФНС для Контур.Диадок, СБИС и других провайдеров ЭДО. Поддержка УНФ 1.6, УНФ 3.0 Поддержка УТ 10.3, УПП 1.3 Поддержка Розница 2.3 Добавлена выгрузка непосредственно из документа

18000 руб.

15.12.2022    6935    108    26    

18
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. philya 77 02.07.19 00:51 Сейчас в теме
BASE64 на последнем шаге не всегда нужен. Меркурий 119Ф съедает реквизит без перекодировки и передает в ОФД.
29. succub1_5 89 12.11.19 10:55 Сейчас в теме
а кстати, QR код если передать не разбирая на GTIN и SerialNumber - в 1162 тег, пишут что ДТО 10 и выше само перобразует, или из GTIN и SerialNumber формирует?
просто не видел еще - что на выходе?
QR = (01)00000046210654(21)ADgopSq(91)12(92)1234v67i
GTIN = 00000046210654
SerialNumber = ADgopSq (?)
fptr.setParam(fptr.LIBFPTR_PARAM_NOMENCLATURE_TYPE, fptr.LIBFPTR_NT_TOBACCO);
fptr.setParam(fptr.LIBFPTR_PARAM_GTIN, "00000046210654");
fptr.setParam(fptr.LIBFPTR_PARAM_SERIAL_NUMBER, "ADgopSq");
fptr.utilFormNomenclature();
nomenclatureCode = fptr.getParamByteArray(fptr.LIBFPTR_PARAM_TAG_VALUE);
рез = fptr.setParam(1162, nomenclatureCode);


или сразу можно:
рез = fptr.setParam(1162, "(01)00000046210654(21)ADgopSq(91)12(92)1234v67i");


и для духов вместо fptr.LIBFPTR_NT_TOBACCO что надо указать?
2. succub1_5 89 10.07.19 14:36 Сейчас в теме
Атол - ДТО 10 - кодировать или нет?
3. kirlog 120 14.07.19 11:45 Сейчас в теме
Дто 10 кодирует сам. Он и в байты переводит сам. Не нужно кодировать отдельно. На форуме Атола есть примеры.
4. succub1_5 89 15.07.19 15:41 Сейчас в теме
(3)т.е. этого хватит?
//Формируем коды в соответствии с документацией на драйвер.
fptr.setParam(fptr.LIBFPTR_PARAM_NOMENCLATURE_TYPE, fptr.LIBFPTR_NT_TOBACCO);
fptr.setParam(fptr.LIBFPTR_PARAM_GTIN, "04600266011725");
fptr.setParam(fptr.LIBFPTR_PARAM_SERIAL_NUMBER, "2095134");
fptr.utilFormNomenclature();
nomenclatureCode = fptr.getParamByteArray(fptr.LIBFPTR_PARAM_TAG_VALUE);
рез = fptr.setParam(1162, nomenclatureCode);

*а духи тоже так?
9. kirlog 120 30.07.19 14:40 Сейчас в теме
Здравствуйте.
Для ДТО 10 в посте (4) приведен пример.
Для ДТО 8 вот пример:
StreamFormat = Объект.Драйвер.StreamFormat;
Объект.Драйвер.StreamFormat        = 5;
Объект.Драйвер.AttrValue		        = КодМаркиДляПередачи;
Объект.Драйвер.AttrNumber		= 1162;
Объект.Драйвер.WriteAttribute();
Если Объект.Драйвер.ResultCode <> 0 Тогда
				
	ПолучитьОписаниеОшибки(Объект, Истина);
				
	Объект.Драйвер.StreamFormat = StreamFormat;
				
        Возврат мОшибкаНеизвестно;
				
Иначе
		
Объект.Драйвер.StreamFormat = StreamFormat;
				
КонецЕсли;
Показать
39. atdonya 107 11.05.20 11:20 Сейчас в теме
(9)
Добрый день, подскажите, пожалуйста.
У нас маркировка обуви, мы уже долго бьемся, чтобы передать данные маркировки в ОФД
мы пробовали уже и так и эдак

драйвер 8.16.5.9221
ЭККА Атол 55Ф
версия прошивки 7942

вот код (насколько я понимаю, он, вроде как сделан, как ив примере)

врДрайверККМ.BeginItem();
врДрайверККМ.ItemType = 1; ///__ по идее, так (10-это денежные средства, бонусы и т.д.) 1- Товар
Если врТовар.Маркировка Тогда
    врStreamFormat = врДрайверККМ.StreamFormat;
    врДрайверККМ.StreamFormat = 5;
    врДрайверККМ.AttrNumber = 1162;
    врДрайверККМ.AttrValue = Сред(врТовар.ДляЭККА,9); 
    //__ отделяются данные 8А041500 (номер тэга и длина данных - в ШтрихМ отправляется с ними, а тут, вроде, без них), 
    // остается 444d02A335821CB96b3d682534376374383c517043  (это уже преобразованных код) 444d - признак обуви
    врДрайверККМ.WriteAttribute();
    врДрайверККМ.StreamFormat 		= врStreamFormat;
КонецЕсли;
//... далее там тэги таможенные коды и прочее
врДрайверККМ.Name = врТовар.Наименование; 
врДрайверККМ.Price = врТовар.Цена;
врДрайверККМ.Quantity = врТовар.Количество;
врДрайверККМ.Summ = врТовар.Сумма;
врДрайверККМ.TaxTypeNumber = 4;
врДрайверККМ.PaymentMode = врРекв.ПризнакРасчета; //__ 3-аванс, по идее, 4-полный расчет //Для тэга 1214
врДрайверККМ.EndItem();
Показать


вот лог ЭККА
29.04.2020 11:23:25.601 0000000047 Driver.BeginItem
29.04.2020 11:23:25.601 0000000000 TCustomTechThread.SetResult -1:
29.04.2020 11:23:25.601 0000000000 Посылка пакета: C2 12
29.04.2020 11:23:25.604 0000000016 Посылка пакета: C1 01 13 00 00 EA 00 01 00
29.04.2020 11:23:25.632 0000000015 TCustomTechThread.SetResult -1: (InProgress)
29.04.2020 11:23:25.654 0000000031 TCustomTechThread.SetResult 0:
29.04.2020 11:23:25.654 0000000000 Received async answer: 55 00 00
29.04.2020 11:23:25.654 0000000000 TCustomTechThread.SetResult 0:
29.04.2020 11:23:25.654 0000000062 Driver.Set_ItemType 1
29.04.2020 11:23:25.654 0000000000 Driver.Set_StreamFormat 5
29.04.2020 11:23:25.654 0000000000 Driver.Set_AttrValue 444d02A335821CB96b3d682534376374383c517043
29.04.2020 11:23:25.654 0000000000 Driver.Set_AttrNumber 1162
29.04.2020 11:23:25.654 0000000000 Driver.WriteAttribute
29.04.2020 11:23:25.654 0000000000 Non-driver exception caught. Class: EAbort; text: Operation aborted
29.04.2020 11:23:25.654 0000000000 Ошибка! ResultCode = -199 ResultDescription = "Неизвестная ошибка (Operation aborted)" BadParam = 0 BadParamDescription = "Ошибок в параметрах нет"
29.04.2020 11:23:25.655 0000000000 Driver.Set_StreamFormat 0
29.04.2020 11:23:25.655 0000000000 Driver.Set_Name 71 092 / Сандалии 71SBST0216 24
29.04.2020 11:23:25.655 0000000000 Driver.Set_Price 2020
29.04.2020 11:23:25.655 0000000000 Driver.Set_Quantity 1
29.04.2020 11:23:25.655 0000000000 Driver.Set_Summ 2020
29.04.2020 11:23:25.655 0000000000 Driver.Set_TaxTypeNumber 4
29.04.2020 11:23:25.655 0000000000 Driver.Set_PaymentMode 4
29.04.2020 11:23:25.655 0000000000 Driver.EndItem

что мы делаем не так?
40. atdonya 107 18.05.20 12:22 Сейчас в теме
(39)В общем, если кому-то вдруг понадобится,
444d02A335821CB96b3d682534376374383c517043
должна выглядеть
44 4d 02 A3 35 82 1C B9 6b 3d 68 25 34 37 63 74 38 3c 51 70 43
пробелами через байт
остальное все так, как и было
5. kirlog 120 15.07.19 19:24 Сейчас в теме
Да. Я именно эту ветку на форуме Атола имел в виду. Судя по тому, что там в итоге отвечают, этого достаточно.
Для духов, думаю, надо будет поменять вот этот параметр fptr.LIBFPTR_NT_TOBACCO. Остальная логика останется той же.
Но по духам пока рано говорить что то конкретное До Ноября 2019г идет эксперимент.
Скорее всего, все будет по аналогии с табаком.
succub1_5; +1 Ответить
6. plutonii 24.07.19 13:50 Сейчас в теме
а по обуви есть какие то наработки? информация?
7. kirlog 120 24.07.19 18:17 Сейчас в теме
Наработок пока нет.
А информация некоторая есть.
- Вот тут хорошо написано о сроках: https://kontur.ru/articles/5455
- 1С в своих типовых программах начнет поддерживать маркировку обуви в Сентябре: http://v8.1c.ru/lawmonitor/lawchanges.jsp?lawSectionUuid=31711cc6-fa27-4d5e-aed9-65466ded7524

Пока методологии маркировки остатков, например, нет. Самих марок на обуви мало. Рано говорить о разработке чего либо, пока нет полной ясности, что как должно быть. Как обычно, инфа появится в последний момент, как было уже с алкоголем и табаком. Видимо, нас ждет веселый Октябрь:)
8. pkMIXER 30.07.19 10:18 Сейчас в теме
Здравствуйте, коллеги, а есть у кого-нибудь опыт по передачи на фискальник данных о марке? Судя по всему в УТ 10.3.55.1 не доделали этот момент и на фискальный регистратор данные о марке не передаются...
11. kirlog 120 31.07.19 14:00 Сейчас в теме
(8) Смотрите мой 9-й пост.
34. user1370810 29.02.20 08:46 Сейчас в теме
(11) пОСЛЕ ПЕРЕПРОШИВКИ КАССЫ АТОЛ 20Ф , В ЧЕКЕ НЕ ПЕЧАТАЕТСЯ БУКВА м
В ЧЕМ ПРИЧИНА
10. Vitaly 91 31.07.19 10:22 Сейчас в теме
Народ! Нужна помощь в передаче данных в тег 1162. Конфигурация 1С 7.7 самописная. Строку, как в примере, получаю. ДТО8.16.6 выдает ошибку:
30.07.2019 20:42:28.437 0000000047 Driver.Set_AttrNumber 1162
30.07.2019 20:42:28.437 0000000000 Driver.Set_AttrValue 00 05 00 00 02 C1 4C 3E 27 4B 3F 39 4E 4C 73
30.07.2019 20:42:28.437 0000000000 Driver.WriteAttribute
30.07.2019 20:42:28.437 0000000000 Non-driver exception caught. Class: EAbort; text: Operation aborted
30.07.2019 20:42:28.437 0000000000 Ошибка! ResultCode = -199 ResultDescription = "Неизвестная ошибка (Operation aborted)" BadParam = 0 BadParamDescription = "Ошибок в параметрах нет"
30.07.2019 20:42:28.437 0000000000 Driver.Set_Name 8084 Плей Блю-Рэй
30.07.2019 20:42:28.437 0000000000 Driver.Set_Price 90
30.07.2019 20:42:28.437 0000000000 Driver.Set_Quantity 1
30.07.2019 20:42:28.437 0000000000 Driver.Set_Department 1
30.07.2019 20:42:28.437 0000000000 Driver.Set_TaxTypeNumber 4
30.07.2019 20:42:28.437 0000000000 Driver.Registration
30.07.2019 20:42:28.437 0000000047 TCustomTechThread.SetResult -1:
12. kirlog 120 31.07.19 14:01 Сейчас в теме
(10) Вот это свойство передаете? StreamFormat = 5
15. pkMIXER 31.07.19 23:42 Сейчас в теме
Спасибо большое, мне непонятно было что за переменная в 4 посте, если честно)

Еще вопрос такой, уже много пачек содержат мрц(цену) в себе, перепрошитый элвес-м(древний автономный франкенштейн) умеет ее читать, где нибудь есть документация по поводу того, как из сосканированного кода достать цифру цены??
(12)
16. kirlog 120 01.08.19 14:29 Сейчас в теме
(15)
Вы о переменной КодМаркиДляПередачи? Смотрите тогда исходный пост публикации. Там как раз описано, как ее получать.
Цену МРЦ передавать в тег 1162 не надо.
Структура марки табака, 29 знаков:
14 знаков. Код товара - GTIN. У меня показано как получать.
7 знаков. Серия. Также показано.
4 знака. МРЦ. Она закодирована тут аж в 80-чной системе счисления.
4 знака. Контроль.

Алгоритм кодирования МРЦ основан на переводе МРЦ в копейках в 80-чную систему счисления, используя следующий алфавит: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz01234567­89!"%&'*+-./_,:;=<>?

Могу написать код расшифровки МРЦ, если нужно.
18. pkMIXER 04.08.19 09:16 Сейчас в теме
(16) пожалуйста, если вас не сильно затруднит, был бы очень признателен!

И ещё, подскажите, откуда вы берете информацию по поводу 80-тичной системы и количества знаков на каждый "блок"?
19. pkMIXER 04.08.19 11:58 Сейчас в теме
(16)

Посмею немного опередить вас. Проверено на сигаретах всех основных производителей (филип морис, бат, JTI), код, там где он вшит верно, а не в тестовом режиме, корректно переводится в МРЦ, указанное на пачке. По упаковкам метод. данных не имею к сожалению пока, жду ответа на прошлое сообщение)

Код для дешифровки МРЦ:
АлфавитМРЦ = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!""%&'*+-./_,:;=<>?";
	ШКМрц = Сред(ШтрихкодМарки,22,4);
	
	Шаг = 3;
	ЦенаКоп = 0;
	Пока СтрДлина(ШКМрц)>0 Цикл
		Цифра = Лев(ШКМрц,1);
        ЦенаКоп = ЦенаКоп + (Найти(АлфавитМРЦ,Цифра)-1)*Pow(80,Шаг);
		Шаг = Шаг - 1;
		ШКМрц = Сред(ШКМрц,2);
	КонецЦикла;
	Если ЦенаКоп > 500000 Тогда
		//Убираем возможность нереальной цены > 5000 руб за пачку\блок, таких сигарет пока не существует.
		Сообщить("Цена закодирована в тестовом режиме и неверна");
	Иначе
		Сообщить (ЦенаКоп/100);
	КонецЕсли;
Показать
20. kirlog 120 04.08.19 13:53 Сейчас в теме
(19)
По маркировке упаковок у меня инфы пока нет, к сожалению.
43. pkMIXER 17.06.20 18:44 Сейчас в теме
(20) Не появилось инфы по поводу упаковок? Новые версии УТ 10.3 умеют читать их?
И может быть знаете где откорректировать совмещение с неизвестными штрихкодами, можно ли подставлять универсальную номенклатуру "Товар" к примеру, которая будет иметь нужные реквизиты для маркированного товара?
13. Vitaly 91 31.07.19 16:20 Сейчас в теме
Да, StreamFormat = 5 передаю...
14. kirlog 120 31.07.19 20:06 Сейчас в теме
(13) фискальную строку формируете через BeginItem? Код свой можете привести?
У меня работает без проблем вот так:

ОбъектДрайвера.BeginItem();
ОбъектДрайвера.ItemType=1;

ОбъектДрайвера.StreamFormat        = 5;
ОбъектДрайвера.AttrValue                = КодМаркиДляПередачи;
ОбъектДрайвера.AttrNumber        = 1162;
ОбъектДрайвера.WriteAttribute();

ОбъектДрайвера.Name = Наименование;
ОбъектДрайвера.Price = Цена;
ОбъектДрайвера.Quantity = Количество;
ОбъектДрайвера.Department = Отдел;
ОбъектДрайвера.Summ = СуммаСоСкидкой;
ОбъектДрайвера.TaxTypeNumber = НомерСтавкиНДС;

ОбъектДрайвера.EndItem();
Показать
17. Vitaly 91 01.08.19 18:30 Сейчас в теме
Спасибо все заработало!
21. pkMIXER 05.08.19 09:30 Сейчас в теме
В последней версии УТ 10.3.55.2 вышел новый драйвер, который взаимодействует по ХМЛ с чеками, при передаче штрихкола ругается на то что ШК не 13-ти значный, я насколько понял он хочет получить бейс64 без ШК только серия, никто не в курсе?
22. karpik666 3792 05.08.19 10:18 Сейчас в теме
(21) компонента ждет уже разобранный штрихкод, 3 поля gtin, серия и тип маркировки.
23. pkMIXER 05.08.19 12:26 Сейчас в теме
Простите, если туплю, но не могу понять что нужно в то поле отдавать, где просит 13 значный код?
24. kirlog 120 05.08.19 17:33 Сейчас в теме
Видимо, gtin, добитый нулями слева до 13 знаков.
25. pkMIXER 09.08.19 10:05 Сейчас в теме
(24) К сожалению не ГТИН он просит, а именно серийный номер, тот реквизит куда встаёт 2 группа кодировки, т.е. либо base либо бинарный код... Только почему он просит 13 символов непонятно.
26. pkMIXER 23.08.19 18:04 Сейчас в теме
(25) Забыл написать, что удалось определить причину, драйвер запрашивал 13 символов, потому что неверно передавался параметр типа маркировки, вместо нужного кода проставлялась строка названия типа, при замене на код все встает на свои места и код принимается тот что нужно.
27. kravec2001 17.10.19 08:00 Сейчас в теме
Вопрос по маркировки обуви:

MarkingType – равно 5408 для обуви

2. GTIN – равно 14-ти знаком после первых символов 01

3. SerialNumber – 13 символов после значения 21 (т.е. начиная с 19)

4. Далее передаём ККМ команду FNSendItemCodeData()

а если в чеке несколько позиций с обувью как заполнять эти кода при этом они же разные на каждый товар?
28. succub1_5 89 21.10.19 11:43 Сейчас в теме
(27)так для каждой позиции же передается.
32. user1353602 03.02.20 12:03 Сейчас в теме
(28) Так что получается, если в рамках одной продажи отпускается 10 пар обуви, то в чеке эта позиция разобьётся на 10? Каждая со своим КМ?
Это касается и ДТО 10?
38. succub1_5 89 11.03.20 16:00 Сейчас в теме
(32)Да, для контроля маркировки - получается это разные позиции.
30. grafit 8 04.12.19 13:46 Сейчас в теме
Чек на сигареты! Корректный или нет?
Сформировано на ККТ Атол.
ККТ в режиме продажи подакцизного товара.
ПО Розница 1.0.
Драйвер Атол 10.6
Прикрепленные файлы:
44. pkMIXER 17.06.20 18:47 Сейчас в теме
(30)Может быть знаете, почему у меня объединяется в 1 строку весь считанный маркированный товар? У вас например одна и та же позиция в 2 строках разных, у меня почему то в 1 всё сваливается, в чем может быть причина?
31. grafit 8 06.12.19 09:12 Сейчас в теме
Чек ушел, ОФД принял.
Прикрепленные файлы:
33. stans 27.02.20 17:29 Сейчас в теме
Поясните, пожалуйста, не могу понять. У нас обувь и я формирую строку из GTIN и серии 02 A3 35 82 CD DA 2A 65 41 6F 2F 7A 44 54 70 6C 33 27 4F
Для обуви код 1520. Что мне нужно добавить в начале, а то есть разная информация.... 15 20 или 54 08 или ни чего или что-то другое?
35. DimanZ 27 02.03.20 16:37 Сейчас в теме
(33) Обувь 5408 десятичное = 1520 шестнадцатиричное (его и добавлять), но с 1 марта 2020, говорят, нет такого кода, а только 44 4D.
Я тоже уже запутался: дописываю обработку ФР в переписанной ТиС 7.7. Никак не победю эту маркировку (ФР Штрих ритейл)
45. user1290687 17.06.20 23:28 Сейчас в теме
(35)есть инфа какой теперь на обувь код должен быть?
46. DimanZ 27 18.06.20 06:21 Сейчас в теме
(45)
обувь

У клиентов остался 44 4D Hex (он же 17485 десятичный) - не звонили, значит все норм.
36. stans 02.03.20 19:56 Сейчас в теме
Спасибо, тоже еще разбираюсь
37. Сергей Ю. 04.03.20 12:40 Сейчас в теме
Вдруг кому для 7.7 надо:
				ШтрихкодМарки=СокрЛП(СписокТоваров.Товар.Маркировка);
				
				ГТИН   = Сред(ШтрихкодМарки,3,14);
				Серия  = Сред(ШтрихкодМарки,19,13);
			
				Попытка
					ГТИНЧислом  = Число(ГТИН);
					ГТИНБайтами = "";
					Пока ГТИНЧислом > 0 Цикл
				       	ГТИНБайтами = Сред("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ", ГТИНЧислом%16 + 1, 1) + ГТИНБайтами;
				        ГТИНЧислом = Цел(ГТИНЧислом/16) ;
				   	КонецЦикла;
				Исключение
					ОписаниеРезультата = "Ошибка получения кода маркировки";
     				Возврат -1;
				Конецпопытки;
				Пока СтрДлина(ГТИНБайтами)<12 Цикл
				   	ГТИНБайтами = "0"+ГТИНБайтами;
				КонецЦикла;
				
				sc=СоздатьОбъект("MSScriptControl.ScriptControl");
			    sc.language="VBscript";
				СерияБайтами="";
				Для ид=1 по СтрДлина(Серия) Цикл
			  		СерияБайтами=СерияБайтами+sc.eval("hex("+КодСимв(Сред(Серия,ид,1))+")");
			  	КонецЦикла;	
			  	
				Марка    = "444D"+ГТИНБайтами+СерияБайтами;
				МассивБайт = "";
			    Для ид=1 По СтрДлина(Марка) Цикл
			        Если ид/2=Окр(ид/2) Тогда
						МассивБайт = МассивБайт+Сред(Марка,ид,1);
					Иначе
						МассивБайт = МассивБайт+" "+Сред(Марка,ид,1);
					КонецЕсли;	
				КонецЦикла;
				
				МассивБайт=СокрЛП(МассивБайт);

			
				Объект.StreamFormat        = 5;
				Объект.AttrValue  = МассивБайт;
				Объект.AttrNumber = 1162;
				Объект.WriteAttribute();
Показать

Проверено на Атоле. Буква М вылазит. Маркировка в ЧЗ уходит и списывается
48. ЗС1 18.06.20 13:02 Сейчас в теме
(37) Подскажите, есть ли подобный рабочий код на 7.7 для тега 1162 и обуви для Штрихов?
49. nike-arz 18.06.20 15:08 Сейчас в теме
(48)
Объект.Пароль = Пароль;  
					Объект.MarkingType 		= 17485;//  Это "444D"	
					Объект.GTIN 			= GTIN;
					Объект.SerialNumber 	= СерийныйНомер;
					Объект.FNSendItemCodeData(); // отправка тега маркировки
51. HSV 3 19.06.20 05:03 Сейчас в теме
(37) А ДТО 8 у вас? И какие компоненты используете? FprnM1C82_54FZ.dll или FprnM1C.dll И какой AddIn и обработка обслуживания?
41. denverr 19.05.20 13:21 Сейчас в теме
Если кто то работает с драйвером "напрямую" через
fptr = Новый COMОбъект("AddIn.Fptr10");


То для того что бы отправить строковый МассивБайт драйверу нужно использовать конструкцию вида:

fptr.setParamStrHex(1162, МассивБайт);
HSV; PRV2; +2 Ответить
42. pkMIXER 17.06.20 18:28 Сейчас в теме
Подскажите, если в 1С нету ЕАН13 кода и база не знает товар для связки с номенклатурой, можно ли как то заменить необходимую номенклатуру на универсальную "Товар" к примеру? Пытался в коде найти где осуществить подмену, но не нашёл :(
47. succub1_5 89 18.06.20 08:08 Сейчас в теме
(42)какая конфа?
По сути - такие "прыжки": ЧекККМ - позиции - серверная процедура/функция с работой фискального оборудования.
50. HSV 3 18.06.20 19:19 Сейчас в теме
Здравствуйте,

Атол 30ф, ДТО 8.16.6.9250 прошивка 7942.
frATOL54_comm_105.ert

Подскажите какую dll и AddIn в настройках надо указать в ТИС



ни как не получается передать марку, выходит ошибка

17.06.2020 10:18:03.178 0000000828 Driver.BeginItem
17.06.2020 10:18:03.178 0000000000 TCustomTechThread.SetResult -1:
17.06.2020 10:18:03.178 0000000000 Посылка пакета: C2 0B
17.06.2020 10:18:03.193 0000000016 Посылка пакета: C1 01 0C 00 00 EA 00 01 00
17.06.2020 10:18:03.397 0000000203 TCustomTechThread.SetResult -1: (InProgress)
17.06.2020 10:18:03.553 0000000156 TCustomTechThread.SetResult 0:
17.06.2020 10:18:03.553 0000000000 Received async answer: 55 00 00
17.06.2020 10:18:03.553 0000000000 TCustomTechThread.SetResult 0:
17.06.2020 10:18:03.553 0000000375 Driver.Set_ItemType 1
17.06.2020 10:18:03.553 0000000000 Driver.Set_StreamFormat 5
17.06.2020 10:18:03.553 0000000000 Driver.Set_AttrValue 00 05 00 00 02 C1 3D D7 2D 53 5A 4C 27 43 5A 41 42 72 38 20 20
17.06.2020 10:18:03.553 0000000000 Driver.Set_AttrNumber 1162
17.06.2020 10:18:03.553 0000000000 Driver.WriteAttribute
17.06.2020 10:18:03.553 0000000000 Non-driver exception caught. Class: EAbort; text: Operation aborted
17.06.2020 10:18:03.553 0000000000 Ошибка! ResultCode = -199 ResultDescription = "Неизвестная ошибка (Operation aborted)" BadParam = 0 BadParamDescription = "Ошибок в параметрах нет"
17.06.2020 10:18:03.553 0000000000 Driver.Set_Name Ява Белое золото классическая (96)
17.06.2020 10:18:03.553 0000000000 Driver.Set_Price 99
17.06.2020 10:18:03.553 0000000000 Driver.Set_Quantity 1
17.06.2020 10:18:03.553 0000000000 Driver.Set_TaxTypeNumber 4
17.06.2020 10:18:03.553 0000000000 Driver.EndItem
52. HSV 3 23.06.20 12:50 Сейчас в теме
(50) Все заработало, оказывается был в конце пробел после 00 05 00 00 02 C1 3D D7 2D 53 5A 4C 27 43 5A 41 42 72 38 20 20
Марки списались в честном знаке.
53. majkltr 29.10.20 13:49 Сейчас в теме
Подскажите кто знает тип кода товара для ШИН ?
54. succub1_5 89 11.11.20 10:30 Сейчас в теме
(53)сейчас для всех универсальный метод формирования тэга 1162 (если ниже прошивки 5.7 вроде):

Функция ПарсерМаркировки(ШтрихкодМарки) Экспорт
	
	
	//В штрихкоде марки нас интересуют первые 14 символов  - GTIN и вторые 7  - серия 	
	ГТИН   = Лев(ШтрихкодМарки,14);
	Серия  = Сред(ШтрихкодМарки,15,7);
	
	//GTIN преобразуем в число, получаем строку байтов (HEX на самом деле), добиваем до 6 байтов 	
	Попытка
		ГТИНЧислом  = Число(ГТИН);
		ГТИНБайтами = "";
		Пока ГТИНЧислом > 0 Цикл
			ГТИНБайтами = Сред("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ", ГТИНЧислом%16 + 1, 1) + ГТИНБайтами;
			ГТИНЧислом = Цел(ГТИНЧислом/16) ;
		КонецЦикла;
	Исключение
		Возврат Неопределено;
	Конецпопытки;    
	
	Пока СтрДлина(ГТИНБайтами)<12 Цикл
		ГТИНБайтами = "0"+ГТИНБайтами;
	КонецЦикла;    
	
	//Серию преобразуем в байты посимвольно старым методом - через временный файл 	
	ИмяФ = ПолучитьИмяВременногоФайла("txt");
	Т = Новый ТекстовыйДокумент();
	Т.УстановитьТекст(Серия);
	Т.Записать(ИмяФ,КодировкаТекста.ANSI);
	ДД = Новый ДвоичныеДанные(ИмяФ);
	СерияБайтами = Строка(ДД);
	СерияБайтами = СтрЗаменить(СерияБайтами," ","");
	УдалитьФайлы(ИмяФ);
	
	мбКодТовара    = "444D"+ГТИНБайтами+СерияБайтами;   //44h 4Dh - Код товара в формате GS1 Data Matrix или Data Matrix маркировки.

	ВрКодТовара    = мбКодТовара;	
	
	МассивБайт  = "";	
	Пока СтрДлина(мбКодТовара)>0 Цикл		
		МассивБайт = МассивБайт+" "+Лев(мбКодТовара,2);
		мбКодТовара = Сред(мбКодТовара,3); 		
	КонецЦикла;	
	
	//Все!!! Вот эту строку с "массивом байт" можно передавать в тег 1162 в ККТ
	Возврат СокрЛП(МассивБайт);		
    
КонецФункции
Показать
55. Kirill_A 11.11.20 13:06 Сейчас в теме
(54)
ПарсерМаркировки


Это код марки
010290000268907521;ZhDv=rd,Kk>p91EE0692bKAMtbVf2XnfY10oiuFA2iMGEeXiG9A9fEPO7GX9+MU=

(01) 02900002689075 (21) ;ZhDv=rd,Kk>p - вот ГНТ и Серия

Тот код что вы дали не верно же берет гнт и серию - это не первые 14 символов а 14 символов от 01 до 21 - после 21 - 13 символов серия...

Не похоже это на универсальный метод, да и вообще на метод формирования MarkingCode. Или я что то не так понял ?
59. succub1_5 89 16.11.20 11:51 Сейчас в теме
(55)да, вы правы - это не код универсального метода для всех видов продукции. Вот только "444D" - это стало универсальным префиксом для всего.
А Гтин и Сериал - это для табака
ГТИН   = Лев(ШтрихкодМарки,14);
    Серия  = Сред(ШтрихкодМарки,15,7);

для духов и туалетки:
ГТИН = Сред(ШтрихкодМарки,3,14);
Серия = Сред(ШтрихкодМарки,19,13); 
56. Kirill_A 11.11.20 13:14 Сейчас в теме
(54)

ГТИН = Сред(ШтрихкодМарки,3,14);
Серия = Сред(ШтрихкодМарки,19,13);

Если на этот код исправить начало тогда все верно парсит ))
succub1_5; +1 Ответить
57. Kirill_A 11.11.20 13:28 Сейчас в теме
Драйвер 10.5, Атол 11Ф, прошивка 7942 (вроде можно сразу кидать марку в Base64)

Передаю марку сразу в <GoodCodeData MarkingCode="44 4D 02 A3 35 A1 50 33 3B 5A 68 44 76 3D 72 64 2C 4B 6B 3E 70"/> ККТ не печатает (((

Если передаю так то все передается но не понятно что нужно передавать в StampType? (У меня ШИНЫ)
//GTIN,Serial,1520 ЗаписьXML.ЗаписатьАтрибут("StampType",XMLСтрока(СокрЛП("444D"))); // передавал и 1520 и 17485 результат одинаковый
ЗаписьXML.ЗаписатьАтрибут("GTIN",XMLСтрока("02900002689075")); //ЗаписьXML.ЗаписатьАтрибут("SerialNumber",XMLСтрока(";ZhDv=rd,Kk>p"));


Это отображается в ОФД FSACozWhUDM7WmhEdj1yZCxLaz5w но вот что смущает - при формирование такой же марки в Типовой конфиге Base64 такой RE0CozWhUDM7WmhEdj1yZCxLaz5w! Отличия в первых 3 символах! Вот не могу понят правильно в итоге передает или нет....

Если кидать марку только в Base64 или HEX ККТ упорно не печатает! Уже голову сломал - что ей надо еще !
58. s000632 13 12.11.20 12:45 Сейчас в теме
60. belarus_767 05.01.22 12:55 Сейчас в теме
Здравствуйте. Помогите решить проблему отправки тега 1162 пожалуййте.
Сделал как в описано в статье, но дает ошибку -4048. Из-за чего может быть?
Вот код отправки тега:
	Если СтрокаМассива.Свойство("Маркируемая") тогда 
		Если СтрокаМассива.Маркируемая Тогда
			КодМаркиДляПередачи = ПолучитьКодДляПередачиТега1162(СтрокаМассива.ШтрихкодМарки);
			StreamFormat = Объект.Драйвер.StreamFormat;
			Объект.Драйвер.StreamFormat        = 5;
			Объект.Драйвер.AttrValue                = КодМаркиДляПередачи;
			Объект.Драйвер.AttrNumber        = 1162;
			Объект.Драйвер.WriteAttribute();
			Если Объект.Драйвер.ResultCode <> 0 Тогда
				ПолучитьОписаниеОшибки(Объект, Истина);
				Объект.Драйвер.StreamFormat = StreamFormat;
				Возврат мОшибкаНеизвестно;
			Иначе
				Объект.Драйвер.StreamFormat = StreamFormat;
			КонецЕсли;
		КонецЕсли;
	КонецЕсли;
Показать

Вот лог АТОЛ:
Лог АТОЛ
61. HSV 3 24.01.22 08:27 Сейчас в теме
Здравствуйте, подскажите вот такой КМ (сыр)
0104607070735809215iGLpK]93BjlC
правильно будет побайтно в таком виде?
44 4D 04 30 AA D0 8D C1 00 00 00 00 00 35 69 47 4C 70 4B 20 20
62. kirlog 120 24.01.22 14:39 Сейчас в теме
Здравствуйте!

У меня получается вот так: 44 4D 04 30 AA D0 8D C1 35 69 47 4C 70 4B 20 20 20 20 20 20 20
Т.е. я не добиваю gtin нулями до 11 байтов, а добиваю всю последовательность в конце до 21 байта.
И вроде в ЧЗ это проходит, КИЗ списывается из оборота.
Оставьте свое сообщение