Маркировка табака. Формирование тега 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 код товара

См. также

SALE! 50%

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

Кассовые операции Файловый обмен (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 9720 руб.

19.08.2020    64927    297    73    

205

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

3600 руб.

09.08.2017    147871    865    372    

525

Акцизы на сахаросодержащие напитки

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

Расширение для Бухгалтерии предприятия 3.0 «Акцизы на сахаросодержащие напитки» предназначено для автоматизированного учета сумм акцизов по реализованным сахаросодержащим напиткам с 01 июля 2023 года. Позволяет выделить суммы акциза в первичных документах («Реализация товаров и услуг», «Корректировка реализации»), сформировать проводки по начислению акциза, а также сформировать и отправить корректные документы по ЭДО.

14400 руб.

16.10.2023    1079    10    0    

9

Выгрузка УПД реализации в 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.

12000 руб.

13.04.2018    82057    390    9    

426

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

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

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

29400 руб.

29.06.2023    4453    9    4    

18

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

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

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

40800 руб.

19.12.2022    10080    18    18    

15

Групповая выгрузка и загрузка файлов 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 Россия Бухгалтерский учет Платные (руб)

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

18000 руб.

15.12.2022    6426    106    25    

14
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. philya 77 02.07.19 00:51 Сейчас в теме
BASE64 на последнем шаге не всегда нужен. Меркурий 119Ф съедает реквизит без перекодировки и передает в ОФД.
29. succub1_5 88 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 88 10.07.19 14:36 Сейчас в теме
Атол - ДТО 10 - кодировать или нет?
3. kirlog 109 14.07.19 11:45 Сейчас в теме
Дто 10 кодирует сам. Он и в байты переводит сам. Не нужно кодировать отдельно. На форуме Атола есть примеры.
4. succub1_5 88 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 109 30.07.19 14:40 Сейчас в теме
Здравствуйте.
Для ДТО 10 в посте (4) приведен пример.
Для ДТО 8 вот пример:
StreamFormat = Объект.Драйвер.StreamFormat;
Объект.Драйвер.StreamFormat        = 5;
Объект.Драйвер.AttrValue		        = КодМаркиДляПередачи;
Объект.Драйвер.AttrNumber		= 1162;
Объект.Драйвер.WriteAttribute();
Если Объект.Драйвер.ResultCode <> 0 Тогда
				
	ПолучитьОписаниеОшибки(Объект, Истина);
				
	Объект.Драйвер.StreamFormat = StreamFormat;
				
        Возврат мОшибкаНеизвестно;
				
Иначе
		
Объект.Драйвер.StreamFormat = StreamFormat;
				
КонецЕсли;
Показать
39. atdonya 94 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 94 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 109 15.07.19 19:24 Сейчас в теме
Да. Я именно эту ветку на форуме Атола имел в виду. Судя по тому, что там в итоге отвечают, этого достаточно.
Для духов, думаю, надо будет поменять вот этот параметр fptr.LIBFPTR_NT_TOBACCO. Остальная логика останется той же.
Но по духам пока рано говорить что то конкретное До Ноября 2019г идет эксперимент.
Скорее всего, все будет по аналогии с табаком.
succub1_5; +1 Ответить
6. plutonii 24.07.19 13:50 Сейчас в теме
а по обуви есть какие то наработки? информация?
7. kirlog 109 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 109 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 109 31.07.19 14:01 Сейчас в теме
(10) Вот это свойство передаете? StreamFormat = 5
15. pkMIXER 31.07.19 23:42 Сейчас в теме
Спасибо большое, мне непонятно было что за переменная в 4 посте, если честно)

Еще вопрос такой, уже много пачек содержат мрц(цену) в себе, перепрошитый элвес-м(древний автономный франкенштейн) умеет ее читать, где нибудь есть документация по поводу того, как из сосканированного кода достать цифру цены??
(12)
16. kirlog 109 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 109 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 109 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 3760 05.08.19 10:18 Сейчас в теме
(21) компонента ждет уже разобранный штрихкод, 3 поля gtin, серия и тип маркировки.
23. pkMIXER 05.08.19 12:26 Сейчас в теме
Простите, если туплю, но не могу понять что нужно в то поле отдавать, где просит 13 значный код?
24. kirlog 109 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 88 21.10.19 11:43 Сейчас в теме
(27)так для каждой позиции же передается.
32. user1353602 03.02.20 12:03 Сейчас в теме
(28) Так что получается, если в рамках одной продажи отпускается 10 пар обуви, то в чеке эта позиция разобьётся на 10? Каждая со своим КМ?
Это касается и ДТО 10?
38. succub1_5 88 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 88 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 88 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 88 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 109 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 байта.
И вроде в ЧЗ это проходит, КИЗ списывается из оборота.
Оставьте свое сообщение