![](https://habrastorage.org/getpro/habr/upload_files/a9c/87a/f5e/a9c87af5ed86eb5f674d744dbc7df30c.jpg)
Коэффициент трудового участия — коэффициент, отражающий количественную оценку меры трудового участия отдельного работника в общих результатах труда группы работников, характеризующий суммарный вклад работника в общие результаты труда производственной бригады, коллектива
https://ru.wikipedia.org/wiki/Коэффициент_трудового_участия
Очень часто КТУ используют для начисления некого вознаграждения, премии или бонуса отделу или бригаде.
В своей статье я попыталась смоделировать ситуацию, когда у нас есть несколько факторов, которые влияют на увеличение/снижение КТУ работника в бригаде. В таблице ниже приведен пример данных факторов.
![Факторы КТУ Факторы КТУ](https://habrastorage.org/getpro/habr/upload_files/6c8/5d6/990/6c85d6990acc94d0ef0a3f7c2cee22ae.jpg)
Определенной формулы для расчета КТУ нет, но обычно каждому работнику присуждают персональный балл, который характеризует его участие в производственном процессе. Далее берут сумму коллективного вознаграждения и распределяют между сотрудниками пропорционально их баллам. Что такое персональный балл? Это и есть КТУ. Как правило, он состоит из двух частей.
-
Базовая часть (всегда равна 1).
-
Складывается из оценок по заданным факторам
Принцип расчета КТУ я взяла из данного источника https://www.buhonline.ru/pub/beginner/2019/12/15303_koefficient-trudovogo-uchastiya-2022
Например имеется бригада из 10 человек, занесем информацию по данной бригаде в простую таблицу excel. Проставим коды для каждого из факторов КТУ в столбцы, выделенные синим цветом.
![Список рабочих с показателями КТУ Список рабочих с показателями КТУ](https://habrastorage.org/getpro/habr/upload_files/3bf/151/77c/3bf15177c9a20140a70785e7dddb596b.jpg)
Теперь напишем код в python с использованием библиотеки pandas. Считаем данные с первого листа excel для создания словаря значений КТУ:
import pandas as pd def read_ktu_values(file_ktu): # Чтение данных из Excel файла df_ktu_values = pd.read_excel(file_ktu, sheet_name='KTU_Values') # Создание словаря значений КТУ ktu_values = {} for _, row in df_ktu_values.iterrows(): ktu_values[row['Код']] = row['Значение'] return ktu_values
Далее напечатаем формулу для расчета коэффициента:
def calculate_ktu(codes, ktu_values, base_ktu=1): ktu = base_ktu for code in codes: if code in ktu_values: ktu += ktu_values[code] return ktu
Теперь укажем значения для расчета премии и создадим словарь для работников:
def main(): # Чтение данных из Excel файла file_ktu = 'ktu.xlsx' total_bonus = 300000 # Пример общей премии, можно заменить на нужное значение # Чтение значений КТУ ktu_values = read_ktu_values(file_ktu) # Чтение второго листа с работниками и их кодами df_codes = pd.read_excel(file_ktu, sheet_name=1) # Убедимся, что колонка с именами работников называется правильно fio_column = 'ФИО' if fio_column not in df_codes.columns: raise KeyError(f"Колонка '{fio_column}' отсутствует на втором листе Excel файла.") # Предполагаем, что в df_codes коды указаны в колонках 'Код1', 'Код2', и т.д. code_columns = [col for col in df_codes.columns if col.startswith('Код')] # Создание словаря с кодами для каждого работника worker_codes = {} for _, row in df_codes.iterrows(): fio = row[fio_column] codes = [row[col] for col in code_columns if pd.notna(row[col])] worker_codes[fio] = codes
Далее исходя из наших значений факторов КТУ, рассчитаем значение данного коэффициента для каждого из работников:
# Расчет КТУ для каждого работника и добавление новой колонки в df_codes ktu_list = [] for _, row in df_codes.iterrows(): fio = row[fio_column] if fio in worker_codes: codes = worker_codes[fio] ktu = calculate_ktu(codes, ktu_values) else: ktu = 1 # Базовый КТУ, если нет кодов ktu_list.append(ktu) df_codes['КТУ'] = ktu_list # Расчет общей суммы КТУ всех работников total_ktu = sum(ktu_list) # Расчет премии для каждого работника df_codes['Премия'] = df_codes['КТУ'] / total_ktu * total_bonus
И в заключение выведем полученные значения в отдельный файл excel:
# Сохранение результатов в новый Excel файл, оставляя только нужные колонки output_file_path = 'output_ktu.xlsx' result_df = df_codes[['№, п/п', fio_column,'Должность', 'КТУ', 'Премия']] with pd.ExcelWriter(output_file_path) as writer: result_df.to_excel(writer, sheet_name='Результаты', index=False) print(f'Результаты сохранены в файл {output_file_path}') if __name__ == "__main__": main()
В результате получим следующую таблицу:
![Премия работников Премия работников](https://habrastorage.org/getpro/habr/upload_files/5dd/998/e6a/5dd998e6aff6e2bd4e6ed2357d9ed2ca.jpg)
Многие спросят для чего вообще считать данным способом коэффициент трудового участия, когда есть специальная настройка шаблона в 1С. Но, существуют небольшие фирмы, которые пользуются только основными продуктами 1С и не заносят данную информацию в программу. Также данный код может служить прекрасной проверкой расчета данного показателя, если вы сомневаетесь в правильности сделанных вами расчетов.
ссылка на оригинал статьи https://habr.com/ru/articles/826946/
Добавить комментарий