IDE + MCPаудит авторасчёта себестоимости готовой продукции и обоснование нормы расхода материала - чтение и аналитика за пользователя, без записи в базу и без внешних обработок

440 685 ₽ занижённой себестоимости из-за фиксированных «4% на обрезь»: проверили автоинвентаризатор ковриков по фактическому раскрою и обосновали норму расхода полосы СОТА (КИМ 85%), оформив техсправку и приказ

8 июня 2026 · «Бухгалтерия предприятия 3.0», ИП Котов Артём Сергеевич (производитель EVA-ковриков, продажи через маркетплейсы) · AI Agent for 1C

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.

Задача этого кейса - не наполнить базу, а проверить, насколько автоинвентаризатор посчитал верно, и обосновать норму расхода материала по факту производства.

Симптомы и зацепки:

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% (частичной нехватки нет); ТПП всегда полная замена либо тела, либо упаковки. А проверка коэффициента дала чистый результат:

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 Пакет документов

Технический момент - на машине не было рабочего 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

  1. Авторасчёт можно аудировать против факта. Себестоимость, которую считает скилл-автоинвентаризатор, проверена сплошняком по всем движениям и сверена с производственными данными клиента - точность подтверждена цифрой (99,1%), а не на словах.
  2. Масштаб, который руками не поднять. Один запрос поднимает весь регистр за период, а внешний анализ обрабатывает 1 136 строк за секунды - вручную такую сверку (19 размеров × сотни документов) никто делать не станет.
  3. Находка сразу превращается в защитимый документ. От «формула занижает себестоимость» до приказа со ссылкой на НК РФ и техсправки на 3 листах - в одном диалоге, без юриста и технолога со стороны.
  4. Безопасно по умолчанию. Аудит чужой боевой базы прошёл только на чтение: ноль записей, ноль 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 НК) ✅
← Все кейсы