Форум OlegON > Программы и оборудование для автоматизации торговли > Системы автоматизации торговли > КИС Lack & УС Land

ЕГАИС. Нужна ли вообще, а тем более для розницы маркировка групповой тары? : КИС Lack & УС Land

29.03.2024 0:45


28.12.2018 21:21
Greben
 
Согласен. Иногда коробка в ШК как "новогодняя ёлка".

Но что мешает "пикнуть" товароведу другой ШК и, в конце концов усвоить, где на коробке располагается "нужный" , скорее всего "фабричный" ШК. Особенно, если таких коробок в приходе несколько.
Под отсутствием необходимости проверять ШК требованиям ФСРАР - тут речь идёт о корректности ШК, присланных Поставщиком во входящей ТТН. "Пикнутые" ШК просто сверяются с ТТН на "совпадение".

Если коробка банально была перепутана при разгрузке - если смогут, то экспедиторы принесут другую, возможно нужную. Иначе - потребуется вмешательство администрации.
29.12.2018 11:41
AndreyZh
 
Цитата:
Greben Приношу извинения уважаемому сообществу разработчиков УС для ЕГАИС в том что "взбаламутил" тему приёмки Розницей приходных ТТН в стиле "покоробочного" учета.
На фоне новостей о "нюансах" такого учёта для конечного владельца "помарочной" продукции, прозвучавших на форумах ФСРФР и Egais2016, приём Розницей ТТН "на доверии" (даже для "фабричной" продукции"), откладывается на весьма неопределённое время, если не сказать "на всегда".
Соответственно, из ранее озвученного мною алгоритма действий "товароведа" при приёмке "машины", остаётся востребованным только лишь один пункт:
1) Сканирует "коробку". Нет такой - "Несите другую, эта не наша".
Вскрывать же "чужую" коробку (перепутанную грузчиками или водителем), и "пикать" из неё марки - как то неэтично по отношению к другим получателям АП в данной "развозке".

Для этого, IMXO, достаточно реализовать в "USLandEgais" ИНДИКАЦИЮ (а не УЧЁТ), принадлежности "коробки" получателю:
Т.е., в моём представлении, возможные действия "USLandEgais" при приёмке входящей ТТН:
1. Создаётся временный пул "упаковок" из данных тэгов <ce:boxnumber>ШК</ce:boxnumber>. При этом соответствие формата ШК "упаковок" требованиям ФСРАР можно игнорировать.
2. Если товаровед "пикает" ШК, который не соответствует типу "марка", то "искать" этот ШК среди "упаковок". Если ШК найден, то его игнорировать (или оповещать - "ШК коробки присутствует в ТТН"). Иначе - звуковое и визуальное сообщение (например, "ШК коробки не найден").
3. В дальнейшем пул "упаковок" удаляется, и в учёте не используется.
Подумал, что наверное могут существовать бизнес процессы приёмки, в которых стоит задача максимально быстро отпустить "чужого" водителя или это приёмка на типа РЦ

То есть сначала забирают коробки, затем, когда-нибудь проверяют марки, а уже по этим результатам разбираются с поставщиками... Мы же не боимся трудностей?

Просто в реале... Проверяют бутылки, если ок, то подписываются бумажки и отпускают водителя-экспедитора, а иначе: созвон с поставщикоми решение проблем... Это сложности привнесенные поставщиком - их водитель подождет!

Цитата:
plvn24 Вот тут не понял. На коробке понаклеено много каких шк. И что будет - "несите другую" ?
Это, как всегда должен быть геморрой для разработчиков, которые должны включать свой ФЛК информации считываемой из источника, разбираясь по теме "а это ещё что?"
05.01.2019 11:42
AndreyZh
 
Цитата:
Greben Согласен. Иногда коробка в ШК как "новогодняя ёлка"...
Проверено на реально пришедших заводских коробах от посредника с алкопродукцией с новыми марками... Несмотря на несколько разных ШК на коробках, код групповой тары четко выделен и считывается обычным двумерным сканером, а если пикнуть другой ШК, то программа ругается на несуществующий ШК тары в накладной.

Конечно, если коробок много, от 20 ящиков дешевого бухла, может быть и есть смысл? В начале в сервисе приёма пропикать ШК коробов, а приняв их от водителя, затем спокойно проверять каждую бутылку или согласится со всеми марками ТТН без приёма каждой бутылки.

Тестовая поставка была показательной: 5 коробок с водкой 3 наименований и ещё 7 наименований без выделения групповой тары.
23.04.2019 10:10
AndreyZh
 
Люблю такие вопросы и пожелания, полученные из любого источника... Не зря говорят - правильно поставленный вопрос - половина ответа, а здесь целых 80% решения...
Цитата:
Добавление ФЛК на число символов, полученных от сканера в сервисе приёмки ТТН (с марками "АМ150" или "АМ68") или "упаковкой" (её длина 26 или 18 символов), IMXO, не повредит никому. Решать, конечно, Вам.

1. Если "длина" не равна (18, 26, 68, 150), тогда сообщение об ошибке.
2. Иначе, если "длина" равна (18, 26), тогда ФЛК "упаковки".
3. Иначе, если "длина" равна (68, 150), тогда ФЛК "марки".
23.04.2019 15:35
AndreyZh
 
Вышеуказанная задача решена и "масло сделано более масленным". Покажу в картинках реакцию программы. По сути пришлось доработать единственную функцию анализа ШК, вызываемую на любой запрос ШК во всех экранных формах и большую часть времени потратил на тест каждой её ветки.

На картинках, в сервисе приёма, где наибольшее число вариаций отражены типичные неверные значения вносимые "ручками", копипастом или со сканера:










Хотя и раньше на дополнительных контролах программа не давала вводить нелогичные по ФЛК значения, анализирую содержимое накладной в ЕГАИС:







Полный список контролов и алгоритм действий и реакций программы можно посмотреть в подробно описанном исходном коде программы:

Текст функции контроля вводимого ШК марки и групповой тары:
Код:
* -------------------------------------------------------------------------------------------------
*   Проверяю на правильность и логичность кода акцизной марки на длину и вхождение допустимых набо-
*   ров символов. Вызов из различных режимов - универсальный код. Параметры:
*       cAm     68 или 150 разрядный код приходящий со сканера 2d
*       lSerAM  Истина, если вызов из сервиса проверок акцизных марок
*       lBox    Истина, если контролировать ещё возможность ШК групповой тары из сервиса приёма
*   05.01.2018  При чтении ^V из блокнота, а из Excel вообще последний знак кривой. Убрал, что прог-
*       рамма ругается на ошибку и иммитирует нажатие клавиши Enter, если вводим в ручную
*   18.06.2018  Обработка, пока примитивная, т.к. не знаю алгоритмов марок DataMax 150 знаков
*   29.12.2018  Добавил анализ ШК групповой тары - набор цифр
*   23.04.2019  Добавил ФЛК и на длину ШК групповой тары, который м.б. 18, 26 цифровых знаков
FUNC lgCheckAM( cAm, lSerAM, lBox )
    LOCA nI:=0, nL:=0, lBad:=FALSE
    DEFAULT lSerAm TO FALSE, lBox TO FALSE
    
    //  Убираю пробелы и определение длины марки. Привожу ШК к допустимой длине, отбрасывая мусорный символ
    cAm := Alltrim(cAm)
    nL  := Len(cAm)
    
    DO CASE
    CASE nL = 68        //  Правильная старая марка
    CASE nL = 69        //  Старая марка, введенная копипастом
        cAm     := Left(cAm,68)
        nL      := 68
    CASE nL = 150       //  Новая марка, введенная со сканера
    CASE nL = 151       //  Новая марка, введенная копипастом
        cAm     := Left(cAm,150)
        nL      := 150
    CASE nL = 18        //  Правильный ШК групповой тары
    CASE nL = 19        //  ШК групповой тары введенный копипастом
        cAm     := Left(cAm,18)
        nL      := 18
    CASE nL = 26        //  Правильный ШК групповой тары
    CASE nL = 27        //  ШК групповой тары введенный копипастом
        cAm     := Left(cAm,26)
        nL      := 26
    ENDC

    IF nL > 26          //  Акцизная марка или сбойный ШК
        IF !((nL = 68) .OR. (nL = 150))   THEN ErrMess("У Вас марка "+Alltrim(Str(nL))+"! Однако длина марки должна быть точно равна 68 или 150 символов!",cError); RETU FALSE
        
        //  Символы должны быть в верхнем регистре и входить в разрешенный набор знаков: цифры и латинские буквы
        FOR nI := 1 TO nL
            IF !( Subs(cAm,nI,1) $ _SIMB_AM )
                lBad    := TRUE
                EXIT
            ENDI 
        NEXT nI
        IF lBad THEN Errmess("Акцизная марка или ШК содержит недопустимые символы! Символы должны быть в верхнем регистре и входить в разрешенный набор знаков: цифры и латинские буквы",cError); RETU FALSE

        //  Проверка на повторный ввод марки в сервисе проверок акцизных марок
        IF lSerAm
            nI  := ascan(aeAM,{|x|x[6]==cAm})
            IF nI > 0 THEN ErrMess("Уже вводили данную акцизную марку в запросе!",cError); RETU FALSE
        ENDI
    ELSE                //  ШК групповой тары или мусор
        IF lBox         //  Проверяю, как ШК групповой тары
            IF !((nL = 18) .OR. (nL = 26))   THEN ErrMess("Неверная длина ШК групповой тары = "+Alltrim(Str(nL))+"! Должная быть 18 или 26 цифровых знаков!",cError); RETU FALSE

            //  Все символы должны иметь числовое значение
            FOR nI := 1 TO nL
                IF !( Subs(cAm,nI,1) $ "0123456789" )
                    lBad    := TRUE
                    EXIT
                ENDI 
            NEXT nI
            IF lBad THEN Errmess("Штрихкод групповой тары может иметь только цифры!",cError); RETU FALSE
        ELSE            //  Проверка акцизной марки. Не вызов, как ФЛК групповой тары
            ErrMess("У Вас марка "+Alltrim(Str(nL))+"! Однако длина марки должна быть точно равна 68 или 150 символов!",cError); RETU FALSE
        ENDI
    ENDI
    RETU TRUE


P.S. До кучи сделал сообщения более детальными и понятными
25.06.2019 10:42
AndreyZh
 
Как дополнение к релизу 27.06 сделал, в плане отработки интерфейсных приёмов, пару техник по анализу групповой тары в сервисе приёмки ТТН. Как известно можно в нём проверить коробки, что бы понять, что выгрузили наш товар, а также, в том числе перемежая проверять марки бутылок.

1. Комбинированные резюмирующие диагностические сообщения. В принципе использую подход - ловлю "первую" проблему, даю по ней сообщение и прекращаю обработку. Однако пользователь может делать сразу несколько ошибок и иногда разумно проверять все и сразу давать сводку по всем его "ошибкам", например на скрине отражена диагностика сразу по 2 популярным косякам пользователей, совершаемым одновременно. Основная моя "проблема", что бы данная техника не снижала производительность программы:





2. On-line справка об "внутренних" реестрах программы "УСЕга". В большинстве режимов программа ведет скрытые от пользователя реестры данных, по которым производится диагностика или которые используются, как временное хранилище данных для отчетов или сохранении информации. Однако продвинутые пользователи "хотят всё знать и понимать", как отработку универсальной техники добавил справку об уже "пропиканных" ШК групповой тары - инфу использовал для "внутренних" нужд. Справка по неограниченному числу ШК, форма отражения адаптируется к длине списка, вызывается вызывается нажатием кнопки F4 в режиме приёмки:

20.04.2020 14:28
katyakima
 
Цитата:
17.12.2018 включен ФЛК на стороне сервера в продуктивном и тестовом контурах
тэг boxnumber ТТН теперь должен соответствовать утвержденному

В противном случае приходит отказной тикет, содержащий
Цитата:
Элемент " fsrar . ru/WEGAIS/ CommonV3:boxnumber" недействителен: значение "БЛА-БЛА-БЛА" недействительно с точки зрения его типа данных " fsrar . ru /WEGAIS/Common:boxNumber TypeString" — Сбой ограничения Pattern.

Как всегда выясняется только после рысканья по форуму рар..
Здравствуйте. То что я процитировала выше - это почти все, что я нагуглила в принципе по моему вопросу

Собственно суть вопроса: Ситуация такая - мы возвращаем алкоголь нашим поставщикам, работаем с программой SH4decl.
Каким образом делать возврат мы поняли и даже некоторое количество алкоголя мы благополучно отписали в ЕГАИСЕ

Но некоторые возвратные накладные не прошли. Сообщение об ошибке:

Проверка по XSD завершилась с ошибками: Элемент "/WEGAIS/CommonV3 :boxnumber" недействителен: значение "NoBox" недействительно с точки зрения его типа данных "/WE GAIS/Common:boxNumberTypeString" — Сбой ограничения Pattern.
Элемент "WEGAIS/CommonV3:boxnum" недействителен: значение "NoBox" недействительно с точки зрения его типа данных "/WEGAIS/Common:boxNumberTypeString" — Сбой ограничения Pattern.

Звонок в службу поддержки по ЕГАИС поставщика: от них совет "Удалите слово NoBox, которое ваша программа установила автоматически, и тогда может быть система пропусти ваш возврат"

Удаление слова NoBox приводит к удалению всей этой виртуальной коробки и соответственно всех бутылок, которые мы намерены вернуть.

Что лучше сделать? Проставить номера этих коробок "от балды"?

Написать грубо говоря 26-значный номер? А как потом поставщик будет обрабатывать, да и вообще пройдет ли?
Или мучить поставщика и попытаться узнать номер короба.... Проблема в том, что когда я пытаюсь удалить или написать новое значение в строке где есть слово Nobox - удаляются все бутылки из этой виртуальной коробки
20.04.2020 15:37
AndreyZh
 
katyakima, вопрос, как-бы не ко мне, не в эту тему и даже раздел попробую ответить, "как смогу", но если не поймете, то задайте вопрос в разделе: https://olegon.ru/forumdisplay.php?f=369 создав новую тему...

При описании списка марок расходных накладных вы можете группировать марки в "групповых тарах", например:

Код:
          <wb:InformF2>
            <ce:F2RegId>TEST-FB-000000036833781</ce:F2RegId>
            <ce:MarkInfo>
              <ce:boxpos>
                <ce:boxnumber>01003999465410118000000008</ce:boxnumber>
                <ce:amclist>
                    <ce:amc>136209000007140118001ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQRSTU</ce:amc>
                    <ce:amc>136209000007150118001ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQRSTU</ce:amc>
                    <ce:amc>136209000007160118001ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQRSTU</ce:amc>
                </ce:amclist>
            </ce:boxpos>
            <ce:boxpos>
                <ce:boxnumber>01003999465410118000000007</ce:boxnumber>
                    <ce:amclist>
                        <ce:amc>136209000007170118001ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQRSTU</ce:amc>
                    </ce:amclist>
                </ce:boxpos>
            </ce:MarkInfo>
          </wb:InformF2>
Тогда "номер коробки" должен удовлетворять требованиям форматно-логического контроля или можете не использовать понятие групповой тары, как делаете в "УС Лэнд:ЕГАИС", например:
Код:
               <wb:InformF2>
                  <ce:F2RegId>TEST-FB-000000036742454</ce:F2RegId>
                  <ce:MarkInfo>
                     <ce:boxpos>
                        <ce:amclist>
                           <ce:amc>22N00000A2IJCB1Z7EZ0SEP50113001000973O7VS9VQ8ISU0ES5S0K54O7C33EAZ5QG</ce:amc>
                           <ce:amc>22N00000A2IJCB1Z7EZ0SEP50116001000586N9BNS1IZVE3LETWSOWI093GW7UYKZCF</ce:amc>
                           <ce:amc>22N00000A2IJCB1Z7EZ0SEP5011600100089685UG1Z8UGEZ18Z2XPXDVS70T8IGLTO8</ce:amc>
                        </ce:amclist>
                     </ce:boxpos>
                  </ce:MarkInfo>
Точно формат "номера" не помню, но посмотрите тему, где об этом рассуждается: https://olegon.ru/showthread.php?t=30706, а я только помню, что длина 26 или 18 символов, однако возможны и другие контролы ФЛК?


P.S. Может быть кто-нибудь напомнит требования формата номера групповой тары или даст ссылку на его описание?
23.04.2020 17:05
katyakima
 
Цитата:
AndreyZh katyakima, Может быть кто-нибудь напомнит требования формата номера групповой тары или даст ссылку на его описание?[/B]
Спасибо за ответ, хоть я и ничего не поняла, как и предполагалось

Но вопрос решился, на другом форуме, подсказали решение - просто обновить программу

Цитата:
версия 4.130.210
Для приходных накладных с марками без коробок и при создании XML расходных накладных с марками без коробок, добавлена генерация номера коробки (вместо NoBox)
Всем большое спасибо!
Часовой пояс GMT +3, время: 00:45.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.