| Автор | Сообщение |
|
|
| |
Пост N: 725
Зарегистрирован: 08.07.06
|
|
Отправлено: 24.03.25 22:01. Заголовок: ЭДО и все вопросы по его реализации (REST API / JSON / XML)
В ближайшее время нам предстоит переход к маркировке продукции через "Честный Знак". Вопросы, связанные с применением ТСД (терминала сбора данных) начал изучать тут: http://clipper.borda.ru/?1-4-0-00001398-000-0-0-1742816912 Кроме того, что каждая марка на каждой упаковке товара должна быть отсканирована, весь документооборот маркированной продукции должен проходить ТОЛЬКО В ЭЛЕКТРОННОМ ВИДЕ, через провайдера ЭДО. С одной стороны, это конечно круто и избавляет торговых и бухгалтерию от головняка, связанного с печатями, подписями, возвратом и потерей бумажных документов, но с другой - наваливает работы программистам. Почитал документацию у нашего провайдера тут: https://saby.ru/help/integration/api/all_methods/format и даже немного обрадовался. Если раньше было нагромождение десятков вложенных скобок <data> ... </data>, то сейчас это более понятный (для меня) JSON и протокол REST API, с которым я сейчас пытаюсь разобраться для ТСД под управлением Mobile SMARTS. По крайней мере, готовить данные в виде хэша и и обмениваться ими при помощи hb_JsonEncode() / hb_JsonDecode() на порядок проще, чем прогрызаться через кучу скобок... Давайте тут делиться опытом, наверняка некоторым из нас будет взаимно полезно. upd: так понимаю, что документы всё равно передаются в XML и это печально...
|
 |

|
|
Ответов - 39
, стр:
1
2
All
[только новые]
|
|
|
|
| постоянный участник
|
Пост N: 4702
Зарегистрирован: 17.02.12
|
|
Отправлено: 24.03.25 23:09. Заголовок: Sergy пишет документ..
Sergy пишет | цитата: | | документы всё равно передаются в XML и это печально... |
| Есть в hb lib-ы для работы с xml, можно использовать их, можно старый "дедовский" метод файлы шаблонов готовых вариантов xml и подстановки в них данных, например, тут https://clipper.borda.ru/?1-4-0-00001349-000-0-0-1631200103 Берете за основу пример xml-ы из описания системы, она должна быть, т.к. надо знать в каком виде\формате данные подаются в тегах, т.е. даты, числа (разделители ), типы документов ... (у нас целые талмуды даются к системам обмена данными xml)
|
 |

|
|
|
| |
Пост N: 173
Зарегистрирован: 09.09.11
|
|
Отправлено: 25.03.25 07:03. Заголовок: Sergy отправил на ли..
Sergy отправил на личную почту.... описание XML , который нужно создать
|
 |

|
|
|
| |
Пост N: 376
Зарегистрирован: 05.10.06
|
|
Отправлено: 17.05.26 22:41. Заголовок: Sergy пишет: В ближ..
Sergy пишет: | цитата: | | В ближайшее время нам предстоит переход к маркировке продукции через "Честный Знак" |
| Хотел поинтересоваться, как вы реализовали печать маркировки из базы данных ? Какую утилиту использовали для формирования GS1 DataMatrix ?
|
 |

|
|
|
| |
Пост N: 743
Зарегистрирован: 08.07.06
|
|
Отправлено: 19.05.26 14:44. Заголовок: Пока ничего не делал..
Пока ничего не делал, если честно. Вот только сейчас клюнул жареный петух... начиная с 1 мая вся импортируемая или производимая продукция нашей категории попадает под маркировку. Мне даже не с кем посоветоваться. Есть 1с-ники, которые "могут всё". Но у нас не 1с... Как грамотнее хранить эти "марки" ? Нужно ли сверять приход марок от поставщика ? "пикать" каждую единицу продукции ? 1с-ники говорят "забей", "никто не сверяет" и "все так делают"... Короче, куча вопросов пока без ответа.
|
 |

|
|
|
| |
Пост N: 377
Зарегистрирован: 05.10.06
|
|
Отправлено: 19.05.26 17:57. Заголовок: Sergy пишет: Мне да..
Sergy пишет: | цитата: | Мне даже не с кем посоветоваться. Есть 1с-ники, которые "могут всё". Но у нас не 1с... Как грамотнее хранить эти "марки" ? Нужно ли сверять приход марок от поставщика ? "пикать" каждую единицу продукции ? 1с-ники говорят "забей", "никто не сверяет" и "все так делают"... |
| У нас тоже самописная, но в связке с 1С, которая взаимодействует с честным знаком через свой модуль. геморой еще тот...
|
 |

|
|
|
| |
Пост N: 1
Зарегистрирован: 11.11.25
|
|
Отправлено: 19.05.26 19:01. Заголовок: Sergy пишет: Как гр..
Sergy пишет: | цитата: | Как грамотнее хранить эти "марки" ? Нужно ли сверять приход марок от поставщика ? "пикать" каждую единицу продукции ? 1с-ники говорят "забей", "никто не сверяет" и "все так делают"... |
| Хранить лучше полностью, но это иллегал. Зато всегда можно воспроизвести в генераторе, если что. По поводу сверки при приемке - решать вам. Зависит от типа номенклатуры в том числе. Прослеживается ли владелец или нет. Ну и т.п.
|
 |

|
|
|
| |
Пост N: 744
Зарегистрирован: 08.07.06
|
|
Отправлено: 19.05.26 21:35. Заголовок: СергейП пишет: Хран..
СергейП пишет: | цитата: | | Хранить лучше полностью, но это иллегал. |
| Уточни пожалуйста - как это "иллегал" ? Запрещено хранить марки, которые приняты твоей организацией ? | цитата: | | Зато всегда можно воспроизвести в генераторе, если что. |
| тут тоже не очень понятно... | цитата: | | По поводу сверки при приемке - решать вам. Зависит от типа номенклатуры в том числе. Прослеживается ли владелец или нет. Ну и т.п. |
| Ооочень нужна пояснительная бригада. Как это "прослеживается владелец" ? Ведь если работаешь с честным знаком, значит в любом случае обязательна регистрация в их системе через ЭЦП.
|
 |

|
|
|
| |
Пост N: 378
Зарегистрирован: 05.10.06
|
|
Отправлено: 20.05.26 10:50. Заголовок: СергейП пишет: Зато..
СергейП пишет: | цитата: | | Зато всегда можно воспроизвести в генераторе, если что. |
| Как вы генерируете этикетку в Харбуре ? Я пока делаю через варезную софтину, хотелось бы уйти от этого...
|
 |

|
|
|
| |
Пост N: 2
Зарегистрирован: 11.11.25
|
|
Отправлено: 22.05.26 14:35. Заголовок: Sergy пишет: Уточни..
Sergy пишет: | цитата: | Уточни пожалуйста - как это "иллегал" ? Запрещено хранить марки, которые приняты твоей организацией ? |
| Да. Можно хранить, но без криптохвоста. Факт принятия отражается в ЧЗ. Некоторые ТГ, например молочка, приходят пока по ОСУ. Марки числятся за производителем до вывода из оборота. | цитата: | | тут тоже не очень понятно... |
| Ну, мало ли, какие могут быть обстоятельства) Если есть полный КМ, то можно сгенерировать GS1 Datamatrix в генераторе ШК. К примеру, https://barcode.tec-it.com/ru/GS1DataMatrix?data=0104610032201243215_tBK7%5Cx1D93bHKM | цитата: | | Ооочень нужна пояснительная бригада. Как это "прослеживается владелец" ? |
| В некоторых ТГ, например табачка, пиво, свойство isTracking=true. Т.е., продавец в этом случае обязан контролировать свойство isOwner. И, если оно false, т.е. не владелец, то продажа запрещена. При приёмке со сканированием можно выявлять "чужие" марки. Как-то так)
|
 |

|
|
|
| |
Пост N: 3
Зарегистрирован: 11.11.25
|
|
Отправлено: 22.05.26 14:35. Заголовок: MIKHAIL пишет: Как ..
MIKHAIL пишет: | цитата: | | Как вы генерируете этикетку в Харбуре ? |
| Не, онлайн-генератор)
|
 |

|
|
|
| |
Пост N: 379
Зарегистрирован: 05.10.06
|
|
Отправлено: 23.05.26 12:05. Заголовок: СергейП пишет: Не, ..
СергейП пишет: Лучше ничего не ответить, чем ответить так...
|
 |

|
|
|
|
|
| |
Пост N: 8304
Зарегистрирован: 17.05.05
|
|
Отправлено: 23.05.26 12:16. Заголовок: MIKHAIL уточни о ка..
MIKHAIL уточни о каких этикетках речь, возможно смогу чем то помочь
|
 |

|
|
|
| |
Пост N: 4
Зарегистрирован: 11.11.25
|
|
Отправлено: 23.05.26 14:37. Заголовок: MIKHAIL пишет: Лучш..
MIKHAIL пишет: | цитата: | | Лучше ничего не ответить, чем ответить так... |
| ? Странная у вас реакция на правду)
|
 |

|
|
|
| |
Пост N: 380
Зарегистрирован: 05.10.06
|
|
Отправлено: 23.05.26 14:48. Заголовок: Dima пишет: MIKHAIL..
Dima пишет: | цитата: | MIKHAIL уточни о каких этикетках речь, возможно смогу чем то помочь |
| Для печати этикеток нужно формировать изображение GS1 DataMatrix, пока не нашел подходящую библиотеку, что бы встроить печать в код. Приходиться пользоваться внешними утилитами типа NiceLabel, хотя она тоже решает вопросы с автоматизацией, но не вполне легально...
|
 |

|
|
|
| |
Пост N: 8305
Зарегистрирован: 17.05.05
|
|
Отправлено: 23.05.26 17:51. Заголовок: MIKHAIL HB_ZEBRA_CR..
MIKHAIL HB_ZEBRA_CREATE_DATAMATRIX ну ты понял какую либу применить
|
 |

|
|
|
| |
Пост N: 381
Зарегистрирован: 05.10.06
|
|
Отправлено: 23.05.26 18:47. Заголовок: Dima пишет: HB_ZEBR..
Dima пишет: | цитата: | | HB_ZEBRA_CREATE_DATAMATRIX |
| она использует hbcairo, я еще в 21 году пост писал, у меня так и не получилось ее собрать
|
 |

|
|
|
| |
Пост N: 8306
Зарегистрирован: 17.05.05
|
|
Отправлено: 23.05.26 18:56. Заголовок: MIKHAIL пишет: она ..
MIKHAIL пишет: | цитата: | она использует hbcairo, я еще в 21 году пост писал, у меня так и не получилось ее собрать |
| ну не знаю... собрал пример BMP.PRG ни каких Cairo не нужно, на выходе получил BMP файлы с различными штрих кодами в том числе те что нужны тебе собирал так C:\hb34_x86\bin\hbmk2 bmp -lhbbmp -lhbzebra BMP если что можно перегнать в любой другой формат с помощью WIA.ImageProcess
|
 |

|
|
|
| |
Пост N: 8307
Зарегистрирован: 17.05.05
|
|
Отправлено: 23.05.26 19:01. Заголовок: MIKHAIL https://i.p..
MIKHAIL 
|
 |

|
|
|
| |
Пост N: 382
Зарегистрирован: 05.10.06
|
|
Отправлено: 23.05.26 19:04. Заголовок: Dima пишет: собрал ..
Dima пишет: что то туплю, а где это пример лежит ?
|
 |

|
|
|
| |
Пост N: 8308
Зарегистрирован: 17.05.05
|
|
Отправлено: 23.05.26 19:05. Заголовок: ....\contrib\..
....\contrib\hbzebra\tests\bmp.prg
|
 |

|
|
|
| |
Пост N: 8309
Зарегистрирован: 17.05.05
|
|
Отправлено: 23.05.26 19:07. Заголовок: если надо выложу сюд..
если надо выложу сюда
|
 |

|
|
|
|
|
| |
Пост N: 383
Зарегистрирован: 05.10.06
|
|
Отправлено: 23.05.26 19:07. Заголовок: Dima пишет: .... ..
Dima пишет: | цитата: | ....\contrib\hbzebra\tests\bmp.prg |
|
а у меня такого нет
|
 |

|
|
|
| |
Пост N: 384
Зарегистрирован: 05.10.06
|
|
Отправлено: 23.05.26 19:08. Заголовок: MIKHAIL пишет: если..
MIKHAIL пишет: будь добр, видимо давно не обновлял
|
 |

|
|
|
| |
Пост N: 8310
Зарегистрирован: 17.05.05
|
|
Отправлено: 23.05.26 19:08. Заголовок: /* * Copyright 202..
/* * Copyright 2025 Przemyslaw Czerpak <druzus /at/ priv.onet.pl> */ #require "hbzebra" #require "hbbmp" #define WIDTH 1 REQUEST HB_GT_CGI_DEFAULT PROCEDURE Main() DrawBarcode( WIDTH, "EAN13", "477012345678" ) DrawBarcode( WIDTH, "EAN8", "1234567" ) DrawBarcode( WIDTH, "UPCA", "01234567891" ) DrawBarcode( WIDTH, "UPCE", "123456" ) DrawBarcode( WIDTH, "CODE39", "ABC123" ) DrawBarcode( WIDTH, "CODE39", "ABC123", HB_ZEBRA_FLAG_CHECKSUM + HB_ZEBRA_FLAG_WIDE3 ) DrawBarcode( WIDTH, "ITF", "12345678901", HB_ZEBRA_FLAG_CHECKSUM ) DrawBarcode( WIDTH, "MSI", "1234567", HB_ZEBRA_FLAG_CHECKSUM ) DrawBarcode( WIDTH, "CODABAR", "40156", HB_ZEBRA_FLAG_WIDE3 ) DrawBarcode( WIDTH, "CODE93", "ABC-123" ) DrawBarcode( WIDTH, "CODE11", "1234567890", HB_ZEBRA_FLAG_CHECKSUM + HB_ZEBRA_FLAG_WIDE3 ) DrawBarcode( WIDTH, "CODE128", "Code 128" ) DrawBarcode( WIDTH, "PDF417", "Hello, World of Harbour!!! It's 2D barcode PDF417 :)" ) DrawBarcode( WIDTH, "DATAMATRIX", "Hello, World of Harbour!!! It's 2D barcode DataMatrix :)" ) DrawBarcode( WIDTH, "QRCODE", "https://en.wikipedia.org/wiki/QR_Code" ) ? RETURN STATIC PROCEDURE DrawBarcode( nLineWidth, cType, cCode, nFlags ) LOCAL hZebra, cFile, cBitMap, pBMP, ; nLineHeight, nX, nY, nWidth, nHeight, nDepth, nAlign, nColor SWITCH cType CASE "EAN13" ; hZebra := hb_zebra_create_ean13( cCode, nFlags ) ; EXIT CASE "EAN8" ; hZebra := hb_zebra_create_ean8( cCode, nFlags ) ; EXIT CASE "UPCA" ; hZebra := hb_zebra_create_upca( cCode, nFlags ) ; EXIT CASE "UPCE" ; hZebra := hb_zebra_create_upce( cCode, nFlags ) ; EXIT CASE "CODE39" ; hZebra := hb_zebra_create_code39( cCode, nFlags ) ; EXIT CASE "ITF" ; hZebra := hb_zebra_create_itf( cCode, nFlags ) ; EXIT CASE "MSI" ; hZebra := hb_zebra_create_msi( cCode, nFlags ) ; EXIT CASE "CODABAR" ; hZebra := hb_zebra_create_codabar( cCode, nFlags ) ; EXIT CASE "CODE93" ; hZebra := hb_zebra_create_code93( cCode, nFlags ) ; EXIT CASE "CODE11" ; hZebra := hb_zebra_create_code11( cCode, nFlags ) ; EXIT CASE "CODE128" ; hZebra := hb_zebra_create_code128( cCode, nFlags ) ; EXIT CASE "PDF417" ; hZebra := hb_zebra_create_pdf417( cCode, nFlags ); nLineHeight := nLineWidth * 3 ; EXIT CASE "DATAMATRIX" ; hZebra := hb_zebra_create_datamatrix( cCode, nFlags ); nLineHeight := nLineWidth ; EXIT CASE "QRCODE" ; hZebra := hb_zebra_create_qrcode( cCode, nFlags ); nLineHeight := nLineWidth ; EXIT ENDSWITCH IF hZebra != NIL IF hb_zebra_geterror( hZebra ) == 0 IF nLineHeight == NIL nLineHeight := nLineWidth * 36 ENDIF nAlign := 32 nDepth := 1 nX := nY := 1 /* get barcode size and add 1 pixel border over it */ hb_zebra_getsize( hZebra, @nWidth, @nHeight ) nWidth := nWidth * nLineWidth + nY + nY nHeight := nHeight * nLineHeight + nX + nX ? cType, "code width", hb_ntos( nWidth ), "height", hb_ntos( nHeight ) IF Empty( pBMP := hb_bmp_new( nWidth, nHeight, nDepth ) ) ? "Cannot create BMP image" ELSE /* allocate white color (RGB) and use it to fill the background */ nColor := hb_bmp_color( pBMP, 255, 255, 255 ) hb_bmp_rect( pBMP, 0, 0, nWidth, nHeight, nColor ) /* allocate black color for barcode drawing */ nColor := hb_bmp_color( pBMP, 0, 0, 0 ) ? "Building BMP with", cType, "code for vale:", hb_zebra_getcode( hZebra ) hb_zebra_draw_bmp( hZebra, pBMP, nColor, nX, nY, nLineWidth, nLineHeight ) cFile := Lower( cType ) + ".bmp" ? "Creating BMP file:", cFile IF ! hb_bmp_save( pBMP, cFile ) ? "Cannot save BMP to file:", cFile ENDIF /* destroy BMP file */ pBMP := NIL ENDIF /* and now much faster version */ cBitMap := hb_zebra_getbitmap( hZebra, nAlign, .T./*lBottomUp>*/, @nWidth, @nHeight, nLineWidth, nLineHeight, nX ) pBMP := hb_bmp_frombitmap( cBitMap, nAlign, nWidth, nHeight, nDepth, /*nDPI*/, /*aPalette*/, /*@nError*/ ) cFile := Lower( cType ) + "b.bmp" ? "Creating BMP file:", cFile IF ! hb_bmp_save( pBMP, cFile ) ? "Cannot save BMP to file:", cFile ENDIF /* destroy BMP file */ pBMP := NIL ELSE ? "Type", cType, "Code", cCode, "Error", hb_zebra_geterror( hZebra ) ENDIF hb_zebra_destroy( hZebra ) ELSE ? "Invalid barcode type", cType ENDIF ? RETURN STATIC FUNCTION hb_zebra_draw_bmp( hZebra, pBMP, nColor, ... ) IF hb_zebra_geterror( hZebra ) != 0 RETURN HB_ZEBRA_ERROR_INVALIDZEBRA ENDIF RETURN hb_zebra_draw( hZebra, {| x, y, w, h | hb_bmp_rect( pBMP, x, y, w, h, nColor ) }, ... )
|
 |

|
|
|
| |
Пост N: 385
Зарегистрирован: 05.10.06
|
|
Отправлено: 23.05.26 19:14. Заголовок: Dima пишет: #requir..
Dima пишет: так у меня нету самой библиотеки в пакете
|
 |

|
|
|
| |
Пост N: 8311
Зарегистрирован: 17.05.05
|
|
Отправлено: 23.05.26 19:17. Заголовок: капец.... могу сырцы..
капец.... могу сырцы Harbour выложить 17 метров от 23.04.2026 (там все есть) пиши если надо и куда сложить
|
 |

|
|
|
| |
Пост N: 386
Зарегистрирован: 05.10.06
|
|
Отправлено: 23.05.26 19:20. Заголовок: Dima пишет: пиши ес..
Dima пишет: | цитата: | пиши если надо и куда сложить |
|
написал в личку
|
 |

|
|
|
| |
Пост N: 8312
Зарегистрирован: 17.05.05
|
|
Отправлено: 23.05.26 19:28. Заголовок: MIKHAIL https://fex..
|
 |

|
|
|
| |
Пост N: 8313
Зарегистрирован: 17.05.05
|
|
Отправлено: 23.05.26 19:36. Заголовок: MIKHAIL отпиши если..
MIKHAIL отпиши если поймал или не поймал, тогда придумаем что то другое
|
 |

|
|
|
| |
Пост N: 2054
Зарегистрирован: 20.02.11
|
|
Отправлено: 23.05.26 19:41. Заголовок: Dima пишет: require..
Dima пишет: Дима, зебра поддерживает обычный DataMatrix , но не GS1 DataMatrix для сканеров внешней логистики. Единственный путь встроить в harbour, это делать обертку на опенсорс zint , там есть и cи исходники библиотеки и DLL для подключения. Другие варианты это принтера со встроенной поддержкой печати GS1, online генераторы, и все остальное платное , где если повезет есть rest API Как изврат можно по rest обратиться к 1С и при наличии там компоненты GS1, получить картинку уже из 1С
|
 |

|
|
|
| |
Пост N: 8314
Зарегистрирован: 17.05.05
|
|
Отправлено: 23.05.26 19:49. Заголовок: Haz /* DataMatr..
|
 |

|
|
|
|
|
| |
Пост N: 2055
Зарегистрирован: 20.02.11
|
|
Отправлено: 23.05.26 20:06. Заголовок: Dima пишет: DataMat..
Dima пишет: | цитата: | | DataMatrix is ISO/IEC 16022:2006 |
| После беглого просмотра - это не GS1 Подробнее - в тему нужно погружаться, Можно найти стандарт даташита на gs1 , но кто его в harbere реализует ? Можно найти кучу онлайн кодеров и утилит для генерации картинки, как правило либо триал либо подписка А готовой либы для harbour точно нет. Правда я интересовался в прошлом году, может уже появился добрый волшебник и все есть .
|
 |

|
|
|
| |
Пост N: 8315
Зарегистрирован: 17.05.05
|
|
Отправлено: 23.05.26 20:18. Заголовок: Haz пишет: Правда я..
Haz пишет: | цитата: | Правда я интересовался в прошлом году, может уже появился добрый волшебник и все есть . |
| эта свежая.
|
 |

|
|
|
| |
Пост N: 2056
Зарегистрирован: 20.02.11
|
|
Отправлено: 23.05.26 20:35. Заголовок: Dima пишет: эта све..
Dima пишет: Ты про libdmtx , то там нет упоминания про стандарты GS1 Другие опенсорсы у меня не открываются, хотя лезу через Нидерланды. Почитаю подробнее на досуге просто ради любопытства, в моей работе это не нужно 😁 Тут нюанс в том для чего используется, для чтения кода или для печати наклейки. Поскольку считанный сканером код это байт последовательности, то их можно править ручками по стандарту, Но это очень тернистый путь
|
 |

|
|
|
| |
Пост N: 8316
Зарегистрирован: 17.05.05
|
|
Отправлено: 23.05.26 20:45. Заголовок: Haz ладно, проехали..
Haz ладно, проехали...просто хотел помочь, но online сканеры не распознают bmp что создал пример что выше..
|
 |

|
|
|
| |
Пост N: 745
Зарегистрирован: 08.07.06
|
|
Отправлено: 24.05.26 16:04. Заголовок: Вот эта штука умеет..
Вот эта штука умеет GS1: https://barcode.tec-it.com/ru/GS1DataMatrix Но понятное дело, что это для штучных задач - остатки этим способом не перемаркировать. Подскажите пожалуйста, правильно ли я понял написанное тут: https://www.cleverence.ru/support/77127/ Получается, что для того, чтобы DataMatrix картинка соответствовала стандарту GS1, у кодирующей последовательности должны выполняться условия: 1) начало - CHR(232) = код FNC1 2) вставить разделители полей переменной длины - CHR(29) ?
|
 |

|
|
|
| |
Пост N: 387
Зарегистрирован: 05.10.06
|
|
Отправлено: 24.05.26 19:10. Заголовок: Sergy пишет: Но пон..
Sergy пишет: | цитата: | Но понятное дело, что это для штучных задач - остатки этим способом не перемаркировать. Подскажите пожалуйста, правильно ли я понял написанное тут: https://www.cleverence.ru/support/77127/ Получается, что для того, чтобы DataMatrix картинка соответствовала стандарту GS1, у кодирующей последовательности должны выполняться условия: 1) начало - CHR(232) = код FNC1 2) вставить разделители полей переменной длины - CHR(29) ? |
| Я NiceLabel настроил для маркировки, полный код маркировки беру из 1С, он идет уже с разделителями, разбираю на компоненты и скармливаю этой проге. Она сама из компонентов формирует правильный GS1 DataMatrix, который корректно считывается. Для маркировки остатков сойдет...
|
 |

|
|
|
| |
Пост N: 5
Зарегистрирован: 11.11.25
|
|
Отправлено: 25.05.26 15:59. Заголовок: MIKHAIL пишет: долж..
|
 |

|
|
|
| |
Пост N: 6
Зарегистрирован: 11.11.25
|
|
Отправлено: 25.05.26 16:02. Заголовок: MIKHAIL пишет: Но п..
MIKHAIL пишет: | цитата: | | Но понятное дело, что это для штучных задач |
| Конечно. Для перемаркировки остатков нужно в ЧЗ покупать коды.
|
 |

|
|
Ответов - 39
, стр:
1
2
All
[только новые]
|
|