IDE + MCPаудит авторасчёта себестоимости готовой продукции и обоснование нормы расхода материала - чтение и аналитика за пользователя, без записи в базу и без внешних обработок
440 685 ₽ занижённой себестоимости из-за фиксированных «4% на обрезь»: проверили автоинвентаризатор ковриков по фактическому раскрою и обосновали норму расхода полосы СОТА (КИМ 85%), оформив техсправку и приказ
TL;DR
Себестоимость EVA-ковриков в 1С формирует документ «Комплектация номенклатуры»: тело коврика списывается полосой СОТА 4,0 м², упаковка - ПЭ рукавом. Расход полосы ранее считал автоинвентаризатор по геометрии: (площадь коврика ÷ 4,0) × 1,04, где 1,04 - фиксированные 4% на обрезь. Подняли из чата все движения 41→41 за 1 квартал 2026 (1 136 строк, 596 комплектаций), сверили фактический коэффициент с расчётным и подтвердили, что сам авторасчёт точен на 99,1% - кроме 5 январских комплектаций, посчитанных без множителя 1,04. Затем клиент прислал реальный выход ковриков из листа (сколько штук каждого размера выкраивается из полосы 4,0 м²), и сверка вскрыла системное занижение: фиксированных 4% хватает только мелким форматам, а на крупных реальная обрезь доходит до −48%. Итог - себестоимость полосы за квартал занижена на +440 685 ₽ (+14,2%), недосписано 470 полос. Обосновали норму по фактическому раскрою листа 1,55 × 2,55 м (КИМ 85,2%, отход 14,8%) и упаковали в защитимый пакет: технологическая справка, приказ об утверждении норм со ссылкой на пп. 3 п. 7 ст. 254 НК РФ, файл финэффекта и предложение по правке методики. Ноль EPF, ноль Конфигуратора, ноль записей в базу - каждая цифра подтверждена запросом.
1. Контекст
ИП Котов - производитель EVA-ковриков (придверные и для сушки посуды), продажи через маркетплейсы (Ozon/ИНТЕРНЕТ РЕШЕНИЯ ООО, Яндекс Маркет, Магнит, РВБ), монозависимость от Ozon (~99% выручки). Рабочая база мультитенантная - внутри несколько ИП.
Себестоимость готовой продукции собирается через документы «Комплектация номенклатуры» - проводки Дт 41 (готовый коврик) Кт 41 (материалы). Каждый коврик = 2 компонента: тело (полоса СОТА 4,0 м²) + упаковка (ПЭ рукав). Сопоставление материалов и расчёт коэффициентов делает отдельный производственный скилл - автоинвентаризатор (LLM-промпт): из наименования коврика извлекает размер и цвет, по площади считает расход полосы (S÷4,0)×1,04, расход рукава, а при отсутствии нужного материала на складе ставит источником «Товары прошлых периодов» (ТПП) с коэффициентом 1,0.
Задача этого кейса - не наполнить базу, а проверить, насколько автоинвентаризатор посчитал верно, и обосновать норму расхода материала по факту производства.
Симптомы и зацепки:
- расход полосы считается по чистой геометрии + фиксированные 4% обрези - но при раскрое листа 1,55 × 2,55 м обрезь зависит от размера коврика и явно не постоянна;
- половина комплектаций идёт без реальной полосы (тело из ТПП) - надо понимать, где это нехватка, а где замена упаковки;
- у клиента есть фактические данные раскроя (сколько ковриков выходит из листа), которых нет в формуле.
2. Обращение заказчика
«Нужно сделать иерархический отчёт по комплектациям 41→41, чтобы комплектам подчинялись комплектации, а комплектациям - материалы, в Excel в удобочитаемом виде. И попутно проверь, что автоинвентаризатор нормально посчитал коэффициент по площади (% отклонения от расчётного).»
Затем, после первой сверки:
«Клиент в колонке «Комментарий» прислал количество ковриков, которые реально нарезаются из листа 4 кв. метра. Собери информацию и проверь в разрезе ковриков, сформируй изменение в промт агенту.»
И, ближе к финалу, про деньги и документы:
«Сколько при нашей ситуации можно добавить процентов на потери, чтобы по технологии это было обоснованно? … Хочу справку. … Приказ для утверждения справки не вижу, ты делал?»
Технический момент - комплектация создана только на проданные товары. Это важная вводная для налогового учёта: документы производства в 1С формируются по мере реализации (себестоимость списывается в расход при продаже), поэтому все объёмы и суммы кейса относятся к реализованной за квартал продукции, а не ко всему выпуску.
Отдельно - обратная связь конечного клиента (производителя). После первой редакции справки её показали самому ИП Котову, и он сразу поймал неточность в размере листа:
«там у вас 2х2 а он 1.55 на 2.55»
Реакция показательна: норму расхода и денежный эффект это не сдвинуло (они построены на фактическом выходе ковриков из листа, который клиент сам и снимал), пересчёт занял минуту - сместились только вспомогательные показатели КИМ/отхода. Детали - во врезке раздела 4.3.
3. Исследование
3.1 Поднять все комплектации 41→41 за квартал
Нужны движения регистра бухгалтерии, где и Дт, и Кт - счёт 41 (комплект списывается материалами того же счёта). Рабочий запрос дался не сразу - виртуальная таблица регистра капризна к параметрам:
ВЫБРАТЬ
Т.СубконтоДт1 КАК Комплект,
Т.Регистратор КАК ДокументКомплектации,
Т.СубконтоКт1 КАК Материал,
Т.КоличествоДт КАК КоличествоКомплектов,
Т.КоличествоКт КАК КоличествоМатериалов,
Т.Сумма КАК Себестоимость,
Т.Регистратор.Дата КАК ДатаДокумента,
Т.Регистратор.Комментарий КАК Комментарий
ИЗ
РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто(
ДАТАВРЕМЯ(2026, 1, 1, 0, 0, 0),
ДАТАВРЕМЯ(2026, 3, 31, 23, 59, 59),
,
,
) КАК Т
ГДЕ
Т.СчетДт.Код ПОДОБНО "41%"
И Т.СчетКт.Код ПОДОБНО "41%"
УПОРЯДОЧИТЬ ПО Комплект, ДатаДокумента
Технический момент - период виртуальной таблицы только литералом, счёт - через код. Передавать границы периода параметром
&НачалоПериодабессмысленно: MCP отдаёт значение строкой, а параметр периода ВТ требует тип Дата →Несоответствие типов (Параметр номер "1"). Лечится литераломДАТАВРЕМЯ(...)прямо в тексте. Счёт тоже нельзя передать объектом-ссылкой (Нельзя сравнивать поля неограниченной длины) и нельзя подзапросомВ ИЕРАРХИИвнутри условия ВТ - рабочий способ только фильтр поСчетДт.Код ПОДОБНО "41%"в основномГДЕ.
Выборка - 1 136 строк-движений, 199 комплектов (ковриков), 596 комплектаций, итог себестоимости 3 169 921,84 ₽.
Технический момент - крупная выборка уходит в файл. 1 136 строк JSON с реквизитами - это >1 млн символов; MCP сохранил результат в файл
tool-results, а не в контекст. Дальше обрабатывали программно (Python/openpyxl), не затаскивая массив в диалог.
3.2 Как устроены проводки: число ковриков ≠ строка
Первая ловушка обнаружилась сразу. В документе комплектации КоличествоКомплектов (Дт) у разных строк-компонентов разное (например 57,254 и 282,746 на один коврик), и суммировать его «в лоб» нельзя.
| Документ №176 (коврик 50×70) | КолКомплектов | КолМатериалов | Себестоимость |
|---|---|---|---|
| Полоса Серая СОТА 4.0 кв | 57,254 | 30,940 | 28 361,67 |
| ПЭ Рукав НД 540*40 | 282,746 | 152,796 | 1 171,95 |
Технический момент -
КоличествоКомплектовразнесено между компонентами. Сумма по строкам = 57,254 + 282,746 = 340 = реальное число выпущенных ковриков. Коэффициент компонента = расход материала ÷ 340: полоса 30,94 ÷ 340 = 0,091; рукав 152,796 ÷ 340 = 0,449. Оба сходятся с расчётом по площади. Значит при проверке число ковриков по документу = СУММАКоличествоКомплектов, а не значение одной строки.
3.3 Первая сверка коэффициента - и ложная тревога
Сверили фактический коэффициент полосы (расход СОТА ÷ число ковриков) с расчётным (S÷4,0)×1,04. На первом проходе всплыли «провалы» до −76%:
| Коврик | S, м² | факт | расчёт | откл. |
|---|---|---|---|---|
| 100×70 светло-серый | 0,70 | 0,0427 | 0,182 | −76,5% |
| 100×50 серый | 0,50 | 0,0453 | 0,130 | −65,2% |
Подняли эти документы целиком - и оказалось, что полоса в них списана несколькими строками (разные партии), а считали мы по одной:
№574 (коврик 100×70):
ТПП ...................... КМ 94,000
Полоса Серая СОТА ........ КМ 4,012
Полоса Серая СОТА ........ КМ 13,096 ← вторая партия
Σ полосы = 17,108 ; ковриков = 94 ; факт 0,182 = расчёт 0,182 → 0%
Технический момент - артефакт раздробленных партий. Отклонение по одной строке из нескольких - ложное. Коэффициент надо считать агрегатно по документу: сумма расхода компонента ÷ число ковриков. После агрегации «провалы» −52…−76% исчезли полностью.
3.4 Реальная картина и реальные ошибки
После корректной агрегации:
| Категория комплектаций (по паре коврик+документ) | Пар |
|---|---|
| Рукав + СОТА (тело и упаковка свои) | 152 |
| СОТА + ТПП (тело на полосе, рукав из ТПП) | 140 |
| Рукав + ТПП (полосы не было, тело из ТПП) | 105 |
| Только ТПП | 186 |
| Прочее (только СОТА / только рукав) | 13 |
Вывод: где полоса использована - она покрывает тело на 100% (частичной нехватки нет); ТПП всегда полная замена либо тела, либо упаковки. А проверка коэффициента дала чистый результат:
- 545 проверенных компонентов, совпадение с расчётом 99,1%;
- отклонения только у 5 комплектаций, и все одинаковые: −3,8% по СОТА за 02-04.01.2026 - это в точности непринятый множитель 1,04 (1 ÷ 1,04 − 1 = −3,8%). В ранних документах формула шла без 4% обрези; в поздних 1,04 уже применяется.
3.5 Данные клиента: фактический выход из листа
Клиент проставил в отчёте реальный выход - сколько ковриков каждого размера нарезается из листа СОТА 1,55 × 2,55 м (162 пометки, 19 размеров, согласовано по цветам). Сверка реального коэффициента 1÷N с формулой автоинвентаризатора вскрыла системное расхождение:
| Размер | S, м² | Выход N (факт) | Выход по формуле | Коэфф. реал. | Коэфф. формула | Расхожд. |
|---|---|---|---|---|---|---|
| 50×70 | 0,350 | 11 | 10,99 | 0,0909 | 0,0910 | +0,1% |
| 50×100 | 0,500 | 7 | 7,69 | 0,1429 | 0,1300 | −9,0% |
| 60×90 | 0,540 | 6 | 7,12 | 0,1667 | 0,1404 | −15,8% |
| 75×200 | 1,500 | 2 | 2,56 | 0,5000 | 0,3900 | −22,0% |
| 70×100 | 0,700 | 4 | 5,49 | 0,2500 | 0,1820 | −27,2% |
| 100×200 | 2,000 | 1 | 1,92 | 1,0000 | 0,5200 | −48,0% |
Технический момент - 4% потерь не зависят от размера, а реальная обрезь зависит. Фиксированный множитель 1,04 верен только для мелких форматов (из листа выходит много штук, обрезь мала). На крупных, где из листа выходит 1-2 коврика, неделимый остаток доходит до целого коврика - формула «площадь÷площадь» этого не ловит. У 12 из 19 размеров расхождение превышает 5%.
4. Решения
В этом кейсе правка базы не требовалась: автоинвентаризатор уже наполнил комплектации, а наша работа - аудит, расчёт эффекта и обоснование нормы. Всё сделано чтением из 1С (query_1c) плюс внешней обработкой в Python.
4.1 Иерархический отчёт по комплектациям
Собрали Excel (openpyxl) с настоящей иерархией Комплект ▸ Документ ▸ Материал через группировку строк (outline_level + summaryBelow=False, итог-родитель над детьми), с тремя макрогруппами по полосе, объединением одинаковых комментариев по комплектации и колонками «коэфф. факт / расчёт / % откл.» с цветовой подсветкой. Лист «Проверка коэффициентов» содержит выделенный вывод о точности 99,1% и таблицу всех 5 отклонений.
4.2 Денежный эффект перехода на фактический выход
Пересчитали себестоимость полосы по 1÷N против действующей формулы, по каждому документу (масштабированием на отношение полос), агрегировали по размеру и по товару:
Себестоимость полосы СОТА за 1 кв 2026:
по действующей методике (4%) .............. 3 099 777 ₽
по нормам фактического выхода (принимается) 3 540 461 ₽ (+440 685 ₽, +14,2%)
контроль по единому нормативу +17% ........ 3 540 382 ₽ (сходится, разница 0,002%)
в т.ч. технологические потери ............. 524 020 ₽ (надбавка +17,3%)
Технический момент - два независимых метода как взаимная проверка. Поразмерный расчёт
1÷Nи единый норматив×1,19дали практически один результат (разница 0,2%). Это и есть доказательство, что средневзвешенный норматив потерь корректен - им можно защищаться, не расписывая каждый размер.
4.3 Обоснование нормы потерь
Свели технологию к цифрам, средневзвешенно по фактическому выпуску квартала:
| Показатель | Значение |
|---|---|
| Площадь готовой продукции | 12 786 м² |
| Площадь израсходованных листов (по 1,55 × 2,55 м) | 15 000 м² |
| Коэффициент использования материала (КИМ) | 85,2% |
| Норматив технологических потерь (отход) | 14,8% |
| Эквивалентная надбавка к чистой площади | +17,3% |
КИМ ~85% - типичный уровень для прямоугольного раскроя листового полимера, то есть норма рыночно объяснима, а не «с потолка».
Технический момент - размер листа уточнил клиент, и пересчёт занял минуту. В первой редакции справки лист был указан как «2,0 × 2,0 м» (домыслили квадрат из номинала «полоса 4.0 кв»). Артём поправил: реальный лист 1,55 × 2,55 м = 3,95 м². На норму расхода и денежный эффект это не повлияло - они построены на фактическом выходе N из листа (который клиент и снимал с реального листа), а себестоимость ведётся в полосах. Пересчёт затронул только вспомогательные показатели: КИМ сместился 84,2 → 85,2%, отход 15,8 → 14,8%. Норма
1÷Nи эффект 440 685 ₽ остались прежними.
4.4 Пакет документов
- Технологическая справка (3 листа) - методика, поразмерная таблица норм
1÷N, КИМ, порядок применения; шапка с реквизитами ИП; - Приказ об утверждении норм - вводит нормы в действие со ссылкой на пп. 3 п. 7 ст. 254 НК РФ (технологические потери = материальные расходы, норматив налогоплательщик устанавливает сам), приложение «на 3 л.»;
- Файл финэффекта (xlsx, 3 листа) - сводка по размерам и по товарам со столбцами «Потери по справке, %» и «Сумма потерь, ₽», плюс лист «Пояснение для клиента»;
- Предложение по правке методики автоинвентаризатора - готовый блок «Было → Стало»: коэффициент СОТА =
1÷Nпо справочнику фактического выхода, с fallback для новых размеров.
Технический момент - на машине не было рабочего Python. В PATH только заглушки Microsoft Store. Поставили Python 3.12 (
winget), отчёты собрали наopenpyxl, документы - наpython-docx, а число листов справки посчитали точно через Word COM (ComputeStatistics(2)= 3 страницы) и проставили в приказ.
4.5 Рекомендация по 5 январским комплектациям
Эти документы недосписали 4% полосы (нет множителя 1,04). Исправление - не правка данных вручную, а перепроведение: снять проведение, пересчитать с 1,04, провести заново. В этом кейсе оставлено рекомендацией (требует подтверждения клиента); инструменты для этого - в арсенале (batch_1c UNPOST + invoke_1c/перепроведение по одному).
5. Инструменты
5.1 Использовали в этом кейсе
| Инструмент | Что делали |
|---|---|
query_1c |
подняли все движения 41→41 за квартал (виртуальная таблица Хозрасчетный.ДвиженияССубконто), разбор проводок комплектаций |
session_info_1c |
определили доступные базы, выбрали рабочую базу |
| Python (openpyxl) | иерархический отчёт, проверка коэффициентов, файл финэффекта |
| Python (python-docx) | технологическая справка и приказ |
| Word COM | точный подсчёт листов справки для приложения к приказу |
5.2 Что осталось за рамками - но есть в арсенале
| Инструмент / компонент | Что даёт | Когда пригодился бы в похожей задаче |
|---|---|---|
batch_1c (UNPOST) + invoke_1c |
перепроведение документов | исправить 5 январских комплектаций (досписать 4% полосы) - перепровести по одному, mode: sync |
metadata_1c |
структура регистров/документов | уточнить состав субконто и реквизиты «Комплектации номенклатуры» перед массовой правкой |
run_task / task_status |
фоновые длительные операции | пересчёт себестоимости по всему году, не только за квартал |
get_skill / skill_report |
каталог переиспользуемых скиллов | вынести проверку коэффициентов автоинвентаризатора в регулярный скилл-аудит |
ai_ПанельАгента |
агент внутри 1С | показать клиенту отчёт и подтвердить правку прямо в базе |
| Audit-trail runtime | журнал вызовов с токеном клиента | доказательная база действий по чужой боевой базе |
6. Результаты
| Метрика | Значение |
|---|---|
| Движений 41→41 разобрано | 1 136 (596 комплектаций, 199 ковриков) |
| Точность автоинвентаризатора по коэффициенту | 99,1% (545 компонентов) |
| Системных ошибок расчёта найдено | 5 (январь, −3,8% без множителя 1,04) |
| Занижение себестоимости полосы выявлено | +440 685 ₽ (+14,2%), недосписано 470 полос |
| Норма потерь обоснована | отход 14,8%, КИМ 85,2%, надбавка +17,3% |
| Документов пакета подготовлено | 4 (финэффект xlsx, справка 3 л., приказ, правка методики) |
| Записей в базу | 0 (работа читающая + аналитическая) |
| EPF в боевую базу / визитов в Конфигуратор | 0 / 0 |
7. Что это даёт пользователю MCP ai-agent-1c
- Авторасчёт можно аудировать против факта. Себестоимость, которую считает скилл-автоинвентаризатор, проверена сплошняком по всем движениям и сверена с производственными данными клиента - точность подтверждена цифрой (99,1%), а не на словах.
- Масштаб, который руками не поднять. Один запрос поднимает весь регистр за период, а внешний анализ обрабатывает 1 136 строк за секунды - вручную такую сверку (19 размеров × сотни документов) никто делать не станет.
- Находка сразу превращается в защитимый документ. От «формула занижает себестоимость» до приказа со ссылкой на НК РФ и техсправки на 3 листах - в одном диалоге, без юриста и технолога со стороны.
- Безопасно по умолчанию. Аудит чужой боевой базы прошёл только на чтение: ноль записей, ноль EPF, ноль Конфигуратора - клиенту нечего откатывать.
Приложения
A. Объекты кейса
| Объект | Что с ним сделали |
|---|---|
Регистр Хозрасчетный.ДвиженияССубконто |
прочитали движения 41→41 за 1 кв 2026 |
| Документ «Комплектация номенклатуры» (596 шт) | разобрали состав, проверили коэффициенты |
Комплектации_41-41_1кв2026_.xlsx |
иерархический отчёт + лист проверки (99,1%) |
Финэффект_методика_раскроя_СОТА_Котов_1кв2026.xlsx |
расчёт эффекта +440 685 ₽, столбцы потерь, пояснение клиенту |
Технологическая_справка_нормы_потерь_СОТА_Котов.docx |
обоснование норм (3 л.) |
Приказ_об_утверждении_норм_потерь_СОТА_Котов.docx |
утверждение норм, ссылка на ст. 254 НК РФ |
Изменение_промпта_выход_СОТА_Котов.md |
правка методики автоинвентаризатора (1÷N) |
B. Карта проблемы
Себестоимость полосы СОТА = (S ÷ 4,0) × 1,04 (фиксированные 4% обрези)
│
▼
query_1c: все движения 41→41 за квартал (1 136 строк → файл, не в контекст)
│
▼
агрегатная проверка коэффициента ── автоинвентаризатор точен 99,1%
│ (5 январских без 1,04 → −3,8%)
▼
данные клиента: реальный выход N из листа ── подтверждение человеком
│
▼
сверка 1÷N vs формула: занижение до −48% на крупных форматах
│
▼
эффект +440 685 ₽ (+14,2%) → норма КИМ 85% → справка + приказ (ст. 254 НК) ✅