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

Сторонние программы, полезные пользователям системы : КИС Lack & УС Land

20.05.2022 11:37


Контакты Поиск
09.08.2019 19:15
декларант
 
Цитата:
AndreyZh Причина проблемы: кассовый комп сдвинул своё время на час и чек ЕГАИС был с неправильным временем продажи.
Может быть сдвижка на час была из-за того, что в РФ в 2014 г перешли на постоянное "зимнее время" и компьютер начинает показывать время с ошибкой на час в течение полгода в случае если включена синхронизация времени с сервером синхронизации времени. Микрософт выпускал специальное обновление для windows Vista и выше для России, при установке которого происходит правильная синхронизация часов компьютера. Также в РФ несколько раз меняли часовые пояса в Сибири и на Урале (последний раз вроде для региона Камчатки в 2016г). это также было учтено в соответствующих обновлениях windows. Для Win XP обновлений не выпускалось.
09.08.2019 19:47
AndreyZh
 
Декларант, добрый вечер! Давненько не обменивались письмами, а лишь читаю Ваши полезные рекомендации на форумах... и очень жаль, что их мало на Olegon

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

Что по "времени" ПК? Причин может быть туева хуча, например двигают дату для создания документов с требуемыми атрибутами, домашний 3G свисток иногда определяется для другого часового пояса, когда "кончается" батарейка на материнки, так же могут "плавать" данные параметры и т.д.

В тоже время "требовать", что продавщицы это тщательно контролировали мне кажется нереально?
26.02.2020 09:26
AndreyZh
 
Технологическая пауза... размещу утилитку - авось кому сгодится? В принципе на ней отлаживал алгоритмы для системы "УС Лэнд".

Задача/проблема: Предположим Вы ведете учет в ценах, включая НДС, а контрагент в ценах без НДС. Тогда при отпуске ему товаров и/или согласования спецификации могут возникнуть рассогласования данных по документообороту при дотошном (построчном) сверке документов и встречаются ситуации, когда бухгалтера придираются к этому

Например! У Вас цена с НДС 43.00р. Тогда с математическим округлением в УПД будет:

Цена без НДС: 35.83 хотя фактически: 35.8333333...
Количество: 1000
Сумма с НДС: 43000.00
Сумма без НДС, как сверяет ФНС: 35833.33
Подгоняя НДС: 7166.67

У контрагента будет. Пусть он у себя проставит цену без НДС = 35.83
Количество: 1000
Сумма с НДС 35.83*1.2*1000: 42996.00
Сумма без НДС - рассчитывается: 35830.00
Рассчитывая НДС: 7166.00

Как видно из примера:

1. Не стыкуются цены/суммы документов;
2. Рассогласование данных бухучета, контролируемые ФНС.

Какой выход? При работе с клиентами использовать цены, которые при расчетах не будут давать ошибок округления... на что без проблем идут даже влиятельные торговые сети.

Утилитка помогает Вам подобрать "правильную" цену, где вводите примерную согласованную цену (с НДС или без НДС) и ставку НДС в процентах. Программа предлагает "ближайшие" подходящие цены, встаёте на неё, нажимаете Ctrl+C (копировать) и затем вставляете в "свою программу", например Ctrl+V. Нажав Enter в последнем поле перейдёте на новый цикл подбора цены... и так до нажатия кнопки Esc. Уменьшить число нажатий можно введя цену, затем нажать PgDown.




Алгоритмы примитивные и можно использовать данный код для своей программы:
Код:
    
* --------------------------------------------------------------------------------------------------
*   Универсальная процедура циклической подгонки цены с возможностью копипаста результата
PROC pgClcPrice()
    LOCA cOldCol:=SetColor(), GetList:={}
    LOCA nInp:=100, nNds:=20, nDir:=2, nMin:=0, nMax:=0
    LOCA nI:=0, nS:=0, nJ:=0, nT:=0
    
    //  Открываю головную форму с инструкцией для циклического в ней ввода и расчета цен
    fswOpen(0,0,11,59,cColor,3)
    
    @ 1,1   SAY "Пожалуйста введите значения и принципы расчетов цен от НДС"    COLO cHelpc
    @ 2,1   SAY "См. направление. Цена включая НДС или без НДС ............"
    @ 3,1   SAY "Процент ставки НДС на расчетный товар               ......"
    @ 4,1   SAY "Направление: 2-Вы ввели цену включая НДС. Программа подбе-"
    @ 5,1   SAY "рёт цены, что бы без НДС они были ровные, иначе Вы вводите"
    @ 6,1   SAY "цену без НДС, а программа будет подбирать цены с НДС     ."
    @ 7,1   SAY "----------------------------------------------------------"
    @ 8,1   SAY "Подходящая большая ............, меньшая цена ............"
    @ 9,1   SAY "Получаемые цены:                                          "    
    @10,1   SAY "Esc- выход, Ctrl+C - копировать в буфер, Enter- продолжить"    COLO cHelpc
    
    WHIL TRUE
        @ 2,47  GET nInp  PICT "999999999.99"     VALI lValid({||nInp > 0},"Запрещена отрицательная цена!")
        @ 3,53  GET nNds  PICT "999.99"           VALI lValid({||nNds >= 0},"Запрещена отрицательное значение!")
        @ 6,58  GET nDir  PICT "9"
        READ
        IF LastKey() == K_ESC THEN EXIT
        
        //  Подбор подходящих цен перебирая по копейке в зависимости от направления
        IF nDir == 2    //  Подбираем, что бы была ровной цена без НДС
            FOR nJ := 1 TO 2
                nT  := nInp
                WHIL TRUE
                    nS  := nT / (1 + nNds/100)
                    IF Abs(nS*100 - zInt(nS*100)) <= 0.000001 THEN EXIT
                    nT  += IF(nJ=1,(-1),(+1))*0.01
                END
                IF nJ = 1
                    nMin    := nS*(1 + nNds/100)
                ELSE
                    nMax    := nS*(1 + nNds/100)
                ENDI
            NEXT nJ
        ELSE            //  Подбираем ровные цены с НДС
            FOR nJ := 1 TO 2
                nT  := nInp
                WHIL TRUE
                    nS  := nT * (1 + nNds/100)
                    IF Abs(nS*100 - zInt(nS*100)) <= 0.000001 THEN EXIT
                    nT  += IF(nJ=1,(-1),(+1))*0.01
                END
                IF nJ = 1
                    nMin    := nS/(1 + nNds/100)
                ELSE
                    nMax    := nS/(1 + nNds/100)
                ENDI
            NEXT nJ
        ENDI

        GetList     := {}
        @ 9,20  SAY Str(IF(nDir <> 2, nMax*(1+nNds/100), nMax/(1+nNds/100)),12,2)
        @ 9,47  SAY Str(IF(nDir <> 2, nMin*(1+nNds/100), nMin/(1+nNds/100)),12,2)

        @ 8,20  GET nMax    PICT "999999999.99"
        @ 8,47  GET nMin    PICT "999999999.99"
        READ
        IF LastKey() == K_ESC THEN EXIT
    END

    fDeact( cOldCol )
    RETU


При желании может взять приложенную утилиту и скопировав её куда угодно, например на рабочий стол использовать для "пользы дела"
26.02.2020 09:46
FinSoft
 
Привет, Андрей. У нас цена может храниться с 4 знаками после запятой. Если покупателю надо без НДС (всякие бюджетники, например), то создается специальная категория цен с признаком без НДС. По ней вводятся договоренные цены без НДС, а для нас отгрузочные пересчитываются с 4 знаками после запятой. Аналогично можно в возвратах поставщикам. Большинство работают в полных ценах, это не так часто бывает надо.
26.02.2020 09:56
AndreyZh
 
FinSoft, в приведенном примере "ситуёвины" хранение с 4 знаками и количеством 100.000 "не поможет"! Коль скоро пишу... Почему сделана эта функция, встроенная в "УС Land" и вызываемая кнопкой Ctrl+N там?

В процессе опытной эксплуатации автоматизированной системы EDI: https://olegon.ru/showthread.php?t=33631 примерно 10% всех УПД браковались автоматическими системами ТС из-за нестыковок цен/сумм (НДС)/без НДС... Более того в 40% случаев не помогала переделка УПД средствами платформы провайдера... Сейчас сделано там - все цены/суммы рассчитываются и отражаются с точностью 2-9 знаков, что задаётся в настройке... Однако предложенный вариант более универсальный, но пользоваться им "не принуждаю"...
10.08.2020 11:39
AndreyZh
 
Цитата:
AndreyZh Задача/проблема: Предположим Вы ведете учет в ценах, включая НДС, а контрагент в ценах без НДС. Тогда при отпуске ему товаров и/или согласования спецификации могут возникнуть рассогласования данных по документообороту при дотошном (построчном) сверке документов и встречаются ситуации, когда бухгалтера придираются к этому

Например! У Вас цена с НДС 43.00р. Тогда с математическим округлением в УПД будет:
Цена без НДС: 35.83 хотя фактически: 35.8333333...
Количество: 1000
Сумма с НДС: 43000.00
Сумма без НДС, как сверяет ФНС: 35833.33
Подгоняя НДС: 7166.67
У контрагента будет. Пусть он у себя проставит цену без НДС = 35.83
Количество: 1000
Сумма с НДС 35.83*1.2*1000: 42996.00
Сумма без НДС - рассчитывается: 35830.00
Рассчитывая НДС: 7166.00

Как видно из примера:
1. Не стыкуются цены/суммы документов;
2. Рассогласование данных бухучета, контролируемые ФНС.
Какой выход? При работе с клиентами использовать цены, которые при расчетах не будут давать ошибок округления... на что без проблем идут даже влиятельные торговые сети.

Утилитка помогает Вам подобрать "правильную" цену, где вводите примерную согласованную цену (с НДС или без НДС) и ставку НДС в процентах. Программа предлагает "ближайшие" подходящие цены, встаёте на неё, нажимаете Ctrl+C (копировать) и затем вставляете в "свою программу", например Ctrl+V. Нажав Enter в последнем поле перейдёте на новый цикл подбора цены... и так до нажатия кнопки Esc. Уменьшить число нажатий можно введя цену, затем нажать PgDown.
Хотя на Olegon утилитка не была востребована, но в реале, во всех фирмах, использующих "УС Лэнд", а особенно для систем EDI: https://olegon.ru/showpost.php?p=353940&postcount=5 данная возможность, встроенная в "УС Лэнд" явилась мегаактуальной … Однако в версии 2005 исправлен (обойден) "математический" косяк системы разработки, когда плохо могли подбираться цены при 10% НДС.

На очередной вопрос в письме... и учитывая, что ей могут воспользоваться - исправил проблемки и в этой отдельной програмке, выкладываю исправленный её вариант
Вложения
Тип файла: 7z cpr.7z (432.4 Кб, 17 просмотров)
27.08.2020 08:25
AndreyZh
 
Случайно наткнулся на когда-то популярную и известную бесплатную программу "Бизнес Пак". Когда-то её мои клиенты пользовали для печати не созданных на тот момент мной первичных документов, но с 2010 года её функционал по первичке системой "УС Лэнд" был перекрыт и о программе "забылось".

Однако взглянув на её нынешний бесплатный функционал думаю, что она вполне годна для "комплексной" автоматизации микропредприятия на стадии выживания, например она может отправлять чеки в on-line кассу. Посмотреть подробнее и скачать её можно по ссылке: , а "взглянуть" на возможности можно на скрине:





P.S. Поверхностно просмотрев лицензию и описание - подозреваю, что часть её возможностей уже включается только за плату?
04.01.2021 14:42
AndreyZh
 
В начале каждого года перебираю каталог создаваемых программ, отправляя полностью, законченные приложения в архив. Вот наткнулся на созданное в августе заказное приложение, которое, думаю будет полезно всем пользователям компьютеров, а тем более полезно для бизнеса. Программа не имеет диалогов, интерфейса и предназначена для потоковой печати QR кодов по требуемому размеру и на основе произвольного списка.

Исходная задача для её создания: в УПД по сигаретам передаются коды акцизных марок. В принципе они есть на пачках, но зачастую нечитаемые или их нужно внести в учетную систему каким-то образом. В то же время QR коды печатаемые программами «УС Лэнд» прекрасно читаются любыми 2d сканерами, а так же смартфонами.

Так же программа оказалась полезной при проведении ревизий или проверок по алкоголю, т.к. необходимые списки всегда можно вывести в текстовый файл, а затем распечатанные QR коды дополнительно наклеить на бутылки и считывать их при необходимости. Оказалось, что «новые марки» скачиваются быстрее и корректнее из их представления в виде QR кода программы. Так же для «однозначного» соответствия и обозначения проведения проверки в режимах поиска мы использовали коды РФУ-2 и алкокоды, перекодированные в QR, в том числе для обмена информацией с поставщиками.

Установка. Создайте любой каталог на любом диске или флэшке и распакуйте туда архив.

Использование. Можно создать ярлыки вызовов самой программы с параметрами или создать командный файл, пример его есть в архиве и его вызывать напрямую или через ярлык вызова. Пример техники создания ярлыков есть в сообщении: https://olegon.ru/showthread.php?t=26029

Для иллюстрации использовался текстовый файл в кодировке 1251:
Код:
AkcMark:
18N00001CGTXH610PYG1NKL3041103200037517189644924216201101672317111489809809809809809KLJK09809234850923859023850923485099812374983279487985793847589357
22N00001CJ5XTGOMING3SWY51113004000473A4S5BRCU1XAFT3S2H8NU0WCEGX5ET2W
22N00001CJ5XTGOMING3SWY51113004000473A4S5BRCU1XAFT3S2H8NU0WCEGX5ET2W
22N00001CJ5XTGOMING3SWY51113004000474137H8EBNWT6OLH01HNRU2SJT6DQX3Y2
101100000005660118001ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890ABCDEFGHIJKLMNOPQRSTU

Cigarete:
000000462080191AuY05ir3E9uU66
010460026600398021tR5632o8005012350(93)wY2G
04606203086627iu,*7qbAC68PJgu
04606203086627xDfHs?tAC68ph46
04606203086627V?r6=LCAC68lgsz

Ean13:
2000027000005
2000067000003
2000028000004
2000070000007
2000030000009
4003301036026
4003301036002
7804310548657
7804310551923

Poem:
The funny little groundhog
Digs a home in the fall.
And hides there all winter
Rolled up in a ball.
On February 2nd
He comes out of there
To look at the sky,
And to sniff the air.

Adress:
https://olegon.ru/forumdisplay.php?f=72
zhsoft @ mail . ru 

RFU:
TEST-FB-000000028994664
TEST-FB-000000038102216
TEST-FB-000000019303039
TEST-FB-000000036836061

IdEgais:
001822000000139403
001822000000137281


Варианты вызова программы:

pqr – вызов с параметрами по умолчанию. При таком способе вызова программа ищет в своем каталоге «первый» файл с расширение TXT и печатает все строки из него в виде QR кодов размера 15 мм. После их распечатки заменяет расширение у файла на ACT, т.е при следующем вызове возьмет «следующий» файл:

pqr имя_файла_с_любым_расширением_и_указанием_папки_нахождения – вызов для печати списков каталогов вашей учетной системы, например: pqr x:\1c\list\qr.qqq. При этом используется размер по умолчанию 15 мм.

pqr имя_файла_с_любым_расширением_и_указанием_папки_нахождения размер – вызов с полной настройкой, т.е. можно задать пользовательский размер картинки QR кода от 5 до 200 миллиметров, например, как в примере pqr d:\prg\qr.act 20

pqr размер - При таком способе вызова программа ищет в своем каталоге «первый» файл с расширение TXT и печатает все строки из него в виде QR кодов в указанном размере от 5 до 200 миллиметров. После их распечатки заменяет расширение у файла на ACT, т.е при следующем вызове возьмет «следующий» файл.

Примеры распечаток в различных размерах:

















Если QR кодов много и они не помещаются на одном листе, то программа продолжает их печатать на следующих листах. Изначально программа просчитывает число QR кодов исходя из требуемого размера картинки кода на стандартной странице А4 (210х297) и печатает пачками на отдельных страницах.

При не нахождении файла со списком для печати даётся указанное ниже сообщение, а при «кривом» задании размера даётся сообщение и размер «проставляется» по умолчанию – 15 мм.






Программа «платная по совести», т.к. она изначально создавалась «за деньги» для заказчика и неприлично её будет размещать в бесплатном статусе. Стоимость 500 рублей. Приложенный к сообщению архив запароленный. Как получить пароль от архива: https://olegon.ru/showthread.php?t=35053 – вы пишете мне письмо, я отправляю Вам пароль с реквизитами для оплаты, а дальше «на Вашей совести» платить или нет.

P.S. 06.02.2021 Удалил приложенную программу в силу отсутствия потребностей в ней виртуального мира, но описание оставил - авось кому-то когда-то спонадобиться… и тогда мне данное решение нужно будет искать в своих архивах, вспоминая алгоритмы и принципы пользования ей, т.е. "прайс" на мои работы будет уже реальным
03.03.2022 09:41
AndreyZh
 
У кого чего "болит", тот о том и говорит... Как понятно - сейчас есть некоторая нестабильность финансового рынка, накопления и доходы резко "похудели". Мы с внешними обстоятельствами ничего сделать не можем, так что не будем нервничать, но можно попытаться чуть улучшить своё положение. Выросла ключевая ставка ЦБ: https://olegon.ru/showpost.php?p=380851&postcount=2 и как следствие должны резко вырасти ставки по вкладам. При наличии раннее открытых вкладов, если они были открыты недавно, то возможно разумно их переложить под больший процент, а может быть и нет? Предлагаемая програмка сделана под себя, т.к. навскидку, а тем более в состоянии стресса невозможно правильно оценить последствия (разумность) перекладывания денег - программа в этом поможет!

В основном вклады размещаются под некий процент на некий срок с ежемесячным снятием процентов или в расчете получения процентов в конце срока. При досрочном закрытии вклада полученные раннее проценты будут вычтены из возвращаемой суммы, т.е. перекладываете не раньше положенную сумму, а за вычетом суммы полученных процентов... В общем это известно и кто в "теме" поймёт алгоритмы программы, хотя и приложен исходник с формулами.

На скрине приведен характерный пример прогнозирования мероприятия по смене места хранения денежек. Расчеты сохраняются в течении сеанса, а посему до выхода из программы можно "малой кровью" провести несколько прогнозов





Скопируйте вложение, распакуйте архив куда угодно, например на flash. Программа вызывается двойным нажатием на файле cv.exe, ничего не трогая в системе, работает по любой версией Windows от Win95
Вложения
Тип файла: 7z CalcVklad.7z (441.6 Кб, 8 просмотров)
19.03.2022 17:44
AndreyZh
 
Очень много задач, а решать их дюже лениво выбирая из них, требующую меньше напрягов мозга вспомнил, что ФСРАР уже третий раз за год поменял справочник кодов вида алкопродукции (КВАП): https://olegon.ru/showthread.php?t=36485. Как всегда это сделано без предупреждений на сайте: в предположении, что юзеры ЕГАИС его ежедневно анализируют. Вторая "засада", что они не создают документа по изменениям данного очень важного справочника... Конечно он весьма критичен для производства, но и розницу касательно затрагивает, например, когда она не сможет сдавать декларацию, подаваемую в разрезе КВАП или когда "прилетит" штраф за продажу ниже МРЦ

Взялся за эту задачку - анализ изменения справочника кодов КВАП с обычным подходом: открываю 2 Pdf - старый и новый. Глазками смотреть оба документа построчно и выявлять изменения, но на 4 станице бросил это тупое занятие... и решил придумать автоматизацию этого процесса, тем более этот справочник изменяется ежемесячно... Обратил внимание, что код КВАП в текстовом документе формально сохраняется в отдельной строке - вот и зацепка для создания алгоритма, например:
Код:
Спирт-сырец этиловый из пищевого сырья
010
11.01.10.710
ЭС
2207 10 000 0
Спирт этиловый ректификованный из пищевого сырья
020
11.01.10.720
ЭС
2207 10 000 0
Спирты этиловые из пищевого сырья прочие
0201
Ну, а дальше дело техники, благо, что работать сегодня было лень, а это какое ни было развлечение. Желающие могут изучить алгоритмы по исходнику:

Исходный код программы:
Код:
 ==================================================================================================
*   Проверка изменения списка кодов КВАП алкогольной продукции.
*   Разработка:   Жуков Андрей Николаевич                                          Автор: Жуков А.Н.
*   
*   Pdf файл списка КВАП сохраняем в текстовом файле каталога программы с любым именем. Программа
*   определяет список файлов *.txt своего каталога, выбирая из них самые свежие по шаблонам:
*   Last*.txt       - результат последней предыдущей проверки. Получаю массив aLast:={КВАП}
*   НЕ Last*.txt    - полагая его свежим списком КВАП. Перекачка в массив памяти aNew строки по
*       шаблону: длина строки 3-5 знаков и все знаки цифровые... полагая это кодами КВАП
*   Сличаю старый и новый массив, делаю лог расхождения *.log, сохраняю новый массив в Last*.txt
* ==================================================================================================
#include "..\LACK\LS\PRG\laks.ch"

* --------------------------------------------------------------------------------------------------
*   Головной модуль программы
PROC Main()
    LOCA cStr:="", cC:="", aTxt:=Directory("*.txt"), nI:=0, nL:=0, nS:=0, nLast:=0, nNew:=0, nN:=0
    LOCA cfLast:="", cfNew:="", aLast:={}, aNew:={}, dLast:=Ctod(""), dNew:=Ctod(""), dT:=Date()
    LOCA lBad:=TRUE, nJ:=0, cLog:=""

    //  Глобальные системные установки пакета.
    SET DATE GERMAN
    SET DELE ON
    SET ESCA ON
    SET SCOR OFF
    SET WRAP ON
    SET CENT OFF
    SET CURS OFF

    //  Стандартная цветовая гамма программы
    PRIV cMainc_c   := "GR+/B,N+/W,,,N/W",  cMainc_m    := "W/N,N/W,,,N/W+"
    PRIV cColor_c   := "N/W,GR+/B,,,N/G",   cColor_m    := "W/N,N/W,,,N/W+"
    PRIV cError_c   := "W+/R,W/N,,,W/B",    cError_m    := "W+/N,N/W,,,W/N"
    PRIV cHelpc_c   := "N/G,R/G,,,N/G+",    cHelpc_m    := "N/W,W/N,,,N/W+"
    PRIV cOther_c   := "N+/G,W/N,,,B/G",    cOther_m    := "N/W,W/N,,,N/W"
    PRIV cMainc     := IF(ISCOLOR(),cMainc_c,cMainc_m)
    PRIV cColor     := IF(ISCOLOR(),cColor_c,cColor_m)
    PRIV cError     := IF(ISCOLOR(),cError_c,cError_m)
    PRIV cHelpc     := IF(ISCOLOR(),cHelpc_c,cHelpc_m)
    PRIV cOther     := IF(ISCOLOR(),cOther_c,cOther_m)
    PRIV l_mus      := TRUE

    IF (nL:=Len(aTxt)) <= 0 THEN fErrQuit("В каталоге программы нет файлов *.txt для сравнения!",cError)
    pWind("Сличение новых кодов КВАП с раннее сохраненными. Версия 19.03.2022","test.ico")
    CLS

    //  Определяю имена самых свежих файлов сохраненного списка КВАП и файла от ФСРАР
    FOR nI := 1 TO nL
        IF At("LAST",Upper(aTxt[nI,1])) == 1        //  Сохранение списков КВАП. Может отсутствовать
            dT  := CToD(Subs(aTxt[nI,1],5,8))       //  Дата сохраненного файла, прописанная в имени
            IF dT >= dLast
                dLast   := dT
                nLast   := nI
            ENDI
        ELSE                                        //  Прочие файлы. Полагаю преобразования PDF от РАР в TXT 
            dT  := aTxt[nI,3]                       //  Системная дата сохраненного файла
            IF dT >= dNew
                dNew    := dT
                nNew    := nI
            ENDI
        ENDI
    NEXT
    IF nNew <= 0 THEN fErrQuit("В каталоге нет преобразованного в *.txt файла от ФСРАР!",cError)
    
    //  Перегоняю подходящие строки из файла от ФСРАР в массив памяти
    cStr    := MemoRead(aTxt[nNew,1])
    nN      := NumToken(cStr,CRLF)
    FOR nI := 1 TO nN
        X_DEMO
        cC  := Alltrim(Token(cStr,CRLF,nI))         //  Строка из текстового файла от ФСРАР
        
        //  Проверяю её на шаблон: длина строки 3-5 знаков и все знаки цифровые
        IF !(Len(cC)>=3 .AND. Len(cC)<=5) THEN LOOP
        
        lBad    := FALSE
        FOR nJ := 1 TO Len(cC)
            IF !IsDigit( Subs(cC,nJ,1) ) THEN lBad := TRUE
        NEXT nJ
        
        //  Подходящую строку с типа кодом КВАП добавляю в массив памяти
        IF !lBad THEN aadd(aNew,cC)
    NEXT nI
    
    //  При наличии предыдущего списка кодов перегоняю его в массив памяти и произвожу сличение списков
    IF nLast > 0    
        cStr    := MemoRead(aTxt[nLast,1])
        nN      := NumToken(cStr,CRLF)
        FOR nI := 1 TO nN
            X_DEMO
            cC  := Alltrim(Token(cStr,CRLF,nI))     //  Строка из текстового файла сохраненных кодов. Проверок не произвожу
            aadd(aLast,cC)
        NEXT nI
        
        lBad    := FALSE                            //  Признак наличия расхождения кодов
        cC      := Hb_OemToAnsi("Новый Старый")+CRLF
        FOR nI := 1 TO Len(aNew)                    //  Появился новый код КВАП
            X_DEMO
            nJ  := ascan(aLast,{|x|x==aNew[nI]})
            IF nJ <= 0
                cC      += aNew[nI]+Spac(6)+CRLF
                lBad    := TRUE
            ENDI
        NEXT nI
        FOR nI := 1 TO Len(aLast)                   //  Нереально - удалили код КВАП в новой таблице
            X_DEMO
            nJ  := ascan(aNew,{|x|x==aLast[nI]})
            IF nJ <= 0
                cC      += Spac(6)+aLast[nI]+CRLF
                lBad    := TRUE
            ENDI
        NEXT nI
        
        //  При наличии расхождений вывожу в текущий каталог файл логов. Сообщение зависит от результата
        IF lBad
            cLog    := "Rash_"+Dtos(Date())+"_"+StrTran(Time(),":")+".log"
            ErrMess("Расхождения! Смотрите в файле "+cLog,cError)
            MemoWrit( cLog, cC )
        ELSE
            ErrMess("Расхождений в списке кодов КВАП не обнаружено!",cColor)
        ENDI
    ENDI
    
    //  Сохраняю свежий список КВАП от РАР в файле последних кодов
    cC      := ""
    FOR nI := 1 TO Len(aNew) DO cC += aNew[nI]+CRLF
    MemoWrit( "Last"+Dtos(Date())+".txt", cC )

    fErrQuit("Спасибо за работу со мной!",cMainc)
    RETU


Суть анализатора:

В папке программы лежат два типа *.txt файлов любой кодировки:

1. С именами Last*.txt - файлы сохраненного справочника КВАП предыдущих проверок;
2. Иные файлы *.txt полагаю сохраненным в текстовом формате высеры ФСРАР с данным справочником.

Программа выбирает из самых свежих файлов данного типа старый и новый список КВАП, а затем сличает их в два прохода.


Руководство пользователя:

Распакуйте архив с программой в любое место на диске, флэшки, карте памяти... В дальнейшем не удаляйте папку, т.к. в ней будет накапливаться статистика для дальнейших анализов. Изначально в ней лежат справочники ФСРАР от января и марта, а так же результаты анализов.

При обновлении справочника на сайте: . Сохраните Pdf файл и сохраните его в формате *.txt с любым именем, в каталог программы, например через Adobe Reader:





Затем просто запустите программу - файл kvap.exe из папки с программой. Программа проведёт сличение старого и нового справочника КВАП, выдаст сообщение, например при обнаружении расхождений:





… и создаст в своём каталоге 1/2 тестовых файла windows кодировки:

LastТекущаяДата.txt - список свежих кодов КВАП и если было обнаружено расхождение, то
RashТекущаяДата_Время.log - реестр расхождение... Появились новые коды, удалены старые коды
Вложения
Тип файла: 7z ChecKVAP.7z (444.6 Кб, 9 просмотров)

Правка: AndreyZh, 20.03.2022 08:55

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