From f3abfafa96bebead08a850dfea3ad3b677334ccf Mon Sep 17 00:00:00 2001 From: bn_user Date: Fri, 5 Sep 2025 11:46:07 +0000 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20dags/OSV.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dags/OSV.py | 210 +++++++++++++++++++++++++++------------------------- 1 file changed, 111 insertions(+), 99 deletions(-) diff --git a/dags/OSV.py b/dags/OSV.py index cb9178a..74ab61b 100644 --- a/dags/OSV.py +++ b/dags/OSV.py @@ -34,20 +34,31 @@ def get_db_engine(): 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"]} query = """ВЫБРАТЬ - ОстаткиИОбороты.Счет, - ОстаткиИОбороты.Субконто1, - ОстаткиИОбороты.Субконто2, - ОстаткиИОбороты.Организация, - ОстаткиИОбороты.СуммаОборот, - ОстаткиИОбороты.СуммаОборотДт, - ОстаткиИОбороты.СуммаОборотКт, - ОстаткиИОбороты.СуммаКонечныйОстаток, - ОстаткиИОбороты.СуммаКонечныйОстатокДт, - ОстаткиИОбороты.СуммаКонечныйОстатокКт, - ОстаткиИОбороты.СуммаКонечныйРазвернутыйОстатокДт, - ОстаткиИОбороты.СуммаКонечныйРазвернутыйОстатокКт - ИЗ - РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты КАК ОстаткиИОбороты + ОстаткиОбороты.Счет, + ОстаткиОбороты.Субконто1, + ОстаткиОбороты.Субконто2, + ОстаткиОбороты.Организация, + ОстаткиОбороты.СуммаОборот, + ОстаткиОбороты.СуммаОборотДт, + ОстаткиОбороты.СуммаОборотКт, + ОстаткиОбороты.СуммаКонечныйОстаток, + ОстаткиОбороты.СуммаКонечныйОстатокДт, + ОстаткиОбороты.СуммаКонечныйОстатокКт, + ОстаткиОбороты.СуммаКонечныйРазвернутыйОстатокДт, + ОстаткиОбороты.СуммаКонечныйРазвернутыйОстатокКт, + // Добавляем поля договоров + Договоры.Ссылка КАК Договор, + Договоры.Владелец КАК Контрагент, + Договоры.Номер КАК НомерДоговора, + Договоры.Дата КАК ДатаДоговора, + Договоры.СрокДействия КАК СрокДействияДоговора +ИЗ + РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(,,, + , + Счет В (&СписокСчетов) + ) КАК ОстаткиОбороты + ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ДоговорыКонтрагентов КАК Договоры + ПО ОстаткиОбороты.Субконто2 = Договоры.Ссылка ГДЕ ОстаткиИОбороты.Счет.Код В (&СписокСчетов) """ @@ -64,96 +75,97 @@ def read_data_1C(**kwargs): data_from_1c = response.json() df = pd.DataFrame(data_from_1c['data']) - engine = get_db_engine() - table_name = 'oborotno_salbdovaya_vedomostb' + print(df) + # engine = get_db_engine() + # table_name = 'oborotno_salbdovaya_vedomostb' - field_mapping = { - # Основные поля - 'Счет': 'schet', - 'Субконто1': 'subkonto1', - 'Субконто2': 'subkonto2', - # 'Субконто3': 'subkonto3', - 'Организация': 'organizaciya', - # 'Валюта': 'valyuta', + # field_mapping = { + # # Основные поля + # 'Счет': 'schet', + # 'Субконто1': 'subkonto1', + # 'Субконто2': 'subkonto2', + # # 'Субконто3': 'subkonto3', + # 'Организация': 'organizaciya', + # # 'Валюта': 'valyuta', - # Суммовые остатки и обороты - # 'СуммаНачальныйОстаток': 'summa_nachalnyy_ostatok', - # 'СуммаНачальныйОстатокДт': 'summa_nachalnyy_ostatok_dt', - # 'СуммаНачальныйОстатокКт': 'summa_nachalnyy_ostatok_kt', - # 'СуммаНачальныйРазвернутыйОстатокДт': 'summa_nachalnyy_razvernutyy_ostatok_dt', - # 'СуммаНачальныйРазвернутыйОстатокКт': 'summa_nachalnyy_razvernutyy_ostatok_kt', - 'СуммаОборот': 'summa_oborot', - 'СуммаОборотДт': 'summa_oborot_dt', - 'СуммаОборотКт': 'summa_oborot_kt', - 'СуммаКонечныйОстаток': 'summa_konechnyy_ostatok', - 'СуммаКонечныйОстатокДт': 'summa_konechnyy_ostatok_dt', - 'СуммаКонечныйОстатокКт': 'summa_konechnyy_ostatok_kt', - 'СуммаКонечныйРазвернутыйОстатокДт': 'summa_konechnyy_razvernutyy_ostatok_dt', - 'СуммаКонечныйРазвернутыйОстатокКт': 'summa_konechnyy_razvernutyy_ostatok_kt' + # # Суммовые остатки и обороты + # # 'СуммаНачальныйОстаток': 'summa_nachalnyy_ostatok', + # # 'СуммаНачальныйОстатокДт': 'summa_nachalnyy_ostatok_dt', + # # 'СуммаНачальныйОстатокКт': 'summa_nachalnyy_ostatok_kt', + # # 'СуммаНачальныйРазвернутыйОстатокДт': 'summa_nachalnyy_razvernutyy_ostatok_dt', + # # 'СуммаНачальныйРазвернутыйОстатокКт': 'summa_nachalnyy_razvernutyy_ostatok_kt', + # 'СуммаОборот': 'summa_oborot', + # 'СуммаОборотДт': 'summa_oborot_dt', + # 'СуммаОборотКт': 'summa_oborot_kt', + # 'СуммаКонечныйОстаток': 'summa_konechnyy_ostatok', + # 'СуммаКонечныйОстатокДт': 'summa_konechnyy_ostatok_dt', + # 'СуммаКонечныйОстатокКт': 'summa_konechnyy_ostatok_kt', + # 'СуммаКонечныйРазвернутыйОстатокДт': 'summa_konechnyy_razvernutyy_ostatok_dt', + # 'СуммаКонечныйРазвернутыйОстатокКт': 'summa_konechnyy_razvernutyy_ostatok_kt' - # Валютные остатки и обороты - # 'ВалютнаяСуммаНачальныйОстаток': 'valyutnaya_summa_nachalnyy_ostatok', - # 'ВалютнаяСуммаНачальныйОстатокДт': 'valyutnaya_summa_nachalnyy_ostatok_dt', - # 'ВалютнаяСуммаНачальныйОстатокКт': 'valyutnaya_summa_nachalnyy_ostatok_kt', - # 'ВалютнаяСуммаНачальныйРазвернутыйОстатокДт': 'valyutnaya_summa_nachalnyy_razvernutyy_ostatok_dt', - # 'ВалютнаяСуммаНачальныйРазвернутыйОстатокКт': 'valyutnaya_summa_nachalnyy_razvernutyy_ostatok_kt', - # 'ВалютнаяСуммаОборот': 'valyutnaya_summa_oborot', - # 'ВалютнаяСуммаОборотДт': 'valyutnaya_summa_oborot_dt', - # 'ВалютнаяСуммаОборотКт': 'valyutnaya_summa_oborot_kt', - # 'ВалютнаяСуммаКонечныйОстаток': 'valyutnaya_summa_konechnyy_ostatok', - # 'ВалютнаяСуммаКонечныйОстатокДт': 'valyutnaya_summa_konechnyy_ostatok_dt', - # 'ВалютнаяСуммаКонечныйОстатокКт': 'valyutnaya_summa_konechnyy_ostatok_kt', - # 'ВалютнаяСуммаКонечныйРазвернутыйОстатокДт': 'valyutnaya_summa_konechnyy_razvernutyy_ostatok_dt', - # 'ВалютнаяСуммаКонечныйРазвернутыйОстатокКт': 'valyutnaya_summa_konechnyy_razvernutyy_ostatok_kt', + # # Валютные остатки и обороты + # # 'ВалютнаяСуммаНачальныйОстаток': 'valyutnaya_summa_nachalnyy_ostatok', + # # 'ВалютнаяСуммаНачальныйОстатокДт': 'valyutnaya_summa_nachalnyy_ostatok_dt', + # # 'ВалютнаяСуммаНачальныйОстатокКт': 'valyutnaya_summa_nachalnyy_ostatok_kt', + # # 'ВалютнаяСуммаНачальныйРазвернутыйОстатокДт': 'valyutnaya_summa_nachalnyy_razvernutyy_ostatok_dt', + # # 'ВалютнаяСуммаНачальныйРазвернутыйОстатокКт': 'valyutnaya_summa_nachalnyy_razvernutyy_ostatok_kt', + # # 'ВалютнаяСуммаОборот': 'valyutnaya_summa_oborot', + # # 'ВалютнаяСуммаОборотДт': 'valyutnaya_summa_oborot_dt', + # # 'ВалютнаяСуммаОборотКт': 'valyutnaya_summa_oborot_kt', + # # 'ВалютнаяСуммаКонечныйОстаток': 'valyutnaya_summa_konechnyy_ostatok', + # # 'ВалютнаяСуммаКонечныйОстатокДт': 'valyutnaya_summa_konechnyy_ostatok_dt', + # # 'ВалютнаяСуммаКонечныйОстатокКт': 'valyutnaya_summa_konechnyy_ostatok_kt', + # # 'ВалютнаяСуммаКонечныйРазвернутыйОстатокДт': 'valyutnaya_summa_konechnyy_razvernutyy_ostatok_dt', + # # 'ВалютнаяСуммаКонечныйРазвернутыйОстатокКт': 'valyutnaya_summa_konechnyy_razvernutyy_ostatok_kt', - # Количественные остатки и обороты - # 'КоличествоНачальныйОстаток': 'kolichestvo_nachalnyy_ostatok', - # 'КоличествоНачальныйОстатокДт': 'kolichestvo_nachalnyy_ostatok_dt', - # 'КоличествоНачальныйОстатокКт': 'kolichestvo_nachalnyy_ostatok_kt', - # 'КоличествоНачальныйРазвернутыйОстатокДт': 'kolichestvo_nachalnyy_razvernutyy_ostatok_dt', - # 'КоличествоНачальныйРазвернутыйОстатокКт': 'kolichestvo_nachalnyy_razvernutyy_ostatok_kt', - # 'КоличествоОборот': 'kolichestvo_oborot', - # 'КоличествоОборотДт': 'kolichestvo_oborot_dt', - # 'КоличествоОборотКт': 'kolichestvo_oborot_kt', - # 'КоличествоКонечныйОстаток': 'kolichestvo_konechnyy_ostatok', - # 'КоличествоКонечныйОстатокДт': 'kolichestvo_konechnyy_ostatok_dt', - # 'КоличествоКонечныйОстатокКт': 'kolichestvo_konechnyy_ostatok_kt', - # 'КоличествоКонечныйРазвернутыйОстатокДт': 'kolichestvo_konechnyy_razvernutyy_ostatok_dt', - # 'КоличествоКонечныйРазвернутыйОстатокКт': 'kolichestvo_konechnyy_razvernutyy_ostatok_kt' - } + # # Количественные остатки и обороты + # # 'КоличествоНачальныйОстаток': 'kolichestvo_nachalnyy_ostatok', + # # 'КоличествоНачальныйОстатокДт': 'kolichestvo_nachalnyy_ostatok_dt', + # # 'КоличествоНачальныйОстатокКт': 'kolichestvo_nachalnyy_ostatok_kt', + # # 'КоличествоНачальныйРазвернутыйОстатокДт': 'kolichestvo_nachalnyy_razvernutyy_ostatok_dt', + # # 'КоличествоНачальныйРазвернутыйОстатокКт': 'kolichestvo_nachalnyy_razvernutyy_ostatok_kt', + # # 'КоличествоОборот': 'kolichestvo_oborot', + # # 'КоличествоОборотДт': 'kolichestvo_oborot_dt', + # # 'КоличествоОборотКт': 'kolichestvo_oborot_kt', + # # 'КоличествоКонечныйОстаток': 'kolichestvo_konechnyy_ostatok', + # # 'КоличествоКонечныйОстатокДт': 'kolichestvo_konechnyy_ostatok_dt', + # # 'КоличествоКонечныйОстатокКт': 'kolichestvo_konechnyy_ostatok_kt', + # # 'КоличествоКонечныйРазвернутыйОстатокДт': 'kolichestvo_konechnyy_razvernutyy_ostatok_dt', + # # 'КоличествоКонечныйРазвернутыйОстатокКт': 'kolichestvo_konechnyy_razvernutyy_ostatok_kt' + # } - df = df.rename(columns=field_mapping) - with engine.begin() as conn: - if not df.empty: - conn.execute(f"CREATE TEMP TABLE temp_{table_name} AS SELECT * FROM public.{table_name} WHERE 1 = 0") - df.to_sql( - f'temp_{table_name}', - con=conn, - if_exists='append', - index=False, - method='multi' - ) - conn.execute(f"DELETE FROM public.{table_name} where get_date = CURRENT_DATE::date::timestamp") - conn.execute(f""" - INSERT INTO public.{table_name} - SELECT - schet - , subkonto1 - , subkonto2 - , organizaciya - , summa_oborot - , summa_oborot_dt - , summa_oborot_kt - , summa_konechnyy_ostatok - , summa_konechnyy_ostatok_dt - , summa_konechnyy_ostatok_kt - , summa_konechnyy_razvernutyy_ostatok_dt - , summa_konechnyy_razvernutyy_ostatok_kt - , CURRENT_DATE::date::timestamp - FROM temp_{table_name} - --ON CONFLICT (schet, subkonto1, subkonto2, organizaciya) - """ - ) + # df = df.rename(columns=field_mapping) + # with engine.begin() as conn: + # if not df.empty: + # conn.execute(f"CREATE TEMP TABLE temp_{table_name} AS SELECT * FROM public.{table_name} WHERE 1 = 0") + # df.to_sql( + # f'temp_{table_name}', + # con=conn, + # if_exists='append', + # index=False, + # method='multi' + # ) + # conn.execute(f"DELETE FROM public.{table_name} where get_date = CURRENT_DATE::date::timestamp") + # conn.execute(f""" + # INSERT INTO public.{table_name} + # SELECT + # schet + # , subkonto1 + # , subkonto2 + # , organizaciya + # , summa_oborot + # , summa_oborot_dt + # , summa_oborot_kt + # , summa_konechnyy_ostatok + # , summa_konechnyy_ostatok_dt + # , summa_konechnyy_ostatok_kt + # , summa_konechnyy_razvernutyy_ostatok_dt + # , summa_konechnyy_razvernutyy_ostatok_kt + # , CURRENT_DATE::date::timestamp + # FROM temp_{table_name} + # --ON CONFLICT (schet, subkonto1, subkonto2, organizaciya) + # """ + # ) with DAG( dag_id='data_download_from_1C_source',