11.07.2018 11:41
AndreyZh
 
Как убедился по заморочкам последних дней сфера учета и работы с алкоголем перешла из бухгалтерий и спецотделов в ведение программистов - возможно лишь только им понятны потуги в работах ФСРАР по контролю за оборотом алкопродукции. Косвенно это подтверждает и отсутствие "интереса" к УСЕга - ведь право зачем программисту альтернативный подход?

С 1 июля в теории, а примерно с 15 августа на практике начнется оборот новых марок с ШК DataMatrix длинной 150 знаков, не содержащих алкокод в ШК. Хотя и раздаются мысли, что алкокод - устаревшее понятие, но по факту 100% программ для ЕГАИС работают с ним. Более того будут накладные, содержащие "братские могилы":

1. Пиво - без марок;
2. Алкоголь без указания марок;
3. Алкоголь со старыми марками и их отражения в ТТН;
4. Алкоголь с новыми марками. Много мыслей в теме: https://olegon.ru/https://olegon.ru/showthread.php?t=29562

В принципе мной разработаны подходу уже в релизе 27 марта и описаны во многих темах разделах. Окончательный алгоритм подготовки с работой с "новыми" приходами озвучен: https://olegon.ru/showpost.php?p=313144&postcount=17 и наконец он окончательно реализован. Главное нужно понимать, что базовым документом, имеющим заведомо правильную информацию по алкоголю становится электронная справка 1 - бумажная справка "А" для немаркированного алкоголя и маркированного поштучного отменена с 1 июля. Описание данного документа дано: https://olegon.ru/https://olegon.ru/showthread.php?t=29092

Новых марок НЕТ, а посему отладка производилась по поштучной алкопродукции со старыми марками. Сейчас "УС Лэнд:ЕГАИС" при подготовке и анализе списка приходных накладных производит анализ накладных на наличие новых марок, сохраняет помарочную структуру ТТН и отражает список ТТН с указанием по ТТН типов указанных в них марок:

1. Без марок;
2. ТТН с марками:
3. ТТН с марками нового образца.




При попытке открыть для просмотра и работы ТТН с новыми марками - текст не ТТН с АкМ, а НовАМарки. Программа проводит анализ на наличие отсутствия по конкретным РФУ-1 товара с новыми марками полностью заполненных атрибутов справки1. Если не нашлась во внутренней БД такая справка или она "не заполненна" программа выдаёт запрос:




При отказе запрещает доступ к телу накладной, а при подтверждении по всем РФУ-1 алкопродукции с новыми марками запрашивает полные атрибуты РФУ-1 (важно алкокод) и создаёт, при необходимости реальные или фиктивные записи в таблицах остатков, справок 1 и пула акцизных марок, например:




В пуле марок, по выделенным фрагментам видно, что это фиктивная запись, которая заполниться правильный информацией при подтверждении ТТН, сервисе приёма, запросе остатков или автоматом удалиться при ремонте программы.




Всё - теперь программа имеет ПРАВИЛЬНЫЕ и однозначные атрибуты алкопродукции по всем типам марок или без оных и пускает Вас в режимы работы с ТТН.
15.11.2018 14:50
AndreyZh
 
"Началось в деревне утро"... Вот пришло письмо от ооочень грамотного профессионала в ЕГАИС, где упоминает мнение ещё одного гуру, что в преддверии начала работы с новыми марками, которые уже стали поступать в розницу "апнуть" данную тему, где всё очень просто и подробно "разъебнясняется"

Цитата:
Андрей, добрый день! О некоторых нюансах ведении учета с новыми марками:

На форуме на вопрос:
"начали получать новые марки(150 символов) в розницу. Поскольку алгоритм выдирания alccode из новых марок нам неизвестен, то у нас нет возможности проверить соответствие марки и алкокода в ТТН. Также не ясно теперь как вести учет, если нет привязки между маркой и алкокодом"

fkr отвечал:
"Алгоритма выделения алкокода непосредственно из новой марки не существует, т.к. алкокода в ней нет.
И по новой марке особого смысла в сверке с алкокодом нет, т.к. марки привязаны к партии алкокода (и ЕГАИС не пропустит ТТН, если партия не соответствует алкокоду. т.е. алкокод всегда в ТТН будет правильный), и именно привязка к FB-XXXXXXX теперь является основой правильного учёта новых марок в вашей программе".

P.S. Новые механизмы работы с алкокодами на уровне "пользователя" описаны в инструкциях. По сути, для определения алкокодов в программе ничего не поменялось - получаю алкокод по марке единой функцией, т.е. изменил только её.

Желающие могут изучить её код для понимания алгоритмов:
Код:
* --------------------------------------------------------------------------------------------------
*   Определение кода алкогольной продукции из ШК кода акцизной марки по математическим алгоритмам
*   18.06.2018  Появляется марка 150 знаков, где не зашит алкокод - другие алгоритмы выявления его
FUNC cAlcCodAM( cCod )
    LOCA cA:="", cB:="", nI:=0, nLen:=0, nS:=0, nY:=0, nX:=0, nM:=0, nSum:=0
    LOCA nOldSel:=0, nRec:=0, nOrd:=0, nPull:=0
    
    //  При чтении копипастом может в конце добавляться мусор в виде одного знака - убираю его
    cCod    := Alltrim(cCod)
    IF Len(cCod) = 69
        cCod    := Left(cCod,68)
    ELSEIF Len(cCod) = 151
        cCod    := Left(cCod,150)
    ENDI

    DO CASE
    CASE Len(cCod) = 150        //***   Новая марка не содержащая алкокода
        cA      := Repl("0",19)
    
        //* Если таблицы не открыты - алгоритм нельзя использовать
        IF Empty( Select("AGENTS") )
            ErrMess("Для марок длиной 150 знаков алкокод определяется только при открытых таблицах, а независимое от баз данных его определение невозможно",cError)
            RETU cA
        ENDI
        
        //* Сохраняю параметры среды программы и активные индексы в используемых таблицах
        nOldSel := Select()
        nRec    := RecNo()
        nOrd    := zOrd()
        nPull   := PULL_AKM->( zOrd() )
        
        //* Ищу марку в пуле акцизных марок, где и беру алкокод, который определяется/исправляется при запросе РФУ-1. 
        SELE PULL_AKM ORDE PA_CODIS SEEK cCod
        IF !Eof()
            cA  := Alltrim(regId)
        ELSE
            ErrMess("Не могу определить алкокод! Для марок длиной 150 знаков алкокод определяется только по запросам РФУ-1 и наличия ссылки в пуле акцизных марок программы!",cError)
        ENDI
        
        //* Возврат состояния среды программы
        zSet( nPull )
        SELE (nOldSel) ORDE (nOrd) REC (nRec)
        
    CASE Len(cCod) = 68         //***   Старая марка с вычисляемым алкокодом
    
        /*  Номер не всегда начинается с 9 знака - более сложный алгоритм его выделения. Код АП правильно
            определяется в случае вхождения 00000 иначе никак не смог получить правильный код - какая-то лажа или
            с примерами марок (старые) или с алгоритмом
            10.12.2015 Использую алгоритмы ручного преобразования из 36 ричного числа в 19 значное 10 ричное представление */

        //  Выбираем разное число преобразуемых кодов
        IF Subs( cCod,4,5 ) == "00000"
            cA      := Subs( cCod,9,11 )
        ELSE
            cA      := Subs( cCod,8,12 )
        ENDI
        cA          := Upper(cA)            //  Бывают косяки от сканера перевода в малые буквы
        nLen        := Len( cA )
        cB          := cA

        //  Расчет в десятиричной систем (=0) делает переменную LongInteger, а если (=0.0) то Double, что уменьшает точность
        nSum        := 0
        FOR nX := 1 TO nLen
            nM      := 1
            FOR nY := 1 TO nLen - nX DO nM := nM*36

            nSum    := nSum + nM * ( At( Subs(cA,nX,1), _SIMB_AM ) - 1 )
        NEXT nX

        //  Варианты использования Ntoc(nSum), Str(nSum,19) приводят к округлениям и потери точности
        cA          := Padl( nSum, 19, "0" )   //  Просто выравнием число пополняя нулями
    OTHE                        //***   Марка неверной длины - возвращаю нулевой алкокод
        cA          := Repl("0",19)
    ENDC
    RETU cA

Последний раз редактировалось AndreyZh; 15.11.2018 в 15:19.
10.12.2018 13:57
AndreyZh
 
Увы, но если не хотите "попасть" необходимо понимать движение поштучной алкопродукции… Как правило она попадает к вам с приходными накладными, где есть указание акцизных марок и не важно нового или старого образца.

0. При показе списка ТТН в очереди УТМ отражается факт наличия товара с марками в текущей накладной:





1. При наличии марок, а тем более новых программа для определения реальных алкокодов запрашивает неизвестные РФУ-1 и сохраняем марки накладной в пуле с неопределенным статусом. Если ТТН только посмотрели, то в процедуре ремонта эти строки удалятся, т.к. в них пустой раздел "Б"





2. Далее возможны "варианты":

- подтверждение или имитация подтверждения нажатием F10 - все марки обновят пул;
- как в примере. Расхождение - выявляемое полным сканированием всех марок с бутылок накладной. Тогда если подтверждение или имитация подтверждения нажатием F10 в реестр и пул "упадут" только принятые в приёме марки, а не принятые останутся в виртуальном статусе (до ремонта):









Ежели интересно, то программа формирует:
Отчет по приёмке АП с марками:
Код:

ОШИБКИ  Результаты приёмки товаров по ТТН №_РН_015 от 07.12.18 от 
ООО "КВК"
-------------------------------------------------------------------------------------------------------------------------- Стр.  1
Ош|Код алк.прод. ЕГАИС| Фактический код РФУ-2 |По ТТН|ФаК-во|Наименование алкогольной продукции.. Может быть пустым - не известно
----------------------------------------------------------------------------------------------------------------------------------
*  0011118000001187714 TEST-FB-000000036833736      7      6 Водка "Сыктывкарская"                                                
*  0032570000001249015 TEST-FB-000000036833735      0        Пиво светлое "Рыцарь Приморья". Пастеризованное, 20,35л кег, 4.5%    

Отчет по последовательности сканирования акцизных марок по ТТН №_РН_015 от 07.12.18
-------------------------------------------------------------------------------------------------------------------------- Стр.  2
№ п/п|Код алк.прод. ЕГАИС|КВА|%Градус|Литраж|     Символы штрихкода акцизной марки для определения алкокода      |К.ПоТТН|ФактК-во
----------------------------------------------------------------------------------------------------------------------------------
    1 0011118000001187714 200  40.000  0.500 101100000004800118001ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJK       7        6
    2 0011118000001187714 200  40.000  0.500 101100000004810118001ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJK       7        6
    3 0011118000001187714 200  40.000  0.500 101100000004820118001ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJK       7        6
    4 0011118000001187714 200  40.000  0.500 101100000004830118001ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJK       7        6
    5 0011118000001187714 200  40.000  0.500 101100000004840118001ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJK       7        6
    6 0011118000001187714 200  40.000  0.500 101100000004850118001ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJK       7        6

Отчет по сличению марок в накладных версии 3. Только по маркам из ТТН. ТТН №_РН_015 от 07.12.18
-------------------------------------------------------------------------------------------------------------------------- Стр.  3
№ п/п|Скан|       Символы штрихкода акцизных марок из приходной накладной      | Код РФУ-2 по накладной |Новый РФУ-2 из регистрац
----------------------------------------------------------------------------------------------------------------------------------
    1 **** 101100000004800118001ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJK TEST-FB-000000036785814  TEST-FB-000000036833736 
           LMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQRSTU
    2 **** 101100000004810118001ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJK TEST-FB-000000036785814  TEST-FB-000000036833736 
           LMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQRSTU
    3 **** 101100000004820118001ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJK TEST-FB-000000036785814  TEST-FB-000000036833736 
           LMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQRSTU
    4 **** 101100000004830118001ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJK TEST-FB-000000036785814  TEST-FB-000000036833736 
           LMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQRSTU
    5 **** 101100000004840118001ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJK TEST-FB-000000036785814  TEST-FB-000000036833736 
           LMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQRSTU
    6 **** 101100000004850118001ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJK TEST-FB-000000036785814  TEST-FB-000000036833736 
           LMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQRSTU
    7      101100000004860118001ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJK TEST-FB-000000036785814  TEST-FB-000000036833736 
           LMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQRSTU


Образец отправленного акта расхождения:
Код:
<?xml version="1.0" encoding="UTF-8"?>
<ns:Documents Version="1.0" xmlns:ainp="http://fsrar.ru/WEGAIS/ActChargeOn_v2" xmlns:awr="http://fsrar.ru/WEGAIS/ActWriteOff_v3" xmlns:ce="http://fsrar.ru/WEGAIS/CommonV3" xmlns:iab="http://fsrar.ru/WEGAIS/ActInventoryF1F2Info" xmlns:ns="http://fsrar.ru/WEGAIS/WB_DOC_SINGLE_01" xmlns:oref="http://fsrar.ru/WEGAIS/ClientRef_v2" xmlns:pref="http://fsrar.ru/WEGAIS/ProductRef_v2" xmlns:qf="http://fsrar.ru/WEGAIS/QueryFormF1F2" xmlns:qp="http://fsrar.ru/WEGAIS/QueryParameters" xmlns:wa="http://fsrar.ru/WEGAIS/ActTTNSingle_v3" xmlns:wb="http://fsrar.ru/WEGAIS/TTNSingle_v3" xmlns:wt="http://fsrar.ru/WEGAIS/ConfirmTicket" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
   <ns:Owner>
      <ns:FSRAR_ID>030000113645</ns:FSRAR_ID>
   </ns:Owner>
   <ns:Document>
      <ns:WayBillAct_v3>
         <wa:Header>
            <wa:IsAccept>Differences</wa:IsAccept>
            <wa:ACTNUMBER>20181209104247</wa:ACTNUMBER>
            <wa:ActDate>2018-12-09</wa:ActDate>
            <wa:WBRegId>TEST-TTN-0007699700</wa:WBRegId>
            <wa:Note>Бой товара по накладной: ООО &quot;КВК&quot; ИНН: 7805394047 КПП: 780501001 N_РН_015 от 07.12.18</wa:Note>
         </wa:Header>
         <wa:Content>
            <wa:Position>
               <wa:Identity>2</wa:Identity>
               <wa:InformF2RegId>TEST-FB-000000036833736</wa:InformF2RegId>
               <wa:RealQuantity>6.000</wa:RealQuantity>
               <wa:MarkInfo>
                  <ce:amc>101100000004860118001ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQRSTU</ce:amc>
               </wa:MarkInfo>
            </wa:Position>
            <wa:Position>
               <wa:Identity>1</wa:Identity>
               <wa:InformF2RegId>TEST-FB-000000036833735</wa:InformF2RegId>
               <wa:RealQuantity>0.080</wa:RealQuantity>
            </wa:Position>
         </wa:Content>
      </ns:WayBillAct_v3>
   </ns:Document>
</ns:Documents>



3. После повторного входа в список ТТН у накладной появится указание типа отправленного акта





Как провести "частичную" проверку марок, но сохранить инфу по ТТН полностью?

1. Открываете ТТН
2. Сканируете часть марок
3. Смотрите лог ошибок
4. Отказываетесь, в том числе от списка ТТН
5. Входите в ТТН снова - программа забудет, что ТТН принимали и полностью выгружаете в пул по F10
10.12.2018 15:29
FinSoft
 
Привет, Андрей.
Сегодня в один из подшефных магазинов пришла накладная с нестандартными тэгами для марок. Остальные тэги стандартные. То есть, надо обрабатывать с учетом пространства имен xml. Тебе в копилку практических ситуаций...
10.12.2018 15:58
AndreyZh
 
Добрый вечер Вячеслав!
Цитата:
FinSoft Сегодня в один из подшефных магазинов пришла накладная с нестандартными тэгами для марок. Остальные тэги стандартные. То есть, надо обрабатывать с учетом пространства имен xml. Тебе в копилку практических ситуаций...
Это неотъемлемое право поставщиков отказываться от покупателей... Что по "мну" - не предполагаю поддерживать эти извращения программистов пока они не станут обязательными, как позиция ФСРАР. Кроме того "УСЕга" может подтверждать или отказывать ТТН любой "кривизны", чем на моей памяти кто-то из виртуального мира воспользовался только один раз за 3+ года "жизни" проекта "УС Лэнд:ЕГАИС".

P.S. Занятно эти, так называемые разработчики пытаются удивляться:
Цитата:
Добрый день, сегодня уже по 15 ттн к нам обратились клиенты, что не видят у себя накладные по УТМ. Некоторым выдаем идентификаторы, они перезапрашивают. А некоторые клиенты машины разворачивают. Просим проверить, в связи с чем такое происходит. На сайте чек1 все проведено...
10.12.2018 16:24
FinSoft
 
Тут есть подвох в том, что остальные тэги стандартные. У меня всплыло, когда стали перемещать со склада в торговый зал. Программа отсекает приходы с марками, оставляя их на складе. А тут оказалось, что накладная загружена, как обычно, а марки отсутствуют. В результате программа пытается переместить эти бутылки в торговый зал, а Егаис возвращает ошибку, что нельзя, помарочный учет...

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