    def task_info(self, route, data):
        """ Get data for grid """
        result_dict = {}
        result_dict['Header'] = json.loads(data)
        connection = self.db.connect()
        logbook_fields_tm_id = result_dict['Header'].get('logbook_fields_tm_id')
        try:
            if not logbook_fields_tm_id:
                task_id_json = result_dict['Header'].get('task_id')
                task_id_db = text("SELECT task_id FROM k2task WHERE task_sheduller_id=:task_id_json and active=:active")
                task_id_db = connection.execute(task_id_db, {
                    "active": 1,
                    "task_id_json": task_id_json
                }).fetchone()
                if task_id_db:
                    task_id_db = task_id_db[0]
                    logbook_fields_tm_id = text("SELECT logbook_fields_tm_id FROM k2logbook_tm "
                                                "WHERE active=:active AND task_id=:task_id")
                    logbook_fields_tm_id = connection.execute(logbook_fields_tm_id, {
                        'active': 1,
                        'task_id': task_id_db
                    }).fetchone()
                    if logbook_fields_tm_id:
                        logbook_fields_tm_id = logbook_fields_tm_id[0]
                else:
                    result_dict['Header']['task_status'] = 'Завдання не взято в роботу'
                    return jsonify({'data': result_dict, 'message': 'ok'})
            if logbook_fields_tm_id:
                sql = {
                    'Загальна інформація': f"""
                    SELECT * FROM k2logbook_tm klt
                    WHERE klt.active = 1 AND klt.logbook_fields_tm_id = '{logbook_fields_tm_id}'
                    """,
                    'Пункти завдання': f"""
                    SELECT 
                        kltr.logbook_tm_row_id, 
                        kltr.tm_point_number, 
                        kltr.tm_point_status, 
                        kltr.start_time, 
                        kltr.end_time, 
                        kltr.actual_time, 
                        kltr.standard_time, 
                        kltr.time_diff, 
                        kn.nomenclature_name, 
                        kltr.nomenclature_id, 
                        kltr.quantity, 
                        kltr.sum, 
                        kltr.price, 
                        knp.full_name, 
                        kltr.is_problem,
                        COALESCE(
                            STRING_AGG(DISTINCT ku.name, ', '), 
                            ''
                        ) AS employee_names,
                        CASE 
                            WHEN EXISTS (
                                SELECT 1 
                                FROM k2logbook_tm_rows_image kltri 
                                WHERE kltri.logbook_tm_row_id = kltr.logbook_tm_row_id
                            ) 
                            THEN '+' 
                            ELSE '-' 
                        END AS image_check
                    FROM 
                        k2logbook_tm_rows kltr 
                    LEFT JOIN k2nomenclature kn ON kltr.nomenclature_id = kn.nomenclature_id
                    LEFT JOIN k2natural_person knp ON kltr.natural_person_id = knp.natural_person_id
                    LEFT JOIN k2row_user kru ON kltr.logbook_tm_row_id = kru.logbook_tm_row_id
                    LEFT JOIN k2users ku ON kru.user_id = ku.user_id
                    WHERE 
                        kltr.active = 1 
                        AND kltr.logbook_fields_tm_id = '{logbook_fields_tm_id}'
                    GROUP BY 
                        kltr.logbook_tm_row_id, 
                        kltr.tm_point_number, 
                        kltr.tm_point_status, 
                        kltr.start_time, 
                        kltr.end_time, 
                        kltr.actual_time, 
                        kltr.standard_time, 
                        kltr.time_diff, 
                        kn.nomenclature_name, 
                        kltr.nomenclature_id, 
                        kltr.quantity, 
                        kltr.sum, 
                        kltr.price, 
                        knp.full_name, 
                        kltr.is_problem
                    ORDER BY 
                        CAST(SPLIT_PART(kltr.tm_point_number, '/', 1) AS INTEGER)
                    """,
                    'Інформація про завдання': f"""
                    select ke.scheme_name, ket.equipment_type_code, ke.inventory_number, ktt.type_tm_name,
                    kt.task_name, kts.task_status_name, ket.equipment_type_color, ktt.color_code, klt.service_date,
                    ku.name
                    from k2logbook_tm klt
                    left join k2equipment ke
                    on klt.equipment_id = ke.equipment_id
                    left join k2equipment_type ket
                    on ket.equipment_type_id = ke.equipment_type_id
                    left join k2type_tm ktt
                    on klt.type_tm_id = ktt.type_tm_id
                    left join k2task kt
                    on klt.task_id = kt.task_id
                    left join k2users ku
                    on kt.user_checked_task = ku.user_id
                    left join k2task_status kts
                    on kts.task_status_id = kt.task_status_id
                    where klt.active = 1 and klt.logbook_fields_tm_id='{logbook_fields_tm_id}'
                    """,
                    'Описи пунктів': f"""
                    select kltr.comment, kltr.subsections_descriptions, kltr.tm_point_number,
                    ku.name
                    from k2logbook_tm_rows kltr 
                    left join k2users ku
                    on kltr.user_id = ku.user_id
                    WHERE kltr.active = 1 and kltr.comment is not null and 
                    kltr.logbook_fields_tm_id='{logbook_fields_tm_id}'
                    order by CAST(SPLIT_PART(kltr.tm_point_number, '/', 1) AS INTEGER)
                    """
                }
                for key, query in sql.items():
                    rows = connection.execute(text(query)).fetchall()
                    result = []
                    if not rows:
                        if self.db.name == 'sqlite':
                            query = "PRAGMA table_info(k2logbook_tm)"
                            cur = connection.execute(text(query))
                            rows = [row[1] for row in cur.fetchall()]
                        elif self.db.name == 'postgresql':
                            query = "SELECT column_name, data_type FROM information_schema.columns WHERE table_name = 'k2logbook_tm';"
                            cur = connection.execute(text(query))
                            rows = [row[0] for row in cur.fetchall()]
                        elif self.db.name == 'mysql':
                            query = "SHOW COLUMNS FROM k2logbook_tm;"
                            cur = connection.execute(text(query))
                            rows = [row[0] for row in cur.fetchall()]

                    res_dict = {}
                    for row in rows:
                        if isinstance(row, str):
                            res_dict[row] = ''
                        else:
                            row_as_dict = dict(row._mapping)

                            result.append(row_as_dict)
                    if result:
                        result_dict[key] = result
                    elif res_dict:
                        result_dict[key] = res_dict

                equipment_type_color = result_dict['Інформація про завдання'][0]['equipment_type_color']

                r, g, b = (int(equipment_type_color[i:i + 2], 16) for i in (1, 3, 5))
                result_dict['Інформація про завдання'][0]['r_equip'] = r
                result_dict['Інформація про завдання'][0]['g_equip'] = g
                result_dict['Інформація про завдання'][0]['b_equip'] = b
                result_dict['Інформація про завдання'][0]['service_date'] = (
                    result_dict['Інформація про завдання'][0]['service_date'].strftime("%d/%m/%Y"))
                result_dict['Header']['problem_color'] = '#FF0000'
                result_dict['Header']['success_color'] = '#67C167'
                result_dict['Header']['terminal_name'] = K2().get_user_stoages_name()
                return jsonify({'data': result_dict, 'message': 'ok'})
        except Exception as e:
            logging.error(f"{e}")
            return jsonify({'message': str(e)})
        finally:
            connection.close()