Обновить dags/OSV.py

This commit is contained in:
bn_user 2025-09-05 11:46:07 +00:00
parent ad448bebd2
commit f3abfafa96
1 changed files with 111 additions and 99 deletions

View File

@ -34,20 +34,31 @@ def get_db_engine():
def read_data_1C(**kwargs): def read_data_1C(**kwargs):
params = {"СписокСчетов": ["66","66.01","66.02", "66.03","66.04","66.21","66.22","66.23","66.24", "67","67.01","67.02", "67.03","67.04","67.21","67.22","67.23","67.24"]} params = {"СписокСчетов": ["66","66.01","66.02", "66.03","66.04","66.21","66.22","66.23","66.24", "67","67.01","67.02", "67.03","67.04","67.21","67.22","67.23","67.24"]}
query = """ВЫБРАТЬ query = """ВЫБРАТЬ
ОстаткиИОбороты.Счет, ОстаткиОбороты.Счет,
ОстаткиИОбороты.Субконто1, ОстаткиОбороты.Субконто1,
ОстаткиИОбороты.Субконто2, ОстаткиОбороты.Субконто2,
ОстаткиИОбороты.Организация, ОстаткиОбороты.Организация,
ОстаткиИОбороты.СуммаОборот, ОстаткиОбороты.СуммаОборот,
ОстаткиИОбороты.СуммаОборотДт, ОстаткиОбороты.СуммаОборотДт,
ОстаткиИОбороты.СуммаОборотКт, ОстаткиОбороты.СуммаОборотКт,
ОстаткиИОбороты.СуммаКонечныйОстаток, ОстаткиОбороты.СуммаКонечныйОстаток,
ОстаткиИОбороты.СуммаКонечныйОстатокДт, ОстаткиОбороты.СуммаКонечныйОстатокДт,
ОстаткиИОбороты.СуммаКонечныйОстатокКт, ОстаткиОбороты.СуммаКонечныйОстатокКт,
ОстаткиИОбороты.СуммаКонечныйРазвернутыйОстатокДт, ОстаткиОбороты.СуммаКонечныйРазвернутыйОстатокДт,
ОстаткиИОбороты.СуммаКонечныйРазвернутыйОстатокКт ОстаткиОбороты.СуммаКонечныйРазвернутыйОстатокКт,
ИЗ // Добавляем поля договоров
РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты КАК ОстаткиИОбороты Договоры.Ссылка КАК Договор,
Договоры.Владелец КАК Контрагент,
Договоры.Номер КАК НомерДоговора,
Договоры.Дата КАК ДатаДоговора,
Договоры.СрокДействия КАК СрокДействияДоговора
ИЗ
РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(,,,
,
Счет В (&СписокСчетов)
) КАК ОстаткиОбороты
ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ДоговорыКонтрагентов КАК Договоры
ПО ОстаткиОбороты.Субконто2 = Договоры.Ссылка
ГДЕ ГДЕ
ОстаткиИОбороты.Счет.Код В (&СписокСчетов) ОстаткиИОбороты.Счет.Код В (&СписокСчетов)
""" """
@ -64,96 +75,97 @@ def read_data_1C(**kwargs):
data_from_1c = response.json() data_from_1c = response.json()
df = pd.DataFrame(data_from_1c['data']) df = pd.DataFrame(data_from_1c['data'])
engine = get_db_engine() print(df)
table_name = 'oborotno_salbdovaya_vedomostb' # engine = get_db_engine()
# table_name = 'oborotno_salbdovaya_vedomostb'
field_mapping = { # field_mapping = {
# Основные поля # # Основные поля
'Счет': 'schet', # 'Счет': 'schet',
'Субконто1': 'subkonto1', # 'Субконто1': 'subkonto1',
'Субконто2': 'subkonto2', # 'Субконто2': 'subkonto2',
# 'Субконто3': 'subkonto3', # # 'Субконто3': 'subkonto3',
'Организация': 'organizaciya', # 'Организация': 'organizaciya',
# 'Валюта': 'valyuta', # # 'Валюта': 'valyuta',
# Суммовые остатки и обороты # # Суммовые остатки и обороты
# 'СуммаНачальныйОстаток': 'summa_nachalnyy_ostatok', # # 'СуммаНачальныйОстаток': 'summa_nachalnyy_ostatok',
# 'СуммаНачальныйОстатокДт': 'summa_nachalnyy_ostatok_dt', # # 'СуммаНачальныйОстатокДт': 'summa_nachalnyy_ostatok_dt',
# 'СуммаНачальныйОстатокКт': 'summa_nachalnyy_ostatok_kt', # # 'СуммаНачальныйОстатокКт': 'summa_nachalnyy_ostatok_kt',
# 'СуммаНачальныйРазвернутыйОстатокДт': 'summa_nachalnyy_razvernutyy_ostatok_dt', # # 'СуммаНачальныйРазвернутыйОстатокДт': 'summa_nachalnyy_razvernutyy_ostatok_dt',
# 'СуммаНачальныйРазвернутыйОстатокКт': 'summa_nachalnyy_razvernutyy_ostatok_kt', # # 'СуммаНачальныйРазвернутыйОстатокКт': 'summa_nachalnyy_razvernutyy_ostatok_kt',
'СуммаОборот': 'summa_oborot', # 'СуммаОборот': 'summa_oborot',
'СуммаОборотДт': 'summa_oborot_dt', # 'СуммаОборотДт': 'summa_oborot_dt',
'СуммаОборотКт': 'summa_oborot_kt', # 'СуммаОборотКт': 'summa_oborot_kt',
'СуммаКонечныйОстаток': 'summa_konechnyy_ostatok', # 'СуммаКонечныйОстаток': 'summa_konechnyy_ostatok',
'СуммаКонечныйОстатокДт': 'summa_konechnyy_ostatok_dt', # 'СуммаКонечныйОстатокДт': 'summa_konechnyy_ostatok_dt',
'СуммаКонечныйОстатокКт': 'summa_konechnyy_ostatok_kt', # 'СуммаКонечныйОстатокКт': 'summa_konechnyy_ostatok_kt',
'СуммаКонечныйРазвернутыйОстатокДт': 'summa_konechnyy_razvernutyy_ostatok_dt', # 'СуммаКонечныйРазвернутыйОстатокДт': 'summa_konechnyy_razvernutyy_ostatok_dt',
'СуммаКонечныйРазвернутыйОстатокКт': 'summa_konechnyy_razvernutyy_ostatok_kt' # 'СуммаКонечныйРазвернутыйОстатокКт': 'summa_konechnyy_razvernutyy_ostatok_kt'
# Валютные остатки и обороты # # Валютные остатки и обороты
# 'ВалютнаяСуммаНачальныйОстаток': 'valyutnaya_summa_nachalnyy_ostatok', # # 'ВалютнаяСуммаНачальныйОстаток': 'valyutnaya_summa_nachalnyy_ostatok',
# 'ВалютнаяСуммаНачальныйОстатокДт': 'valyutnaya_summa_nachalnyy_ostatok_dt', # # 'ВалютнаяСуммаНачальныйОстатокДт': 'valyutnaya_summa_nachalnyy_ostatok_dt',
# 'ВалютнаяСуммаНачальныйОстатокКт': 'valyutnaya_summa_nachalnyy_ostatok_kt', # # 'ВалютнаяСуммаНачальныйОстатокКт': 'valyutnaya_summa_nachalnyy_ostatok_kt',
# 'ВалютнаяСуммаНачальныйРазвернутыйОстатокДт': 'valyutnaya_summa_nachalnyy_razvernutyy_ostatok_dt', # # 'ВалютнаяСуммаНачальныйРазвернутыйОстатокДт': 'valyutnaya_summa_nachalnyy_razvernutyy_ostatok_dt',
# 'ВалютнаяСуммаНачальныйРазвернутыйОстатокКт': 'valyutnaya_summa_nachalnyy_razvernutyy_ostatok_kt', # # 'ВалютнаяСуммаНачальныйРазвернутыйОстатокКт': 'valyutnaya_summa_nachalnyy_razvernutyy_ostatok_kt',
# 'ВалютнаяСуммаОборот': 'valyutnaya_summa_oborot', # # 'ВалютнаяСуммаОборот': 'valyutnaya_summa_oborot',
# 'ВалютнаяСуммаОборотДт': 'valyutnaya_summa_oborot_dt', # # 'ВалютнаяСуммаОборотДт': 'valyutnaya_summa_oborot_dt',
# 'ВалютнаяСуммаОборотКт': 'valyutnaya_summa_oborot_kt', # # 'ВалютнаяСуммаОборотКт': 'valyutnaya_summa_oborot_kt',
# 'ВалютнаяСуммаКонечныйОстаток': 'valyutnaya_summa_konechnyy_ostatok', # # 'ВалютнаяСуммаКонечныйОстаток': 'valyutnaya_summa_konechnyy_ostatok',
# 'ВалютнаяСуммаКонечныйОстатокДт': 'valyutnaya_summa_konechnyy_ostatok_dt', # # 'ВалютнаяСуммаКонечныйОстатокДт': 'valyutnaya_summa_konechnyy_ostatok_dt',
# 'ВалютнаяСуммаКонечныйОстатокКт': 'valyutnaya_summa_konechnyy_ostatok_kt', # # 'ВалютнаяСуммаКонечныйОстатокКт': 'valyutnaya_summa_konechnyy_ostatok_kt',
# 'ВалютнаяСуммаКонечныйРазвернутыйОстатокДт': 'valyutnaya_summa_konechnyy_razvernutyy_ostatok_dt', # # 'ВалютнаяСуммаКонечныйРазвернутыйОстатокДт': 'valyutnaya_summa_konechnyy_razvernutyy_ostatok_dt',
# 'ВалютнаяСуммаКонечныйРазвернутыйОстатокКт': 'valyutnaya_summa_konechnyy_razvernutyy_ostatok_kt', # # 'ВалютнаяСуммаКонечныйРазвернутыйОстатокКт': 'valyutnaya_summa_konechnyy_razvernutyy_ostatok_kt',
# Количественные остатки и обороты # # Количественные остатки и обороты
# 'КоличествоНачальныйОстаток': 'kolichestvo_nachalnyy_ostatok', # # 'КоличествоНачальныйОстаток': 'kolichestvo_nachalnyy_ostatok',
# 'КоличествоНачальныйОстатокДт': 'kolichestvo_nachalnyy_ostatok_dt', # # 'КоличествоНачальныйОстатокДт': 'kolichestvo_nachalnyy_ostatok_dt',
# 'КоличествоНачальныйОстатокКт': 'kolichestvo_nachalnyy_ostatok_kt', # # 'КоличествоНачальныйОстатокКт': 'kolichestvo_nachalnyy_ostatok_kt',
# 'КоличествоНачальныйРазвернутыйОстатокДт': 'kolichestvo_nachalnyy_razvernutyy_ostatok_dt', # # 'КоличествоНачальныйРазвернутыйОстатокДт': 'kolichestvo_nachalnyy_razvernutyy_ostatok_dt',
# 'КоличествоНачальныйРазвернутыйОстатокКт': 'kolichestvo_nachalnyy_razvernutyy_ostatok_kt', # # 'КоличествоНачальныйРазвернутыйОстатокКт': 'kolichestvo_nachalnyy_razvernutyy_ostatok_kt',
# 'КоличествоОборот': 'kolichestvo_oborot', # # 'КоличествоОборот': 'kolichestvo_oborot',
# 'КоличествоОборотДт': 'kolichestvo_oborot_dt', # # 'КоличествоОборотДт': 'kolichestvo_oborot_dt',
# 'КоличествоОборотКт': 'kolichestvo_oborot_kt', # # 'КоличествоОборотКт': 'kolichestvo_oborot_kt',
# 'КоличествоКонечныйОстаток': 'kolichestvo_konechnyy_ostatok', # # 'КоличествоКонечныйОстаток': 'kolichestvo_konechnyy_ostatok',
# 'КоличествоКонечныйОстатокДт': 'kolichestvo_konechnyy_ostatok_dt', # # 'КоличествоКонечныйОстатокДт': 'kolichestvo_konechnyy_ostatok_dt',
# 'КоличествоКонечныйОстатокКт': 'kolichestvo_konechnyy_ostatok_kt', # # 'КоличествоКонечныйОстатокКт': 'kolichestvo_konechnyy_ostatok_kt',
# 'КоличествоКонечныйРазвернутыйОстатокДт': 'kolichestvo_konechnyy_razvernutyy_ostatok_dt', # # 'КоличествоКонечныйРазвернутыйОстатокДт': 'kolichestvo_konechnyy_razvernutyy_ostatok_dt',
# 'КоличествоКонечныйРазвернутыйОстатокКт': 'kolichestvo_konechnyy_razvernutyy_ostatok_kt' # # 'КоличествоКонечныйРазвернутыйОстатокКт': 'kolichestvo_konechnyy_razvernutyy_ostatok_kt'
} # }
df = df.rename(columns=field_mapping) # df = df.rename(columns=field_mapping)
with engine.begin() as conn: # with engine.begin() as conn:
if not df.empty: # if not df.empty:
conn.execute(f"CREATE TEMP TABLE temp_{table_name} AS SELECT * FROM public.{table_name} WHERE 1 = 0") # conn.execute(f"CREATE TEMP TABLE temp_{table_name} AS SELECT * FROM public.{table_name} WHERE 1 = 0")
df.to_sql( # df.to_sql(
f'temp_{table_name}', # f'temp_{table_name}',
con=conn, # con=conn,
if_exists='append', # if_exists='append',
index=False, # index=False,
method='multi' # method='multi'
) # )
conn.execute(f"DELETE FROM public.{table_name} where get_date = CURRENT_DATE::date::timestamp") # conn.execute(f"DELETE FROM public.{table_name} where get_date = CURRENT_DATE::date::timestamp")
conn.execute(f""" # conn.execute(f"""
INSERT INTO public.{table_name} # INSERT INTO public.{table_name}
SELECT # SELECT
schet # schet
, subkonto1 # , subkonto1
, subkonto2 # , subkonto2
, organizaciya # , organizaciya
, summa_oborot # , summa_oborot
, summa_oborot_dt # , summa_oborot_dt
, summa_oborot_kt # , summa_oborot_kt
, summa_konechnyy_ostatok # , summa_konechnyy_ostatok
, summa_konechnyy_ostatok_dt # , summa_konechnyy_ostatok_dt
, summa_konechnyy_ostatok_kt # , summa_konechnyy_ostatok_kt
, summa_konechnyy_razvernutyy_ostatok_dt # , summa_konechnyy_razvernutyy_ostatok_dt
, summa_konechnyy_razvernutyy_ostatok_kt # , summa_konechnyy_razvernutyy_ostatok_kt
, CURRENT_DATE::date::timestamp # , CURRENT_DATE::date::timestamp
FROM temp_{table_name} # FROM temp_{table_name}
--ON CONFLICT (schet, subkonto1, subkonto2, organizaciya) # --ON CONFLICT (schet, subkonto1, subkonto2, organizaciya)
""" # """
) # )
with DAG( with DAG(
dag_id='data_download_from_1C_source', dag_id='data_download_from_1C_source',