Я слушала, как ИИ закрывает мой месяц
Ты сидишь? Сядь. Я тебе сейчас расскажу, что у меня было за эти две недели, и ты мне не поверишь.
Ты же знаешь, у нас ERP и бухгалтерия отдельно, между ними обмен. Июль и август в ERP у меня не закрывались. Вообще. Запускаешь закрытие — себестоимость считается, всё крутится, а в конце «Не выполнено». А май и июнь закрылись нормально. Отчёты по остаткам, ведомости, консультанты — все говорят «у вас минуса, ищите». А где их искать, если по складу всё в плюсе?
И вдобавок обмен: загрузила в бухгалтерию из ERP три месяца, и там не провелось несколько сотен документов. Я на это посмотрела и подумала: всё, это до Нового года.
Как это было
Звонит наш программист: «Я сейчас буду работать с искусственным интеллектом, а ты слушай. Включи громкую». Я думала, он будет что-то программировать. Ничего подобного. Он с ним разговаривает. Говорит в микрофон обычными словами, как мне, — это превращается в текст и уходит ИИ. Тот отвечает текстом, программист мне зачитывает. Если ИИ что-то спрашивает — программист передаёт вопрос мне, я отвечаю, он диктует мой ответ обратно.
Я поначалу вообще не понимала, с кем он разговаривает.
Месяц в ERP
Начали с ERP, ещё в конце сентября.
Программист — ИИ: «Посмотри, почему не закрываются июль и август».
И всё. Я жду, что сейчас будет «уточните, пожалуйста». Нет. ИИ сам полез в базу: состояния закрытия, журнал запусков, остатки. Через какое-то время программист читает:
Я говорю: «Подожди. Это он откуда взял?» Программист: «Из кода конфигурации прочитал». Я: «Как — из кода?!» Сколько лет работаю — а этого не знала.
Дальше — откуда минуса, каждый до документа. Иглы, шпули, ножи пришли с номером ГТД, а списаны без номера, ещё в позапрошлом году. Краги у маркетплейса: один товар заведён тремя карточками, и в продажах выбирали ту, которая у них уже кончилась. Отчёт давальцу стоит первым сентября, а передача давальцу — в августе. Я сижу и только говорю: «Так… так… а это-то как он нашёл?»
Я говорю: «Он что, ещё и думает, как бы мне хуже не сделать?»
Исправили — июль закрылся. На августе вылезла ещё одна ошибка — в возврате от маркетплейса пустое поле, которое во всех прежних возвратах заполнено. ИИ её нашёл, исправили — август закрылся. И мне инструкция: четыре пункта, что где поменять и почему, и отдельно — «чтобы не повторилось».
Обмен: «он видит, что я закрыла»
А сегодня — обмен с бухгалтерией.
Программист — ИИ: «Посмотри, бухгалтер должна была сделать обмен, загрузить из ERP в бухгалтерию данные. Сделала она это вчера или сегодня? В журнале регистрации можно посмотреть».
Через минуту:
Я говорю: «Да, точно, вчера вечером! А это он как узнал?»
Сегодня я запускаю загрузку снова, а у меня помощник обмена висит на «анализе данных». Висит и висит. Я один раз не выдержала и закрыла.
Программист — ИИ: «Произошло какое-то зависание визуальное, выполняется анализ полученных данных, висит уже долго. Посмотри, что там происходит, может, уже всё загрузилось».
Я: «Он видит, что я закрыла?!» Программист смеётся: «Видит». Я сижу красная.
«Посмотри, как сделано у бухгалтера»
Потом самое главное. Сотни выпусков продукции — «не заполнена сумма плановая».
Программист — ИИ: «Нужно исправить документы выпуск продукции за июль, август и сентябрь. Посмотри, как у бухгалтера сделано в предыдущих периодах, и сделай всё по аналогии. Внимательно посмотри подразделения, реквизиты. Сделай реестр, чтобы был номер и дата каждого документа».
ИИ ушёл в мои документы за полгода и через какое-то время:
Я: «Подожди, это он по моим документам понял? За полгода? Я сама так не объясню!»
Я говорю: «Да! Убираем. На двадцать ноль два. Рубль оставляем».
Программист — ИИ: «Давальческую ткань убираем, выпускаем на 20.02, один рубль оставляем, как у бухгалтера. Даю все разрешения на исправление. Не забудь всё записать, чтобы не потерялись никакие документы».
Ткань заказчика ИИ провёл через забалансовый счёт, как положено. И сам заметил, что одним документом нельзя: у меня возвраты остатков заказчику уже стоят по датам, и остаток уйдёт в минус. Разбил по партиям.
Я: «До сотых?! Я так никогда не сверяла».
Где он меня поймал
Пока ИИ работал, у меня один выпуск не проводился — не хватало утеплителя. Ну я, как обычно, взяла и уменьшила количество, чтобы провёлся.
Программист — ИИ: «Посмотри по синтепону по этому документу, сверь с данными из ERP и разберись, почему так произошло».
Я: «Да как?! Я же только что!»
Полгода остатки расходились, и никто не знал. Я говорю: «Двадцать пятый год трогать нельзя».
Программист — ИИ: «Двадцать пятый год трогать нельзя. Оформи пересортицу сам, сделай нужный документ, проведи его и отчитайся».
Ещё одну реализацию ИИ проводить не стал: ткани в ней списывалось на несколько метров больше, чем ушло в раскрой. Мог просто поставить цифру. Не поставил:
Мне это понравилось больше всего. Он не подгоняет.
«Он поправил нас»
Под конец — продажа первого июля, не проводится.
Программист — ИИ: «Посмотри реализацию, почему не проведена».
Программист — ИИ: «Июнь закрыт, открывать не можем. Сделай комплектации в июле. А костюм летний — документ там от двадцатого июля, можно исправить счёт и провести. Бухгалтер говорит, его отгрузили первого июля, может, дату тоже поменять. Если я какую-то ошибку допустил — поправь меня сначала. Дату запрета ни в коем случае не менять».
И он поправил!
Программист мне: «Делаем?» Я: «Делаем!»
Программист — ИИ: «Да».
Я сижу и только повторяю: «Неужели так можно…»
Сколько это заняло
Раньше у меня закрытие такого периода — неделя. Неделя минимум, с нервами, с консультантами. А тут — ERP за одну сессию и обмен за другую, и каждая — не больше часа.
И после него всё записано. Реестр всех документов — что было, что стало. Журнал: что создал, что изменил и почему. Файл с удалёнными строками — если что, можно вернуть. И отдельный документ для следующего раза: какие ошибки бывают при обмене и как их исправлять.
Что в итоге
Период в бухгалтерии — июль, август, сентябрь — мы довели до закрытия. Немножко не доделали — просто не успели, мне нужно было уходить. Осталось три моих вопроса: та реализация с лишними метрами ткани, остатки ткани заказчика в производстве и сверка утеплителя другой плотности с ERP. Но в целом — сделано.
Вечером программист прислал мне сводку, что ИИ проанализировал и сделал сам:
| Что | Сколько |
|---|---|
| Закрытие месяца в ERP: найдено и устранено причин | 4, июль и август закрыты |
| Выпуски продукции: исправлено по образцу бухгалтера и проведено | около 240 |
| Строк ткани заказчика убрано из выпусков (с сохранением в отдельный файл) | почти 200 |
| Выпусков переведено на счёт изделий заказчика | больше 100 |
| Новые документы: передача ткани заказчика в производство | 7 |
| Реализации услуг по переработке со счетами-фактурами: исправлено и проведено | 6 |
| Возврат ткани заказчику, месяц стоявший с ошибкой: проведён | 1 |
| Пересортица утеплителя в открытом периоде | 1 |
| Комплектации взамен непроведённых июньских, перемещение со счёта материалов на готовую продукцию | 4 + 1 |
| Продажа покупателю: проведена | 1 |
| Расследований «почему разошлись базы» до конкретного документа | 3 |
| Вопросов, где ИИ не стал подставлять цифру и оставил решение бухгалтеру | 3 |
Что я сказала
Я сказала: «Поставьте мне это на компьютер. Я хочу так же». Сама говорить: «Посмотри, почему не проводится реализация первого июля». И чтобы оно мне отвечало, как сегодня: вот причина, вот варианты, вот что рекомендую, решайте.
Потому что он не делает за меня главное. Он всё время спрашивал: можно ли трогать закрытый месяц, по какому образцу вести, сколько ткани на самом деле ушло. Решаю я. А копаться, искать, сверять, проводить сотни документов — это он.
Не страшно ли
Страшно. Немножко. Половина того, за что мне платят, — это как раз копаться, искать и сверять. Но я послушала и поняла: те, кто будет уметь с этим работать, будут закрывать за час то, что другие закрывают за неделю. И я хочу быть среди первых.
Так что готовься, подруга. Я — уже.
Имена, названия организаций, контрагентов и товаров изменены или убраны; отрасль сохранена. Задания программиста и ответы ИИ — из реальных рабочих сессий.
Техническая часть: как это было сделано
Дальше — те же две сессии глазами программиста: чем агент был подключён к базам, в каком порядке шла диагностика каждой проблемы, как вносились исправления и какие правила делали работу на рабочих базах безопасной.
Исходные данные. Две базы: 1С:ERP (производство, склад, продажи, в том числе через маркетплейс-комиссионера, пошив из давальческого сырья) и 1С:Бухгалтерия предприятия (регламентированный учёт). Документы приходят в бухгалтерию из ERP обменом через универсальный формат. Периоды закрываются датой запрета изменения. Базы стоят на разных серверах; агент работал напрямую с рабочими базами.
Чем агент работал с базами
Доступ к данным — расширение конфигурации собственной разработки. Одно и то же расширение установлено в обе базы — ERP и бухгалтерию, которые стоят на разных серверах. Устанавливается в любую конфигурацию на платформе 1С 8.3.14 и выше (режим совместимости не ниже 8.3.14), с поддержки конфигурацию не снимает. На компьютере программиста работает MCP-сервер — стандартный протокол, через который ИИ-агент вызывает инструменты. Один сервер и один набор инструментов обслуживают любое количество баз: агент видел данные обеих баз сразу, мог сравнивать их между собой и в той же сессии изменять — исправлять, создавать и проводить документы. Все действия идут под пользователем базы, указанным при подключении, и в пределах его прав.
| Возможность | Что даёт агенту | Где пригодилось здесь |
|---|---|---|
| Структура метаданных, справка по объектам | состав объектов, реквизиты, табличные части, типы, назначение объекта — без угадывания имён | как устроены «Выпуск продукции», «Реализация услуг по переработке», возвраты комиссионера |
| Запросы | произвольный запрос на языке запросов 1С, профиль наполненности таблиц | остатки на ряд дат, сравнение с документами бухгалтера, сверка до сотых |
| Отчёты | варианты отчётов конфигурации на СКД, данные регламентированных отчётов | сверка итогов теми же отчётами, что смотрит бухгалтер |
| Журнал регистрации | события с отбором по времени, пользователю, событию, объекту | когда шёл обмен, почему не прошла первая попытка, прерванный анализ, ручная правка бухгалтера |
| Изменение данных | запись объектов, групповая правка, групповое проведение и отмена проведения | пакетное исправление и проведение выпусков |
| Выполнение кода | произвольный код 1С в базе — «руки» агента для нестандартных операций | удаление строк давальческой ткани с выгрузкой в файл, создание передач в производство по партиям |
Безопасность настраивается в самой базе:
- •из коробки агент работает только на чтение; права на изменение выдаёт администратор адресно, по каждому пользователю базы: запись, групповые операции, проведение, выполнение кода — каждое отдельно, выполнение кода можно не выдавать вовсе;
- •код агента всегда выполняется в безопасном режиме (без доступа к файлам сервера, внешним программам и интернету), снять его можно только отдельным правом;
- •изменение данных сначала выполняется пробным прогоном в откатываемой транзакции — агент и человек видят результат, запись идёт после подтверждения;
- •персональные данные обезличиваются по умолчанию: вместо ФИО, ИНН, телефонов и адресов модель получает устойчивые метки и может сравнивать и группировать по ним, не видя реальных значений; что считать персональными данными, настраивается правилами в базе, в том числе по отдельным пользователям;
- •каждое действие агента пишется в журнал регистрации — после сессии видно, что именно он читал и менял.
Читающая часть инструмента (структура и запросы) описана в отдельной публикации.
Чтение кода конфигурации — второй инструмент собственной разработки, плагин к 1С:EDT. В этой истории он понадобился один раз: найти правило, по которому закрытие месяца в ERP считает этап невыполненным. Без него можно обойтись — то же место находится в конфигураторе поиском по тексту сообщения.
Сам агент — ИИ-агент общего назначения. Задания давались обычной речью, без языка запросов и имён объектов: агент сам выбирал, что прочитать, какой запрос построить и какой документ проверить.
Месяц в ERP: порядок диагностики
- 1.Состояние закрытия. Агент прочитал состояния операций закрытия месяца и журнал их запусков за полгода. «Не выполнено» стояло на цепочке «исправление отрицательных остатков -> расчёт себестоимости -> движения по НДС».
- 2.Правило в коде. По коду конфигурации нашёл условие: отрицательный остаток товаров организаций в закрытом периоде — предупреждение, в открытом — ошибка, которая останавливает закрытие. Отсюда ответ, почему май и июнь закрывались с теми же минусами: они уже были под датой запрета.
- 3.Минусы до документа. Посчитал отрицательные остатки запросом в тех же разрезах, что и программа (склад, вид запасов, номер ГТД), и по движениям проследил каждый до документа, который его создал.
- 4.Исправление и повторное закрытие. После исправлений закрытие запускалось снова; каждая следующая ошибка разбиралась тем же порядком.
| Причина | Как нашлась | Решение |
|---|---|---|
| Импортные материалы поступили с номером ГТД, а списаны без номера (документы прошлых лет) | минус «без ГТД» и такой же плюс «с ГТД» у одной позиции | штатный помощник исправления остатков в открытом месяце — одним документом, без открытия прошлых лет |
| Отчёт давальцу датирован следующим месяцем, передача давальцу — текущим | минус по продукции и плюс по полуфабрикату на одно количество | дата отчёта — в месяц передачи, как в предыдущих месяцах |
| Продажи через комиссионера списывали карточку товара, которая у комиссионера уже кончилась (один товар заведён тремя карточками) | остаток у комиссионера ушёл в минус | заменить карточку в продажах по отчёту комиссионера — решает бухгалтер |
| В возврате от комиссионера не заполнен «Способ определения себестоимости» | появилась после устранения минусов: «движения по выручке не соответствуют движениям по себестоимости»; сравнение с прежними возвратами | заполнить поле, как во всех прежних возвратах |
Исправление исходных документов прошлых лет потребовало бы сдвинуть дату запрета и переоткрыть около двадцати месяцев со сданной отчётностью. Помощник исправления остатков в открытом периоде решает ту же задачу одной записью.
Обмен с бухгалтерией: порядок диагностики
- 1.Журнал регистрации. По событиям обмена — время загрузки, причина отказа первой попытки (почтовый сервер), список предупреждений «Не удалось провести документ, полученный из другой информационной базы». Отказы сведены по тексту ошибки: почти все — «Выпуск продукции», «не заполнена сумма плановая».
- 2.«Зависание». События хода сопоставления объектов шли регулярно — процесс работал. Прерывание анализа пользователем видно в журнале; после прерывания анализ начинается заново.
- 3.Образец бухгалтера. Агент не стал заполнять пустое поле «чем-нибудь», а запросами сравнил пришедшие документы с проведёнными документами бухгалтера за полгода — по реквизитам шапки и строкам табличных частей:
| Реквизит | Как ведёт бухгалтер | Как приходит из ERP |
|---|---|---|
| Подразделение затрат | одно для обоих цехов | цех раскроя / цех пошива |
| Плановая цена продукции | 1 руб. (фактическую себестоимость даёт закрытие месяца) | пусто |
| Счёт выпуска изделий из сырья заказчика | 20.02 | 43 |
| Ткань заказчика в материалах выпуска | отсутствует | есть, на балансовом счёте |
Затем — пробное проведение. Первый же исправленный документ в откатываемой транзакции не провёлся: ткань заказчика стоит в материалах на балансовом счёте с нулевым остатком. Сырьё заказчика учитывается за балансом, на счёте 003: приход -> передача в производство (003.01 -> 003.02) -> списание реализацией услуг по переработке. В материалы выпуска оно попасть не может. Методику подтвердил бухгалтер.
Как исправляли:
- 1.Строки ткани заказчика, которые предстояло убрать из выпусков, до правки выгружены в файл: документ, ткань, количество. Это и аудит, и исходные данные для передач в производство.
- 2.Выпуски исправлены пакетами: записаны без проведения, затем проведены групповым проведением по дате — чтобы крой проводился раньше пошива.
- 3.Передачи ткани в производство созданы по образцу бухгалтера. Контроль по каждой ткани: «поступило − возвращено заказчику = ушло в раскрой», сходится до сотых. Одним документом передавать нельзя: возвраты остатков заказчику уже проведены по датам, и общая передача увела бы остаток в минус. Передачи разбиты по партиям.
- 4.В реализациях услуг по переработке заполнен счёт учёта материалов заказчика — они провелись вместе со счетами-фактурами.
- 5.Реализация, где ткани списывается больше, чем ушло в раскрой, записана без проведения и оставлена бухгалтеру: данных для исправления нет.
Когда базы расходятся: два расследования
Материала не хватает, хотя в ERP тот же документ проведён. Порядок:
- •сравнить документ бухгалтерии с исходным документом ERP — совпадают;
- •построить остатки материала в обеих базах на ряд дат и найти точку, где они разошлись, — конец прошлого года;
- •найти единственный документ, где количества различаются: в ERP часть утеплителя списана как материал другой плотности;
- •по истории версий обеих баз установить причину: документ исправили в ERP весной, а в бухгалтерию исправление не пришло — документ лежит в закрытом периоде, и обмен его уже не обновляет;
- •решение без открытия прошлого года: пересортица в открытом периоде датой до первого документа, которому не хватало; ручная правка бухгалтера возвращена к значению ERP; контроль — остаток совпадает с ERP до сотых.
Остатки на ряд дат в бухгалтерии строятся простым запросом к регистру бухгалтерии; агент выполняет его на каждую дату и сравнивает с такой же выборкой из ERP:
ВЫБРАТЬ
&Дата КАК НаДату,
Остатки.Субконто1 КАК Материал,
Остатки.КоличествоОстаток КАК Количество
ИЗ
РегистрБухгалтерии.Хозрасчетный.Остатки(
&Дата,
Счет В ИЕРАРХИИ (&СчетМатериалов),
ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Номенклатура),
Субконто1 = &Материал) КАК Остатки
Продажа не проводится: товара нет на складе. Агент проследил происхождение каждой строки в ERP. Четыре изделия собраны комплектацией в конце предыдущего месяца — в бухгалтерию комплектации пришли, но не проведены: месяц закрыт. Пятое выпущено в кладовую цеха и пришло в бухгалтерию со счётом материалов вместо готовой продукции, а перемещение из кладовой на склад обменом не передаётся. В задании программиста была неверная посылка — дата загрузки обменом принята за дату документа; агент её поправил и предложил перемещение со счёта материалов на готовую продукцию в открытом месяце. Пробное проведение всего плана показало, что новые документы получают время 13:00 и окажутся позже продажи — время продажи сдвинуто в пределах дня. После подтверждения проведено, проводки проверены отдельным запросом.
Правила работы на рабочих базах
- •Пробный прогон всегда. Любое изменение сначала выполняется в транзакции, которая откатывается; человек видит результат и подтверждает.
- •Дата запрета неприкосновенна. Закрытые периоды не открываются; всё, что сломано в них, исправляется документами в открытом периоде.
- •Ничего не выдумывать. Нет данных — вопрос бухгалтеру, а не правдоподобная цифра.
- •Сначала увидеть, потом чинить. Каждая причина подтверждена данными: запросом, журналом регистрации, историей версий, кодом конфигурации.
- •Права — на время задачи. Запись и проведение выдавались под конкретную работу; когда среда отклонила изменение данных, агент остановился и запросил явное разрешение.
Что остаётся после сессии
- •реестр всех исправленных документов: номер, дата, было -> стало, статус;
- •журнал изменений: каждый созданный и изменённый документ с причиной;
- •файл с удалёнными строками — для аудита и возможного отката;
- •общий справочник по обмену: какие ошибки бывают, как каждую распознать и исправить, какие решения уже приняты. Следующая сессия начинается с него, а не с нуля.
Ограничения, которые пришлось учитывать
- •Выполнение кода ограничено по времени — массовые правки шли порциями с отбором «ещё не исправленных», чтобы повторный запуск продолжал с места.
- •После первой ошибки проведения транзакция становится непригодной: пробное проведение возможно только «до первого отказа», массовое — групповым проведением.
- •Реальный прогон заметно медленнее пробного — это учитывалось в размере порций.
Как применить у себя
- 1.Начать с подключения агента только на чтение и вопросов вида «почему не проводится документ», «почему не закрывается месяц». Диагностика ничего не меняет и уже экономит основное время.
- 2.Ставить одно и то же расширение во все базы, которые участвуют в задаче: тогда расхождения между ними агент ищет сам, сравнивая данные напрямую.
- 3.Давать задание как задачу и образец: «сделай по аналогии с документами бухгалтера за прошлые периоды». Запреты называть явно: «дату запрета не менять», «прошлый год не трогать».
- 4.Права на запись, проведение и выполнение кода выдавать конкретному пользователю на время задачи.
- 5.Требовать от агента реестр, журнал изменений и выгрузку удаляемых данных до правки.
- 6.Решения о методике учёта оставлять бухгалтеру: агент находит варианты и рекомендует, выбирает человек.
Вступайте в нашу телеграмм-группу Инфостарт
Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.