<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Python-скрипт для unit-экономики цеха: расчет заказов с экспортом в Excel]]></title><description><![CDATA[<p dir="auto">В цехе каждый заказ - это мини-бизнес. Python-скрипт быстро считает unit-экономику: выручку, затраты, маржу на единицу. Экспорт в Excel для B2B-оценки у клиента на столе.</p>
<p dir="auto">Ручной эксель для заказов - сплошной геморрой. Ошибки в формулах, копи-паст по листам, время уходит на минуты вместо секунд. Скрипт берет вводные: объем, цена металла, трудозатраты, ЧПУ-программирование - и выдает полную картину рентабельности. Полезно для металлообработки, где маржа висит на волоске от поставок и режимов резания.</p>
<h2>Что такое unit-экономика в цеховом деле</h2>
<p dir="auto">Unit-экономика - разбор одного заказа или единицы изделия. Считаем выручку минус все затраты: материалы, электроэнергия, износ фрез, зарплата оператора ЧПУ. Без этого B2B-клиенты давят ценой, а ты в минусе сидишь. В металлообработке типичный юнит - деталь под станок: сталь по кг, время на Fanuc, постобработка.</p>
<p dir="auto">Пример: заказ на 1000 шестеренок. Цена клиенту 500 руб/шт, металл 150 руб, резка 1 мин/шт по 20 руб/мин, упаковка 20 руб. Ручной расчет в экселе - час, с ошибками. Скрипт жмет все за 5 сек, плюс сценарии: если металл подорожает на 10%, маржа упадет? Видно сразу. Логично перейти к формулам - они простые, но автоматизация спасает от рутины.</p>
<ul>
<li><strong>Выручка</strong>: объем * цена_ед.</li>
<li><strong>Переменные затраты</strong>: металл_кг * цена_кг + время_ЧПУ * ставка_мин + труд_ручной.</li>
<li><strong>Постоянные</strong>: амортизация станка / год * доля_заказа + электроэнергия.</li>
<li><strong>Маржа</strong>: (выручка - переменные - постоянные) / выручка * 100%.</li>
</ul>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Показатель</th>
<th>Формула</th>
<th>Пример для 1 детали</th>
</tr>
</thead>
<tbody>
<tr>
<td>Выручка</td>
<td>volume * price</td>
<td>500 руб</td>
</tr>
<tr>
<td>Затраты var</td>
<td>metal + cnc_time * rate</td>
<td>250 руб</td>
</tr>
<tr>
<td>Маржа</td>
<td>(rev - costs)/rev *100</td>
<td>50%</td>
</tr>
</tbody>
</table>
<p dir="auto"><em>Нюанс: не забудь налоги - минус 20% от прибыли для чистой картины.</em></p>
<h2>Ключевые формулы для цеха</h2>
<p dir="auto">В цеху затраты делят на переменные (растут с объемом) и постоянные (аренда, оклады). Переменные - основной удар: цена лента-ленты, фрезы по номеру, время по G-коду. Постоянные распределяют по заказам, чтоб не завысить. Скрипт их балансирует автоматически.</p>
<p dir="auto">Реал: фрезеровка алюминия. 500 деталей, G-code на Fanuc генерит 2 мин/деталь, инструмент 0.5 руб/мин. Металл 100 руб/кг, вес детали 0.2 кг. Без скрипта менеджер в экселе путает объемы. С ним - таблица с break-even: сколько нужно сбыть, чтоб в ноль. Подводит к вводу данных и расчету в коде.</p>
<ol>
<li>Ввод: dict с volume, price, metal_cost, cnc_time, labor_rate.</li>
<li>Расчет: revenue = volume * price; var_costs = (metal_cost * weight * volume) + (cnc_time * volume * rate).</li>
<li>Fixed: станок_аморт / год * (volume / год_произв).</li>
<li>Profit = revenue - var_costs - fixed; ROI = profit / fixed * 100.</li>
</ol>
<p dir="auto"><strong>Код-сниппет для старта:</strong></p>
<pre><code class="language-python">import pandas as pd

# Ввод данных заказа
data = {
    'volume': 1000,
    'price': 500,
    'metal_kg': 0.2,
    'metal_price': 100,
    'cnc_min': 1.5,
    'cnc_rate': 20,
    'fixed_month': 50000  # аморт + аренда
}
revenue = data['volume'] * data['price']
var_costs = (data['metal_kg'] * data['metal_price'] * data['volume']) + (data['cnc_min'] * data['volume'] * data['cnc_rate'])
margin = (revenue - var_costs) / revenue * 100
print(f'Маржа: {margin:.1f}%')
</code></pre>
<p dir="auto"><em>Тестируй на своих заказах - меняй metal_price, смотри просадку.</em></p>
<h2>Полный скрипт с экспортом в Excel</h2>
<p dir="auto">Скрипт на pandas - король для цеха. Читает ввод, крутит циклом сценарии (базовый, пессимист, оптимист), пишет в xlsx с листами. Формулы в экселе подтянутся, клиент откроет и сам пощелкает. Нет xlwings - не надо Excel запускать, чистый Python.</p>
<p dir="auto">Пример для B2B: клиент из нефтегаза кидает чертеж, ты грузишь параметры - скрипт выдает таблицу: цена заказа, LCOF (стоимость единицы), payback. В металлообработке это убивает конкурентов - цифры на столе, без домыслов. Переходим к коду: копипасть, запусти pip install pandas openpyxl.</p>
<ul>
<li>Установка: <code>pip install pandas openpyxl xlsxwriter</code>.</li>
<li>Сценарии: базовый, +10% металлу, -20% времени ЧПУ.</li>
<li>Экспорт: writer = pd.ExcelWriter(‘unit_ceh.xlsx’); df.to_excel(writer, ‘Расчеты’).</li>
<li>Графики: plt.plot, сохрани в лист.</li>
</ul>
<p dir="auto"><strong>Полный скрипт готов к работе:</strong></p>
<pre><code class="language-python">import pandas as pd
import numpy as np

def calc_unit(data):
    revenue = data['volume'] * data['price']
    var_costs = (data['metal_kg'] * data['metal_price'] * data['volume']) + \
                (data['cnc_min'] * data['volume'] * data['cnc_rate'])
    fixed = data['fixed_month'] / 20  # на день, грубо
    profit = revenue - var_costs - fixed * data['days']
    margin = (profit / revenue) * 100
    return {'revenue': revenue, 'var_costs': var_costs, 'fixed': fixed * data['days'], 'profit': profit, 'margin': margin}

# Данные
base_data = {'volume': 1000, 'price': 500, 'metal_kg': 0.2, 'metal_price': 100, 'cnc_min': 1.5, 'cnc_rate': 20, 'fixed_month': 50000, 'days': 10}

scenarios = [
    base_data,
    {**base_data, 'metal_price': 110},  # пессимист
    {**base_data, 'cnc_min': 1.2}  # оптимист
]

results = []
for i, scen in enumerate(['Базовый', 'Металл+10%', 'Время-20%']):
    res = calc_unit(scenarios[i])
    res['scenario'] = scen
    results.append(res)

df = pd.DataFrame(results)

# Экспорт
with pd.ExcelWriter('unit_ekonomika_ceh.xlsx', engine='xlsxwriter') as writer:
    df.to_excel(writer, sheet_name='Unit_расчет')
    workbook = writer.book
    worksheet = writer.sheets['Unit_расчет']
    # Форматы
    num_format = workbook.add_format({'num_format': '#,##0.00'})
    worksheet.set_column('A:F', None, num_format)

print('Файл unit_ekonomika_ceh.xlsx готов. Открой - клиентам тащи.')
</code></pre>
<table class="table table-bordered table-striped">
<thead>
<tr>
<th>Сценарий</th>
<th>Выручка</th>
<th>Var затраты</th>
<th>Fixed</th>
<th>Прибыль</th>
<th>Маржа %</th>
</tr>
</thead>
<tbody>
<tr>
<td>Базовый</td>
<td>500000</td>
<td>250000</td>
<td>25000</td>
<td>225000</td>
<td>45.0</td>
</tr>
<tr>
<td>Металл+10%</td>
<td>500000</td>
<td>270000</td>
<td>25000</td>
<td>205000</td>
<td>41.0</td>
</tr>
<tr>
<td>Время-20%</td>
<td>500000</td>
<td>230000</td>
<td>25000</td>
<td>245000</td>
<td>49.0</td>
</tr>
</tbody>
</table>
<p dir="auto"><em>Добавь свой инструмент: time по API справочника резки.</em></p>
<h2>Сценарии и риски в unit</h2>
<p dir="auto">Сценарии - must have. Базовый по текущим ценам, пессимист с ростом металла (как в 2024), оптимист с новой фрезой. Скрипт крутит np.array, строит NPV если проект долгий. В цеху риски: брак 2%, задержка поставок +3 дня.</p>
<p dir="auto">Для B2B: клиент видит таблицу, ты аргументируешь цену. Без этого торг до последнего рубля. Код гибкий - допили под свой цех: добавь энергию кВт*ч, зарплату сдельную. Таблица рисков подводит к тюнингу.</p>
<ol>
<li>Брак: margin * (1 - брак_%).</li>
<li>Задержка: fixed * extra_days.</li>
<li>Скидка клиенту: price * (1 - discount).</li>
</ol>
<p dir="auto"><strong>Тестируй риски в скрипте - меняй dict и смотри.</strong></p>
<h2>Таблицы для клиента</h2>
<p dir="auto">Экспорт - не просто дамп, а с форматированием. Pandas + xlsxwriter: цвета для маржи &lt;30% красным, графики pie для затрат. Клиент открывает, видит dashboard. В B2B это конвертит лиды - цифры не врут.</p>
<p dir="auto">Пример листа: pie выручка/затраты, line маржа по сценариям. Код выше пишет базу, допили format. Полезно для презентаций: скопируй в PPT. Логично кодами для графиков.</p>
<pre><code class="language-python">import matplotlib.pyplot as plt

df_pie = pd.Series({'Var': 250000, 'Fixed': 25000, 'Profit': 225000})
fig, ax = plt.subplots()
df_pie.plot.pie(autopct='%1.1f%%')
plt.savefig('zатраты_pie.png')
</code></pre>
<p dir="auto"><em>Вставь png в эксель через скрипт или вручную.</em></p>
<h2>Когда скрипт окупается</h2>
<p dir="auto">Скрипт тратит минуты на расчет 10 заказов - эксель часами. В B2B оценка за 5 мин дает преимущество: клиент уходит к тебе. Окупаемость - первый выигранный тендер. Осталось допилить под API цен металла и импорт чертежей - тогда вообще огонь.</p>
<p dir="auto">Дальше думай интеграцию: G-code time из симулятора ЧПУ, цены из 1C. Без этого ручной ввод, но уже в разы быстрее. Тестируй на реальных заказах цеха.</p>
]]></description><link>https://forum.investsteel.ru/topic/3410/python-skript-dlya-unit-ekonomiki-ceha-raschet-zakazov-s-eksportom-v-excel</link><generator>RSS for Node</generator><lastBuildDate>Fri, 10 Apr 2026 21:58:32 GMT</lastBuildDate><atom:link href="https://forum.investsteel.ru/topic/3410.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 10 Apr 2026 09:01:53 GMT</pubDate><ttl>60</ttl></channel></rss>