Skip to content

Commit

Permalink
small refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
Infactum committed Jan 30, 2016
1 parent b352107 commit 5991919
Showing 1 changed file with 13 additions and 7 deletions.
20 changes: 13 additions & 7 deletions onec_dtools/db_row.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,19 @@ def nvc_to_string(nvc):
return unpack(fmt, nvc[2:length * 2 + 2])[0].decode('utf-16')


def bytes_to_datetime(bts):
"""
Пробразует байтовую строку в дату/время
:param bts: байтовая строка
"""
date_string = ''.join('{:02X}'.format(byte) for byte in bts)
# У пустой даты год = 0000
if bts[:2] == b'\x00\x00':
return None
return dt.datetime(int(date_string[:4]), int(date_string[4:6]), int(date_string[6:8]),
int(date_string[8:10]), int(date_string[10:12]), int(date_string[12:]))


def get_field_parser_info(field_description):
"""
Возвращает данные для парсера строк файлов записей БД 1С: длину значения колонки (байт) и функцию преобразования
Expand Down Expand Up @@ -70,13 +83,6 @@ def get_field_parser_info(field_description):
# Двоичные данные неограниченной длины
return FieldParserInfo(8, lambda x: Image(*unpack('2I', x)))
elif field_description.type == 'DT':
def bytes_to_datetime(bts):
date_string = ''.join('{:02X}'.format(byte) for byte in bts)
# У пустой даты год = 0000
if bts[:2] == b'\x00\x00':
return None
return dt.datetime(int(date_string[:4]), int(date_string[4:6]), int(date_string[6:8]),
int(date_string[8:10]), int(date_string[10:12]), int(date_string[12:]))
return FieldParserInfo(7, bytes_to_datetime)


Expand Down

0 comments on commit 5991919

Please sign in to comment.