15.11.2020 10:53
AndreyZh
 
С 01.01.2021 снова меняются минимальные цены согласно приказу: https://olegon.ru/showpost.php?p=358726&postcount=317 Изучив его:

- понял, что цены на "шипучки" не меняются, т.к. указаны лишь изменяемые "цифры";
- по остальным исправил схему на 2021 год, которая подходит для "УС Land" и "УС Лэнд:ЕГАИС" - заменить в папке программы 1 января 2021.

Новая схема приложена, а так же добавляю режим, вносящий её в массив памяти программ при их запуске. Алгоритм расчета и возврата МРЦ/МОЦ не изменился и приложен в предыдущем сообщении.
Исходник импорта настройки:
Код:
    
* --------------------------------------------------------------------------------------------------    
*   Импорт схемы вычисления МРЦ и МОЦ из файла настройки в массив схемы вычисления минимальных роз-
*   ничных и оптовых цен. Файл Scheme.mc должен находится в каталоге программы. Структура массива
*   {Список КВАП,градус от не включая,градус до включая,МРЦ,МОЦ}
*   Никаких сообщений не выдаю, т.к. это возможная закачка информации в фоновом режиме
*   Возврашается постоенный или пустой массив, если не будет файла или схемы цен в каталоге программ
FUNC aglImpMC()
    LOCA aRet:={}, cStr:="", nI:=0, nLen:=0, cC:="", cS:="", cg:="", cp:=""
    
    //  Возвращаем пустой массив - не делаем расчеты по МЦ, если нет файла схемы
    IF !File("Schema.mc") THEN RETU aRet
    
    //  Кодировка файла не важна - только важны цифры. Обход глюка NumToken/Token, когда пустые значения не считываются функцией
    cStr    := StrTran(StrTran(MemoRead("Schema.mc"),";"," ; "),","," , ")
        
    //  Построчно закачиваю в массив, отсеивая строки комментариев
    nLen    := NumToken(cStr,CRLF)
    FOR nI  := 1 TO nLen
        cC  := Alltrim(Token(cStr,CRLF,nI))
        
        //  Отсев мусорных строк файла схемы минимальных цен
        IF !((Val(Left(cC,3)) > 0) .AND. (NumToken(cC,";") = 3)) THEN LOOP
        
        //  Закачиваю информацию в глобальный массив памяти. Для алгоритмов порядок информации не важен
        cg  := Alltrim(Token(cC,";",2))
        cp  := Alltrim(Token(cC,";",3))
        aadd(aRet,{ Alltrim(Token(cC,";",1)),;                  //  Список алкокодов
                    Val(Alltrim(Token(cg,",",1))),;             //  Градус от не включая
                    Val(Alltrim(Token(cg,",",2))),;             //  Градус до включая
                    Val(Alltrim(Token(cp,",",1))),;             //  МРЦ
                    Val(Alltrim(Token(cp,",",2))) })            //  МОЦ
    NEXT nI
    RETU aRet

P.S. Буду благодарен за обнаружение у "меня" ошибок в схемах или понимания идеологии МРЦ/МОЦ или приказа?

Цитата:
AndreyZh - понял, что цены на "шипучки" не меняются, т.к. указаны лишь изменяемые "цифры";
Что за "маразм" - цены на шампанское тоже изменились, но в отдельном приказе:

Правка: AndreyZh, 24.11.2020 09:58
24.11.2020 10:04
AndreyZh
 
Изучив приказ ещё и по "шипучкам". Суть: новые МОЦ = 137, МРЦ = 169 за 0.75л. Переделал схему на 2021 год с учетом "шампанского". Замечу, что у меня в алгоритмах "базовая" цена за 0.5 литра.

Приложенная схема годится для версий программ "УС Land" и "УС Лэнд:ЕГАИС" старше января 2020 года, где учтены все нюансы законодательства... или для разработчиков других программ, использующих приведенные мной алгоритмы.
Вложения
Тип файла: 7z Schema.7z (989 байт, 1 просмотров)

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