ФИНАНСЫ БЕЗ ПРОБЛЕМ(tm):
ПЕРЕГОВОРНЫЙ ПУНКТ II

Добро пожаловать, Гость. Пожалуйста, выберите:
Вход || Регистрация.
04.12.24 в 13:52:55


Наш сайт | Cтаpый форум (до 08.2003 года) | Интернет-магазин & Центр загрузок |
Главная | Помощь | Поиск | Участники | Вход | Регистрация
Модифицированный Клиент CLW32:
Из документации ...
На форуме...

Использование Клиента FCM:
1. Отчетный период и журнал операций.
2. Печать.
3. Экспорт.
4. Многострочная операция.
5. Редактирование многострочных операций.
http://www.fwp-client.com

Работа с ФБП через браузер:
Настройка для лечебных учреждений, оказывающих медицинские услуги:
На форуме...
http://vasoft.ru

Технический аудит настройки.
[Читать]

ФИНАНСЫ БЕЗ ПРОБЛЕМ (сетевая) и Opencart:
предлагаем:
1. Выгрузка новых покупателей из интернет-магазина в план счетов и сохранение информации в extrd.dat.
2. Выгрузка данных о заказанном товаре и сохранение в ФБП в журнале операций, номер заказа регистрируем в плане счетов как с.счет.
3. Українська локалізація.






   Финансы без пpоблем: Пеpеговоpный Пункт II
   Общий pаздел

   Loaddir | вpемя последней модификации
« Предыдущая Тема | Следующая Тема »
Страниц: 1  Ответить | Уведомлять | Послать Тему | Печатать
   Автор  Тема: Loaddir | вpемя последней модификации  (Прочитано 19180 раз)
box_vma

*



Я люблю этот Форум!

   
Просмотреть Профиль |

Сообщений: 49
Loaddir | вpемя последней модификации
« В: 06.03.20 в 13:35:41 »
Цитировать | Править

Добрый день!
Подскажите, кто знает.
 
 
Из документации:
 
 

Оператор loaddir заносит в extrd.dat время последней модификации файла в виде числа, возвращаемого Windows.
Как распаковать это число, чтобы работать с обычными единицами времени.
Решение: Windows возвращает упакованное время в 32-битном числе; здесь показано назначение битовых полей:
 
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0  0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
|-year------| |-mon-| |-day---|  |-hour--| |-min-----| |-sec---|
Ниже показан пример распаковки. Обратите внимание, что для хранения секунд используется только 5 бит (числа от 0 до 31), поэтому время сохраняется с точностью две секунды. Для хранения года используется 7 бит (числа от 0 до 127), там указывается год минус 1980.
loaddir [dir 0]+'*.rpt'
t=[ged 'ldt.1']
Packed time: ^^^^^^^^^^^^^^^t
se=(t % 32)*2
Sec:    ^se
t=[tr t/32]; mi=t % 64
Min:    ^mi
t=[tr t/64]; ho=t % 32
Hour:   ^ho
t=[tr t/32]; da=t % 32
Day:    ^da
t=[tr t/32]; mo=t % 16
Month:  ^mo
ye=t/16+1980
Year: ^^^ye

 
Дата модификации файла 06.03.2020 14:32 (Правый нижний угол FAR)
 
При использовании рекомендации по распаковке в ФБП выдает следующую информацию:
 
   Packed time:  1583494351
   Sec:     30
   Min:     38
   Hour:     6
   Day: 2
   Month:    3
   Year:  2027
 
Как корректно распаковать дату модификации файла?  
Спасибо.
Зарегистрирован
Boris, Kiev.

*****



Адепт ФБП  с 1996г.

   
Просмотреть Профиль | E-мэйл

Сообщений: 875
Re: Loaddir | вpемя последней модификации
« Ответить #1 В: 06.03.20 в 19:04:24 »
Цитировать | Править

Вот эта п.п. работает давненько.
 
...
TI=[ged 'ldt.1'];call F_TI_CR
TI:^^^^^^^^^^^^^^^^^^^^^^^^^^^^TI
...
stop
 
:F_TI_CR
local T,S,I,H,D,M,Y
*t=TI
*Packed time: ^^^^^^^^^^^^^^^t
T=TI+2*64*64
*Packed time2: ^^^^^^^^^^^^^^^t
S=(T%32)*2
*Sec:    ^S  t:^^^^^^^^^^^^^T
T=[tr T/32]; I=T%64
*Min:    ^I  t:^^^^^^^^^^^^^T
T=[tr T/64]; H=T%32-2
*Hour:   ^h  t:^^^^^^^^^^^^^T
T=[tr T/32]; D=T%32
*Day:    ^d  t:^^^^^^^^^^^^^T
T=[tr T/32]; M=T%16
*Month:  ^M  t:^^^^^^^^^^^^^T
Y=T/16+1980
*Year: ^^^^Y
TI=[cp [intsn 100+D],2,2]+'.'+[cp [intsn 100+M],2,2]+'.'+[intsn Y]+' '+[cp [intsn 100+H],2,2]+':'+[cp [intsn 100+I],2,2]
TI:^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^TI
*stop
return
 
Зарегистрирован
mine-R

***



compact & flexible rulezzz

   
Просмотреть Профиль |

Сообщений: 150
Re: Loaddir | вpемя последней модификации
« Ответить #2 В: 07.03.20 в 02:26:12 »
Цитировать | Править

on 06.03.20 в 13:35:41, box_vma wrote:
Добрый день!
Подскажите, кто знает.
...

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




* UTC TIMESTAMP EXPERIMENT
 
Предположим, что 1970.01.01 00:00
это начало эпохи принимаемое за 0.
От 0 до нашего момента прошла
1583494351 секунда.
 
Предположим также, что :
 
1 минута =        60 сек.
1 час    =      3600 сек.
1 день   =     86400 сек.
1 месяц  =   2629743 сек.
1 год    =  31556926 сек.
 
А также, что  
 
 
   1 мес =   30.43522 дн. в среднем
 
   1 дн. =   24 ч.
   1 год =   12 мес.
________________________________________
IN=1583494351
*
MI=60
HR=3600
DY=86400
MN=2629743
YY=31556926
*
DM=30.43522
*
DH=24
*
MY=12
*
Сколько лет надо прибавить к началу эпохи:
YP=[TR IN/YY]
^^^^^^^^^^^^^^YP
Проверяем: +1970
YN=1970+YP
^^^^^^^^^^^^^^YN  (1-й элемент даты)
__________________________________________
Сколько месяцев надо прибавить к началу эпохи:
MP=[TR IN/MN]-(YP*MY)
^^^^^^^^^^^^^^MP
Проверяем:   +01
MM=1+MP
^^^^^^^^^^^^^^MM  (2-й элемент даты)
__________________________________________
Сколько дней надо прибавить к началу эпохи:
DP=[TR IN/DY]-[TR IN/MN]*DM
^^^^^^^^^^^^^^DP
Проверяем:   +01
DD=1+DP
^^^^^^^^^^^^^^DD  (3-й элемент даты)
__________________________________________
Сколько часов надо прибавить к началу эпохи:
HP=[TR IN/HR]-[TR IN/DY]*DH
^^^^^^^^^^^^^^HP  (4-й элемент даты)
__________________________________________
Сколько минут надо прибавить к началу эпохи:
MT=[TR IN/MI]-[TR IN/HR]*MI
^^^^^^^^^^^^^^MT  (5-й элемент даты)
__________________________________________
Сколько секунд еадо прибавить к началу эпохи:
SE=IN-[TR IN/MI]*MI
^^^^^^^^^^^^^^SE  (6-й элемент даты)
__________________________________________
 
Дата:
DA=[INTSN YN]+'.'
TT='0'+[INTSN MM]
TT=[CP TT,([LENGTH TT]-1),2]
DA=DA+TT+'.'
TT='0'+[INTSN DD]
TT=[CP TT,([LENGTH TT]-1),2]
DA=DA+TT+' '
TT='0'+[INTSN HP]
TT=[CP TT,([LENGTH TT]-1),2]
DA=DA+TT+':'
TT='0'+[INTSN MT]
TT=[CP TT,([LENGTH TT]-1),2]
DA=DA+TT+':'
TT='0'+[INTSN SE]
TT=[CP TT,([LENGTH TT]-1),2]
DA=DA+TT+' UTC'
 
^^^^^^^^^^^^^^^^^^^^^^DA
 
Если ваше время 14:32 значит вы в часовом поясе UTC + 3




С самим  loaddir не стал морочиться, ведь вопрос не в нём, а в интерпретациях выдаваемой строки штампа даты-времени.
Зарегистрирован
box_vma

*



Я люблю этот Форум!

   
Просмотреть Профиль |

Сообщений: 49
Re: Loaddir | вpемя последней модификации
« Ответить #3 В: 07.03.20 в 09:01:21 »
Цитировать | Править

Спасибо.
 
Результат работы формы предложенной Boris, Kiev:
TI:02.03.2027 08:38, что не совсем верно
 
Результат работы формы предложенной mine-R
2020.03.06 11:32:31 UTC, верный результат
 
Еще раз спасибо.
 
 
 
 
Зарегистрирован
mine-R

***



compact & flexible rulezzz

   
Просмотреть Профиль |

Сообщений: 150
Re: Loaddir | вpемя последней модификации
« Ответить #4 В: 07.03.20 в 12:09:19 »
Цитировать | Править

Добавлю, что переменная MI в 5-м и 6-м элементах даты несет разную семантическую нагрузку. Просто и в минуте 60 секунд, и в часе 60 минут, вот я по рассеянности и лени не поинициализировал дополнительную переменную в 60.
 
Да и лишний TR думаю не помешает в 3-м элементе, чтобы было
 
[TR[TR IN/DY]*DM]
 
да и полно наверное ещё корявостей..
 
 
 
А вот дополнение ведущих нулей у Бориса в виде
 
[cp [intsn 100+D],2,2]
 
это изящненько. И по скорости должно выиграть. Возьму себе на заметку.
« Изменён в : 07.03.20 в 12:11:23 пользователем: mine-R » Зарегистрирован
Boris, Kiev.

*****



Адепт ФБП  с 1996г.

   
Просмотреть Профиль | E-мэйл

Сообщений: 875
Re: Loaddir | вpемя последней модификации
« Ответить #5 В: 07.03.20 в 16:34:53 »
Цитировать | Править

on 07.03.20 в 09:01:21, box_vma wrote:
Спасибо.
 
Результат работы формы предложенной Boris, Kiev:
TI:02.03.2027 08:38, что не совсем верно
 

 
 
Мои извинения.
Наши сервера меняли формат времени в loaddir. Вам предложен фрагмент из рабочих форм и который пашет c последней версией новогоднего адаптера ФБП версии 4.22.
 
  ВВОДИМ КУРСЫ С ОФИЦИАЛЬНОЙ СТРАНИЦЫ НАЦ.БАНКА УКРАИНЫ
 
                                                   Интересуют курсы НБУ на 07.03.2020
 
        Клиент получил      файл ответа НБУ                        
-----------------------------------Размер-----Изменен---------
 -[F8]-|      |L:\_BOX-19_\_ny_\AD\KURSFINT-AD.XML               |  11232| 07.03.2020 07:38|- [F8] - для удаления имеющегося файла --> для обновления или ввода курсов на другую дату.
 
-----------------курсы НБУ из интернет.  ----------в нашем ЖО
 
                                                 RUB   -        0.37148 на 07.03.2020         ===           0.371480
 
                                                 USD   -       24.74130 на 07.03.2020         ===          24.741300
 
                                                 TRY   -        4.06070 на 07.03.2020         ===           4.060700
 
                                                 EUR   -       27.69420 на 07.03.2020         ===          27.694200
 
                              Текущие курсы в системе соответствуют НБУ на 07.03.2020
« Изменён в : 07.03.20 в 17:33:20 пользователем: Boris, Kiev. » Зарегистрирован
mine-R

***



compact & flexible rulezzz

   
Просмотреть Профиль |

Сообщений: 150
Re: Loaddir | вpемя последней модификации
« Ответить #6 В: 07.03.20 в 17:34:11 »
Цитировать | Править

Заморочился таки с настройкой ярлыков под сеть и с самим loaddir
Подтверждаю, на сервере 3.28 подпрограмма Бориса и стандартный алгоритм из документации отрабатывают отлично.
Но и штамп даты-времени для 6 марта 2020 там соответственно выглядит так:
1282429190
 
Осталось понять с какой версии сменился алгоритм..
« Изменён в : 07.03.20 в 18:12:04 пользователем: mine-R » Зарегистрирован
Boris, Kiev.

*****



Адепт ФБП  с 1996г.

   
Просмотреть Профиль | E-мэйл

Сообщений: 875
Re: Loaddir | вpемя последней модификации
« Ответить #7 В: 07.03.20 в 19:25:59 »
Цитировать | Править

on 07.03.20 в 17:34:11, mine-R wrote:

Осталось понять с какой версии сменился алгоритм..

Другого подобного прецедента в версиях не припоминаю. Да, и честно, мало была востребована эта функция. На сегодня пользую 4.22(сервер-новогодний адаптер) и 4.40(сервер). Глубже 10-ти лет уже и не помню запуска баз.
 
Т.к. есть [VER], правда она не стыкуется с оф.версиями, но отличается в адаптере- 4, на сервере- 4.4, поэтому можно такую универсальную п.п. сделать для адаптера и сервера:
 
:UNIX_TIM2
* входит TI-unix время.
local KD,M,Y,DS,DD,HH,MM,SS
* https://www.cy-pr.com/tools/time/ - ЭТО ПРО unix - время.
*Packed time:
*TI:^^^^^^^^^^^^^^^^^ti
if [ver]=4.0 call F_TI_CR;return;endif
TI=TI+2*60*60 ЭТО НАША МЕСТНАЯ ПОПРАВКА НА 2 ЧАСА
TI=TI-657417600(ЭТО НАЧАЛО ЭРЫ ХАКЕРС ДИЗАЙН 1.11.1990 ГОДА)
*ti;^^^^^^^^^^^^ti
KD=[tr TI/(24*60*60)] кол-во целых дней
*KD:^^^^^KD^^^
TI=TI-KD*24*60*60)
*TI:^^^^^^^^TI
HH=[tr TI/60/60]
*HH:^^^HH
TI=TI-HH*60*60
*TI:^^^^^TI
MM=[tr TI/60]
*MM:^^^^MM
SS=TI-MM*60
*SS:^^SS
DD=[antida KD+1]  чтобы не морочиться с днями и месяцами
DD=[sn DD,9,2]
*DD;^^^^^^^^^^DD
D=[vl [cp DD,8,2]]
M=[vl [cp DD,5,2]]
Y=[vl [cp DD,1,4]]
TI=[cp [intsn 100+D],2,2]+'.'+[cp [intsn 100+M],2,2]+'.'+[sn Y,4,0]+' '+[cp [intsn 100+HH],2,2]+':'+[cp [intsn 100+MM],2,2]+':'+[cp [intsn 100+SS],2,2]
return
 
Попробуйте.
Зарегистрирован
mine-R

***



compact & flexible rulezzz

   
Просмотреть Профиль |

Сообщений: 150
Re: Loaddir | вpемя последней модификации
« Ответить #8 В: 07.03.20 в 20:20:31 »
Цитировать | Править

on 07.03.20 в 19:25:59, Boris, Kiev. wrote:
...
Попробуйте.

Работает!   Smiley
Это конечно намного более оптимизированный алгоритм, чем моя форма-размышление.
Я бы ещё сделал вот так:
if [ver]<=4.0
но это уже  опционально.
Зарегистрирован
box_vma

*



Я люблю этот Форум!

   
Просмотреть Профиль |

Сообщений: 49
Re: Loaddir | вpемя последней модификации
« Ответить #9 В: 10.03.20 в 08:11:13 »
Цитировать | Править

Спасибо. Все работает!!!
Зарегистрирован
Страниц: 1  Ответить | Уведомлять | Послать Тему | Печатать

« Предыдущая Тема | Следующая Тема »

Powered by YaBB 1 Gold - SP 1.3.2!
Forum software copyright й 2000-2004 Yet another Bulletin Board