Нажмите на Enter чтобы посмотреть все результаты
Закрыть поиск

Как я перестал вручную заполнять таблицу ДДС

Авторский гайд по автоматизации
13.11.2025
20 минут

В год я заносил в таблицу ДДС примерно 1500 операций, в среднем на каждую строку тратил одну минуту. Получается, это 3 рабочих дня, которые теперь я могу посвятить бизнесу, а не табличке.

В статье даю пошаговую инструкцию, как автоматизировать ведение управленческого отчёта ДДС — без кода, без хостинга и своего сервера. Если вы не разработчик — вы справитесь, обещаю.

Содержание

Зачем вести отчёт о движении денежных средств (ДДС)

Отчёт о движении денежных средств — самый базовый отчёт, который должен быть у любого бизнеса. Вы можете двигаться интуитивно и не вести ОПиУ и Баланс, но ДДС должен быть. Самое главное — с ним вы видите, сколько денег в каждом кошельке и на всех вместе прямо сейчас.

Зачем вести отчёт о движении денежных средств
Я удаляю «5 Кубышку» из расчёта «Итого», чтобы не рассчитывать на эти деньги. Они на всякий случай

ДДС помогает избежать кассовых разрывов, вовремя платить зарплату и налоги. Также по нему вы сможете собрать ОПиУ с ретроспективой на несколько месяцев назад, а без него — нет. Да и просто это удобно: видеть и записывать все финансовые операции, которые проходят через ваш бизнес, а потом отфильтровать и построить любой график или проверить финансовую гипотезу.

Почитайте заодно нашу статью про составление годового бюджета. В ней подробнее рассказали, зачем нужно вести такие отчеты и как их составлять без бухгалтера.

Читать статью

Как вести ДДС

Я пользуюсь шаблоном от «Нескучных финансов», который скачал у них на сайте. Для нашей задачи подойдет любой, но здесь буду показывать на его примере.

Шаг 1. Во вкладке «ДДС: настройки» введите все ваши кошельки и укажите месяц, когда вы начали вести отчёт.

Настройка отчёта ДДС в таблице
Столько денег у меня осталось с декабря 2024 года. В январе 2025 года я перенёс остатки со старого отчёта и поставил месяц начала — 1

Шаг 2. Во вкладке «ДДС: статьи» можно ничего не делать, всё самое важное уже есть. Но если вы хотите считать что-то специфическое, то добавьте статьи, которые вам нужны. Например, я добавил «Оплату административных подрядчиков», чтобы увидеть, когда стоимость бухгалтерии на аутсорсе сравняется со стоимостью найма бухгалтера в штат. По производственным подрядчикам сделал то же самое.

Таблица статей ДДС: пример заполнения
Также в отдельную статью расхода выделил тот самый 1%, который платится при доходе свыше 300 тысяч в год

Шаг 3. Для каждого кошелька есть своя вкладка. Настройте столько вкладок, сколько у вас заведено кошельков на шаге 1. Каждую — под свой кошелёк.

Автоматическая подгрузка кошельков в электронную таблицу по автоматизации ДДС
Названия кошельков автоматически прокинутся в список из первого шага

Шаг 4. На вкладке «ДДС: месяц» начинайте вносить все операции: пришла оплата — занесли в ДДС, купили по бизнес-карте мороженку — тоже. Если пропустить хотя бы 1 копейку, отчёт будет недостоверным, цифры не сойдутся. Заполнять нужно все поля, кроме белых — туда значения подставляются сами по ходу заполнения жёлтых полей.

Занесение всех операций в таблицу по движению денежных средств
Расход нужно писать со знаком «минус», чтобы таблица верно считала остаток

В целом — это самая утомительная часть ведения ДДС, которая всем не нравится. Именно её мы и автоматизируем.

Как автоматизировать ведение ДДС

После каждой операции по расчётному счёту Т-банк может отправлять вам данные об этой операции. Это те же самые данные, что вы видите в личном кабинете, но более полные.

Автозаполнение таблицы excel при помощи отправленной Т-банком информации о ДДС
Слева — то, что присылает банк. Справа — то, что вы видите в личном кабинете

Наша с вами задача — принять эти данные и сделать автозаполнение, т. е. разложить по ячейкам в таблице.

Как принимать данные от банка: создаём вебхук

Для этого и всего остального нам понадобится сервис Make.com — это конструктор интеграций. Как конструктор чат-ботов для Телеграма, но только для любых интеграций.

Make.com платный, стоит $ 10 в месяц, его можно заменить бесплатным n8n, но это не так удобно, потому что n8n нужно разворачивать на своём хостинге. А платить за него — выйдет столько же, сколько и за Make. К тому же Make проще.

Карты РФ сервис не принимает, но спустя 3 года санкций все уже умеют оплачивать зарубежные сервисы, тут останавливаться не буду.

Взаимодействие с конструктором интеграций Make.com
После регистрации в Make перейдите на вкладку Scenarios и нажмите +Create scenario

Вся работа в Make — это цепочка действий, которые выполняются друг за другом. Первое действие — принять данные от банка. Для этого нам нужно ухо, которое будет 24/7 слушать Т-банк. На языке программистов это ухо называется «вебхук».

Принятие данных от банка в конструкторе интеграций Make.com через Webhooks
Чтобы найти нужный шарик, нажмите большой плюс «+» и наберите в поиске webhook

Сейчас вы создали не сам вебхук, а только действие, внутри которого можно использовать разные вебхуки. Если вы впервые в Make, то вебхуков у вас нет, нужно их создать. Нажмите Add, задайте имя и Save.

Как автоматизировать заполнение таблицы: создание Webhooks через Make.com
Это уточнение важно только сейчас, дальше мы будем считать вебхуком любой красный шарик

Ваш вебхук готов принимать данные от банка, осталось только сообщить банку, куда нужно слать эти данные.

Как принимать данные от банка: пишем в поддержку Т-банка

Нам нужно сообщить банку, по какому адресу находится наше ухо. Именно туда и будет банк слать данные по операциям. Адрес — это ссылка, которую нам выдал Make, когда мы включили вебхук.

Как автоматически принимать данные от Т-банка через Webhooks
Адрес вебхука — это такой же адрес, как у здания в городе, только в интернете у уха. Если офис агентства «Климент Контент» располагается по адресу: Омск, Чапаева, 111, офис 401, то вебхук располагается по адресу: hook.us2.make.com/vopk… Он и нужен банку, чтобы отправлять «посылку» в нужное место

Обычно при таких интеграциях можно зайти в личный кабинет сервиса, указать адрес и поставить галочку «Отправлять уведомления». В Т-банке такого функционала нет, все вопросы решает поддержка. Возможно, это сделано для безопасности.

Чтобы попросить банк слать на наш вебхук уведомления, нужно написать на почту openapi@tbank.ru с любой почты, которая привязана к вашей компании. Они уже сами настроят отправку запросов по вашему адресу.

В теме письма напишите:

Создание и отправка заявки Т-банку на согласование отправки уведомлений о денежных операциях компании
Так выглядело моё письмо: без «здравствуйте» и «до свидания». Мне показалось, что разработчикам не до вежливых соплей и нужно чётко следовать инструкции из документации 🙂

Подключение занимает до двух дней, после чего с вами свяжется инженер и пришлёт ответ:

Получение ответа от службы поддержки Т-банка
Видимо, всё же надо было поздороваться…

Как принимать данные от банка: проверка перед настройкой

Всё готово, и теперь нужно проверить, приходят ли данные из Т-банка на ваш вебхук. Для этого перейдите в Make и нажмите кнопку Run once, чтобы запустить сценарий.

Проверка сценария получения данных из Т-банка через Webhooks
Пока сценарий работает в тестовом варианте, вебхук будет слушать данные около 2 минут, и если не успеете совершить операцию, нужно будет нажать Run once ещё раз

После того как вебхук включился, зайдите в банк и отправьте себе со счёта 10 рублей. Если всё прошло успешно, в Make будет следующая картина:

Получение данных о движении денежных средств от Т-банка
Мы получили данные от банка. Вся информация об ИП есть в открытом доступе, поэтому при размещении этого скрина я решил не переживать о персональных данных и ничего не замазывать

Теперь эти данные нужно просто отправить в наш отчёт ДДС. Но если мы их не подготовим, таблицы не поймут форматирование и сработают неправильно:

Пример ошибочного заполнения excel-таблицы о ДДС
ДДС «Нескучных финансов» ждёт конкретный формат даты и суммы, и если мы просто перешлём банковские цифры, калькуляции не будет

Как подготовить данные из вебхука для передачи в гугл-таблицу

Подготовка данных — это цепочка действий, которые Make будет выполнять одно за другим. Вся цепочка выглядит так:

Как подготовить данные о ДДС для последующего автозаполнения ячеек в google-таблицах

О чём вообще эта цепочка. Нам нужно сказать Make: «Дружище, в ближайшей свободной строке найди ячейки и положи в них данные. Например, в ячейку E напиши число 10 000».

Но вот проблема: сейчас это 10 000, а завтра это −6750. Поэтому мы будем просить Make заносить в таблицу не конкретные числа, а переменные. А переменная будет содержать актуальное число из вебхука. Это как в почте: для вас это выглядит «Привет, Илья Ерёмин!», а для разработчика «Привет, {{name}}!». Где {{name}}=»Илья Ерёмин" из базы данных.

Все эти фиолетовые шарики — это действия, которые придают бесформенным переменным конкретное число. И потом эти конкретные числа лягут в таблицу.

Шарик 2. Отфильтровать повторные операции. У Т-Банка есть особенность: операция одна, а информацию о ней присылают 3−7 раз. Вебхук ловит всё, и если их все занести в таблицу, получится много дублей, поэтому нам нужно отфильтровать повторы. Для этого у каждой операции есть свой уникальный код. Разработчики в Т-банке назвали его OperationID. В другом банке это может называться по-другому, например, TransactionID.

OperationID выглядит так: 6ebb23a4−5a33−00d0−952f-50d69a9b74785

Чтобы проверить номер ID на уникальность, каждый новый нужно сравнивать с предыдущими OperationID, и если он новый, то записывать его и идти дальше по цепочке. А если он уже был, то не пропускать.

Создайте новый шарик, он называется Check the existence a record. Этот шарик проверяет, есть ли в нашем списке OperationID. Так как у вас ещё не создана никакая база данных, создайте новую так же, как вы создавали Webhook: прямо из шарика нажмите Add и придумайте любое название. После этого вам нужно заполнить поле Key. И как только вы в него нажмёте, Make предложит туда подставить любую переменную из тех, что банк прислал на Webhook.

Получение данных от Т-банка на Webhooks и фильтрация операций

Данные, которые присылает Т-банк на вебхук, состоят из 2 основных частей. 1 — это заголовок, например OperationID. 2 — это содержание (ключ), например 6ebb23a4−5a33−00d0−952f-50d69a9b74785. Всё как в обычном тексте: есть заголовок статьи, а есть текст, который вы сейчас читаете — и тут то же самое. И в любых интеграциях то же самое: заголовок → содержание (ключ). Make делает все заголовки переменными, поэтому просто нажмите на нужный заголовок, и он сам подставится в поле Key

Что мы в итоге сделали: мы создали шарик с названием «Проверь, есть ли в базе данных операция по счёту». Когда шарик спросил: «А какая именно операция?», — мы сказали: «Та самая, которая скрывается под заголовком operationID».

Дальше всё будет настраиваться по такому же принципу: мы указываем, какой заголовок из вебхука брать и что с ним делать. Вот и вся автоматизация.

Шарик 3. Записать операцию в базу данных. Каждую операцию нужно записывать, чтобы было с чем сравнивать и фильтровать повторы. Добавьте шарик (add/replace a record) и в поле Key снова укажите operationID.

Теперь прогоните данные по новым шарикам: нажмите Run once и совершите платёж со счёта на 10 рублей. Вебхук получит новые данные, проверит, есть ли operationID в базе (спойлер: нет), и запишет его в базу.

Фильтр между шариками 2 и 3. Повторные операции нельзя пропускать дальше, иначе они запишутся в базу данных и пройдут по цепочке. Поэтому между голубыми шариками установите фильтр.

Установка фильтра для повторных операций
Нажмите правой кнопкой мыши на связь между шариками и выберите Set up a filter. Затем придумайте любое имя, например New Only, и в поле Condition вставьте переменную Exists, затем выберите Equal to и напишите false. В переводе будет означать «Пропускать, только если существование равно неправде». То есть «Пропускать, только если не существует». Если у вас нет голубого прямоугольника Exists, значит вы не сделали Run once из прошлого шага.

Итак, мы отфильтровали все двойные операции — одинаковые просто не пролезут дальше. Пришло время настраивать переменные.

Шарик 4. Отредактировать дату платежа. Нам нужно будет заносить дату транзакции в ячейку таблицы с помощью переменной, поэтому нужно указать, что должно содержаться в этой переменной.

Создайте шарик Set Variable, назовите это как угодно и в поле Variable value вставьте autorizationDate из вебхука. Make сам предложит список, когда вы нажмёте в поле.

Редактирование даты платежа

Но вот незадача. Если оставить в таком виде, то в итоге в таблицу мы занесём значение 2025−10−25T04:23:03Z, а таблицы поймут только 25.10.2025. Поэтому нам нужно отформатировать дату под наши требования. Вставьте в поле Variable value не просто переменную, а вот эту формулу:

{{formatDate (parseDate (1.authorizationDate; «YYYY-MM-DDTHH:mm:ssZ»; «UTC»); «DD.MM.YYYY»; «UTC»)}}

Добавление формулы в Variable value в Make.com
Если переменная authorizationDate не горит красным, сотрите из формулы 1. authorizationDate и выберите из списка, который предложил Make

Шарик 5. Приход оставить как есть, а расходу добавить минус. Чтобы таблица корректно считала расход, нам нужно подставлять к числу минус, а банк передаёт только положительные числа. Но при этом он указывает тип операции: Debit или Credit. По этому признаку мы и поймём, это приход денег или расход. И по результатам либо оставим как есть, либо добавим к числу минус. Вставьте в поле Variable value вот эту формулу:

{{if (1.typeOfOperation = «Debit»; -1 * 1. operationAmount; 1. operationAmount)}}

Должно получиться вот так:

Для будущей корректной автоматизации excel приход оставить как есть, а расходу добавить минус
Если переменные не горят красным, удалите их из формулы и выберете из списка, который предлагает Make. Названия у них будут такие же: typeOfOperation, operationAmount

Шарик 6. Задаём название кошелька. Эта переменная будет отправлять в таблицу не переменную, а всегда один и тот же текст с названием кошелька — таким же, как у вас в ДДС. У меня оно вот такое:

Добавление названия кошелька в Make.com
Чтобы избежать ошибок, не вводите вручную, а скопируйте из своего отчёта ДДС. Название должно быть до символа в точности, как в вашем шаблоне в гугл-таблицах, иначе таблица его не узнает. Имя переменной, как и всегда, любое

Шарик 7. Как в предыдущем шаге, только вместо названия кошелька — название направления бизнеса как у вас в отчёте.

Шарик 8. Задаём статью. Банк не может знать, по каким статьям у вас расход — статьи расхода вам нужно будет всегда указывать вручную в самой таблице. Но при этом мы точно знаем, что 99% всех приходов — это статья «Оплата». Поэтому эту переменную задаём такой формулой:

{{if (1.typeOfOperation = «Credit»; «Оплата»; ««)}}

Что в переводе означает «Если тип операции „Credit“, то задать значение „Оплата“, а если нет, то оставить пустым». Так любой приход будет заполнять ячейку «Статья», а любая трата по карте оставит ячейку пустой — её вы заполните сами. Если статья «Оплата» у вас называется по-другому, пишите так, как у вас.

Шарик 9. Меняем точку на запятую. Иногда банк присылает сумму операции с точкой: 123.65. А таблицы понимают только запятые: 123,65. Почему только иногда, я так и не понял — и на всякий случай на всех операциях выполняю эту формулу:

{{if (contains (toString (5.signedAmount); «.»); replace (toString (5.signedAmount); «.»; «,»); toString (5.signedAmount))}}

Что в переводе означает «Замени точку на запятую». Но тут есть особенность: если мы будем избавлять от точки число, которое присылает банк, мы снова потеряем момент с минусом и можем занести в таблицу расход как приход. Поэтому избавлять от точки нужно число, которое получилось в переменной в шарике 5, а не то, что присылает банк на вебхук. Поэтому формула должна содержать название переменной шарика 5. У меня шарик 5 называется signedAmount, а вы подставьте своё название.

Замена точек на запятые в Make.com для корректного учета данных в таблицах
Чтобы увидеть название переменной из шарика 5, нужно нажать на шарик 5. Если переменные в шарике 9 у вас не светятся фиолетовым, то Make ещё их не увидел, нужно сделать Run once и вывести со счёта 10 рублей. Тогда он выполнит действие из шарика 5 и дальше сможет подставлять этот заголовок в любые поля

Перед переменными стоят какие-то цифры, например 5. signedAmount. Они просто соответствуют номеру шарика. Если у вас получился другой порядок, используйте другую цифру.

Шарик 10. Задаём задержку. У гугл-таблиц есть ограничения: 1 операция в секунду. Make же работает значительно быстрее и может в секунду выполнять сотни операций. Поэтому если 2 операции произойдут почти одновременно, таблицы захлебнутся, случится ошибка и сценарий остановится до тех пор, пока вы не перезапустите его вручную.

Такое случается, если у вас в Т-банке настроена «Бизнес-копилка»:

Операция 1 — пришла оплата от клиента

Операция 2 — списать с основного счёта

Операция 3 — добавить в бизнес-копилку

Таблицы могут записать эти 3 операции только за 3 секунды, а Make будет им напихивать кратно быстрее. Поэтому нужна задержка, чтобы все 3 операции без ошибок записались в ДДС.

Создайте шарик Sleep и задайте рандомный таймер от 1 до 10 секунд с помощью формулы:

{{floor (4 + random * 7)}}

Так перед финальным 11-м шариком возникнет очередь, и операции занесутся одна за одной без ошибок.

Задаём задержку операций для google-таблицы
Только не перепутайте. Шарик Sleep выглядит как шарики Set Variable, которые были до этого, но действие у них разное

Шарик 11. Финальный. Заносим данные в отчёт ДДС. Прежде чем приступить к шагу с автозаполнением, прогоните Run once (надеюсь, после всех тестов у вас ещё остались деньги на счету). Это нужно, чтобы Make исполнил все действия с переменными и разбил их на заголовки и ключи — так они появятся в подсказках, и тогда их можно будет подставлять в поля.

Теперь нужно подключить гугл-таблицу к Make и настроить область поиска. Для этого создайте шарик Add a Row — это действие, которое работает так: Make идёт в таблицу, находит первую незаполненную строку и вносит туда данные. Ровно то, что нам и нужно.

Вот как настроить действие:

Занесение данных в отчёт ДДС для последующего автозаполнения таблицы
ID таблицы, на которую вы настраиваете автозаполнение, находится в ссылке на таблицу и выглядит примерно так: 1UnjH8psvcgs4QLXTOoab0tm5pT_wqiPdAFLwf6jdYbg. Его можно найти между /d/ и /edit

Остаётся то, зачем мы все здесь собрались: указать Make, какие данные и в какую ячейку положить для автозаполнения. Для этого нужно указать в ячейках названия переменных, содержание которых Make занесёт в таблицу.

Добавление переменных в ячейке google-таблицы для автозаполнения
Это расходная операция, поэтому Make оставил пустой ячейку в столбце I

Если всё готово, сохраняйте и делайте Run once. Надеюсь, у вас всё получилось 🍾

Фильтр залётных запросов. Несколько раз банк прислал мне на вебхук какую-то ерунду, которая не относится к транзакциям. Это сломало сценарий, и его приходилось перезапускать вручную, поэтому на входе я поставил фильтр: если вебхук принимает данные, в которых нет поля operationID, то дальше не пропускать. Советую сделать то же самое.

Фильтр залётных запросов в Make.com
Чтобы поставить фильтр, нажмите правой кнопкой мыши на связь между шариками, назовите, как вам будет понятно, поставьте переменную OperationID из вебхука в поле Condition и Basic operators: Exist. В переводе означает: «Когда пропускать операцию?» — когда OperationID существует. Следовательно, если в данных этого поля не будет, то и дальше операция не пройдёт

И вот вы забываете про ДДС, заходите через несколько дней, а там такое:

Проверка автоматически заполненных ячеек в таблице"
Все операции по счёту внесены, но белые поля не заполнены. Всё дело в том, что шарик add a row не заполняет отдельные ячейки, а перезаписывает всю строку. И так как белые столбцы мы оставили пустыми, Make удалил из них формулы

Осталось протянуть ячейки с формулами донизу и проставить статьи расходов. И ДДС пересчитается:

Как выполняется автозаполнение в excel

Сейчас я пытаюсь связать ДДС и ОПиУ, чтобы настроить автозаполнение для второго важнейшего отчёта бизнеса. Не знаю, когда закончу и напишу статью об этом, анонс будет в моём ТГ-канале.

Можно ли сделать такое же автозаполнение с другими банками?

Можно. Структура данных будет немного отличаться, но принцип тот же самый: понять, какие поля за что отвечают, отформатировать и разложить по ячейкам.

Остальные не узнавал. Если знаете, дополните в комментариях.

Ещё советы

What’s your Reaction?
good
good
2
good
good
2
good
good
0
good
good
2
bad
bad
0
0
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
Что внутри: