# Выписка по счету шаблон в 2026: сборка счёта из таблицы от заказа до отправки

> Я собрал таблицу для выписки по счету шаблон: она считает оптовую цену по товарным группам, добавляет доставку и делает готовый счёт из строки заказа. Показываю схему и обращения к помощнику для повторения.

Источник: https://vibeceh.ru/cases/vystavlenie-schetov-iz-tablicy
Автор: Сергей Мазур · опубликовано 2026-08-10

Я собрал таблицу для выписки по счету шаблон: она превращает строку заказа в готовый счёт, отдельно проверяет порог оптовой цены для каждой товарной группы, добавляет доставку и сохраняет PDF. Если ты искал «выписка по счету шаблон», здесь как раз тот случай, когда данные из таблицы не остаются длинным прайсом, а доходят до документа и отправки.

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

А началось всё с обычной строки заказа.

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

Раньше я переносил позиции из заказа в счёт руками. Сначала сверял количество, потом вспоминал порог оптовой цены, после этого отдельно проверял доставку. В конце ещё раз сравнивал итог с таблицей. Работа вроде простая, но в ней слишком много мест для одной незаметной ошибки.

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

Теперь я собрал таблицу заказов с прайсом. Она видит количество по каждой группе, выбирает нужную цену, добавляет доставку отдельной строкой и из этой же строки готовит счёт. Я не стал программистом и не держу в голове устройство файлов. Мне достаточно проверить заказ и итог перед отправкой.

Хочешь собрать такую же таблицу для своего дела? На практикуме эту задачу проходят руками за два вечера:

## Что изменилось, когда счёт стал собираться из строки заказа?

Выписка по счету шаблон собирается по одному понятному маршруту из строки заказа. Я вношу заказ в Google Таблицы, а расчёт учитывает количество по каждой товарной группе, порог оптовой цены и доставку. После проверки из той же строки получается заполненный документ и PDF. Ручного переноса позиций между двумя окнами больше нет.

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

Если клиент прислал смешанный заказ, [таблица](/concepts/google-tablicy) не складывает все позиции в один общий порог. Она сначала смотрит каждую товарную группу отдельно. Это важнее самой формулы: именно здесь раньше приходилось останавливаться и проверять всё глазами.

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

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

У меня изменилось не только количество ручных действий. Исчезло ощущение, что перед каждым письмом надо заново вспоминать прайс. Я всё равно проверяю результат, но проверяю уже готовый счёт, а не пересчитываю его с нуля.

## Почему готовый сервис не помнит правило оптовой цены?

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

Готовый сервис удобен на старте. Там уже есть карточки клиентов, документы, отправка и другие функции. Но оптовый магазин живёт не только по общему сценарию. У одного постоянного покупателя свои условия, у одной товарной группы отдельный порог, у другой доставка считается иначе.

Когда правило меняется в собственной таблице, я описываю его помощнику словами и проверяю несколько тестовых строк. Не нужно объяснять разработчику весь бизнес и ждать, попадёт ли изменение в ближайшее обновление.

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

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

Содержание и объем обрабатываемых персональных данных должны соответствовать заявленным целям обработки».

Для тестов я бы не загружал реальные данные клиента. Сначала достаточно вымышленного названия, условного ИНН и тестового Telegram chat ID. Результат проверяется так же, а лишние риски не появляются.

## Из чего состоит счёт из строки заказа?

Схема состоит из строки [Google Таблиц](/concepts/google-tablicy), расчёта по товарным группам, шаблона Google Docs и папки Google Drive. Скрипт читает поля заказа, копирует шаблон, заменяет маркеры, получает PDF, сохраняет файл и отправляет его через Telegram Bot API. После этого в таблице отдельно фиксируются документ, ссылка, отправка и время обработки.

Сначала появляется строка заказа. В ней должны быть поля, которые реально нужны процессу:

```text
order_id | date | client | inn | product_group | item | quantity | price | delivery | total | chat_id | status | document_url | processed_at
```

Если в одном заказе несколько позиций, их можно хранить отдельными строками с общим `order_id`. Главное, чтобы расчёт видел товарную группу и количество внутри неё. Тогда порог оптовой цены не смешивается с соседней группой.

Дальше скрипт читает строку как набор значений. В Apps Script для этого используется `getValues()`: диапазон возвращается как двумерный массив, где первая ячейка имеет индекс `[0][0]`. Для тебя это выглядит проще: каждая колонка таблицы становится полем заказа.

Шаблон счёта лучше подготовить заранее в Google Docs. В нём остаются маркеры:

```text
СЧЁТ № {{ORDER_ID}}
Дата: {{INVOICE_DATE}}
Клиент: {{CLIENT}}
ИНН: {{INN}}

Товарная группа: {{PRODUCT_GROUP}}
Позиция: {{ITEM}}
Количество: {{QUANTITY}}
Цена: {{PRICE}}
Сумма: {{TOTAL}}
Доставка: {{DELIVERY}}
Итого: {{GRAND_TOTAL}}
```

После копирования документа скрипт заменяет маркеры значениями из строки через `replaceText()`. Затем документ можно получить в PDF через `getAs('application/pdf')` и сохранить в Google Drive.

Последний участок цепочки - отправка. Apps Script может сделать HTTP-запрос в Telegram Bot API. Для PDF используется метод `sendDocument`, а обязательным полем остаётся идентификатор чата. По документации Telegram, боты могут отправлять файлы размером до 50 МБ.

В таблицу я возвращаю не одно расплывчатое «готово», а несколько признаков: документ создан, ссылка записана, сообщение отправлено, время обработки. Так проще понять, где остановился процесс.

Пройти всю сборку от строки заказа до PDF с проверкой каждого этапа можно на практикуме:

## Что поставить и сколько это стоит?

Нужны Visual Studio Code и Claude Code, который работает внутри редактора. Установить инструменты можно один раз: скачать, запустить и войти в аккаунт. Для Claude Code нужен Claude Pro за $20 в месяц. Это около 1 574 ₽ по курсу ЦБ без комиссии посредника. Полная сборка счёта за 15 минут не обещается: 15 минут относятся к установке инструментов.

Visual Studio Code выглядит как редактор для программиста, но я сам код в нём не пишу. Он нужен как папка проекта и место, где помощник видит файлы. Слева лежит список документов, справа открывается содержимое.

Claude Code встраивается в редактор и принимает задачи обычными словами. Ты описываешь, что происходит в магазине, какие поля есть в таблице и какой счёт должен получиться. Помощник как [ИИ-агент](/concepts/agent) создаёт или меняет файлы, а потом объясняет результат.

Я поставил обе вещи один раз. Сегодня собираю счёт, через неделю могу попросить автоматизацию для соседней задачи. Инструменты остаются теми же, меняется только описание работы.

Подписка Claude Pro стоит $20 в месяц по официальной странице Anthropic. Пересчёт составит около 1 574 ₽ по курсу ЦБ РФ на день оплаты, без комиссии оплаты из России. Если оплачивать через посредника, фактическая сумма может быть выше. Claude Code входит в подписку отдельно покупать его не нужно.

Официальный пример Google по созданию PDF из таблицы указывает 15 минут настройки именно своего примера. Это не срок для всей схемы с товарными группами, доставкой, Telegram и обработкой ошибок.

Около 15 минут относятся к установке инструментов и к длительности настройки официального простого примера Google. Срок полной сборки счёта зависит от структуры таблицы, шаблона и числа проверок.

На бесплатную среду Google Apps Script тоже есть ограничения. Для личного аккаунта Google в документации указаны 250 созданных документов в день и 6 минут на один запуск. Квоты могут меняться, поэтому перед рабочим запуском проверь актуальные значения.

## Как выставить счет из таблицы шаг за шагом?

Сначала опиши помощнику структуру заказа, затем собери расчёт по товарным группам, добавь доставку, подготовь шаблон и проверь один PDF на вымышленных данных. После этого можно добавить сохранение ссылки, статусы и отправку через Telegram. Каждый шаг проверяй отдельно, иначе ошибка в цене потеряется внутри большой сборки.

![Кот смотрит на схему из трёх шагов сборки счёта из таблицы.](https://s3.regru.cloud/crossmark/statejnik/images/guides/vystavlenie-schetov-iz-tablicy/kadr-1.webp)

Создай папку проекта, открой её в Visual Studio Code и начни не с кода, а с описания своей рутины. Помощник должен сначала задать вопросы и сохранить план.

    Google Docs -> PDF. Строка заказа должна стать заполненным счётом, PDF должен сохраниться в Google Drive, а в таблице должны появиться ссылка и статусы обработки. Пока не пиши код. Разбери задачу простыми словами, перечисли необходимые поля, предложи порядок сборки и задай вопросы, если данных не хватает. План сохрани в файл plan.md." />

В ответ помощник выдаст список полей и порядок работ. Проверь, что он не объединил все товары в один общий порог и не придумал лишние функции.

Сначала сделай минимальную таблицу. Лишние колонки потом усложняют проверку и увеличивают объём данных.

   

Правильный результат легко проверить глазами: у строки есть заказ, клиент, группа, позиция, количество, цена, доставка и статус. Тестовые данные не должны выглядеть как настоящие клиентские сведения.

Здесь нельзя писать помощнику «посчитай скидку». Назови порог для каждой товарной группы и способ расчёта.

   

Помощник должен показать промежуточный результат: группу, количество, применённый порог, выбранную цену и сумму. Если виден только общий итог, попроси раскрыть расчёт.

Доставка не должна случайно попасть в товарную группу или изменить право на оптовую цену.

   

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

Оформление лучше сделать заранее, а помощнику поручить связать маркеры с полями заказа.

   

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

После расчёта и шаблона добавь копирование документа, экспорт и сохранение в Google Drive.

   

Помощник выдаст изменённые файлы и объяснит запуск. Проверь один PDF: клиент, дата, позиции, оптовые цены, доставка и итог должны совпасть с тестовой строкой.

Отправка должна быть последним этапом, а статус должен показывать не намерение, а факт.

   

После первого результата проверь тестовую отправку на своём чате. Так собирают программы без программиста, и называется это [вайб-кодинг](/concepts/vajb-koding). Успешный тест означает, что файл создался, ссылка записалась, сообщение пришло, а статус изменился только после отправки.

Связка Google Sheets -> Google Docs -> PDF выглядит простой, но в ней несколько независимых этапов. Я не стал просить помощника собрать всё одним огромным запросом. Если идти по шагам, легче понять, где ошибка и какую часть не нужно трогать.

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

## Что появится в папке после сборки?

После сборки в папке и связанных сервисах появятся таблица заказов, шаблон счёта, копия документа, PDF в Google Drive и ссылка обратно в строку. В таблице останутся статус и время обработки. Я проверяю не только внешний вид PDF, но и то, что расчёт, ссылка и отправка действительно относятся к одному заказу.

![Собака поднимает лапу рядом с чек-листом проверки готового счёта.](https://s3.regru.cloud/crossmark/statejnik/images/guides/vystavlenie-schetov-iz-tablicy/kadr-3.webp)

Обычно структура выглядит так:

```text
optovyj-magazin/
  plan.md
  orders-template.csv
  test-orders.csv
  invoice-template/
    markers.txt
  checks/
    test-cases.md
  logs/
    errors.txt
```

Основная таблица живёт в Google Sheets. В ней есть строки заказов, прайс и настройки порогов. Шаблон счёта хранится отдельно в Google Docs. Готовые документы и PDF складываются в выбранную папку Google Drive.

В строке заказа после обработки должны появиться:

```text
status: Sent
document_url: ссылка на PDF
document_id: идентификатор документа
processed_at: дата и время
message_id: идентификатор отправки
```

Эти поля не надо воспринимать как лишнюю бюрократию. Если счёт создан, но не отправлен, это одна ситуация. Если отправлен, но ссылка не записалась, другая. Один общий статус «готово» обеих проблем не покажет.

Проверь шесть вещей:

1. Количество по каждой товарной группе.
2. Применённый порог оптовой цены.
3. Доставку отдельной строкой.
4. Клиента, дату и номер заказа в PDF.
5. Ссылку, которая открывает нужный файл.
6. Статус, соответствующий реальному этапу.

В код без необходимости я не лезу. Сначала смотрю таблицу, PDF, ссылку и журнал ошибки. Если помощник просит изменить файл, он должен сначала объяснить, что меняет и зачем.

## Что делать, если счёт ушёл дважды или не ушёл?

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

![Кот закрывает лапами морду рядом со схемой повторной отправки PDF.](https://s3.regru.cloud/crossmark/statejnik/images/guides/vystavlenie-schetov-iz-tablicy/kadr-2.webp)

**Счёт ушёл дважды.** Скрипт мог создать PDF и отправить его, но упасть до записи статуса `Отправлен`. При следующем запуске строка снова выглядит новой. Для защиты нужен уникальный ключ операции, например `order_id + invoice_period`, и проверка уже созданного документа до повторной отправки.

**Авторизация истекла.** Автоматический триггер может перестать работать после повторной авторизации. Файл и кнопка при этом останутся на месте, поэтому поломку легко не заметить. В таблице держи `last_run_at`, `last_success_at` и `last_error`.

**Дата стала другой.** Таблица может хранить календарную дату, а скрипт обработать её как момент времени. Из-за часового пояса в счёте появляется предыдущий или следующий день. Для даты счёта задай единый формат и отдельно проверь последний день месяца.

**Скрипт не успел закончить.** У Google Apps Script есть лимит времени выполнения одного запуска. Для личного аккаунта в документации указаны 6 минут. Если заказов много, часть документов уже создана, а часть осталась в промежуточном состоянии. Перед каждой строкой ставь `Обрабатывается`, а после каждого этапа обновляй статус.

**Выбран не тот шаблон.** Одинаковые названия опасны. Если поиск берёт первое совпадение, для постоянного покупателя может собраться обычный счёт. Храни в таблице уникальный `template_id`, а не только название.

**Документ есть, ссылки нет.** PDF мог сохраниться в Drive, но запись ссылки оборвалась. Или ссылка есть, а сообщение не отправилось. Поэтому статусы `document_created`, `link_saved` и `message_sent` должны быть разными.

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

## Сколько стоит своя схема и кому она не подойдёт?

Минимальный подтверждённый расход своей схемы - Claude Pro за $20 в месяц, то есть около 1 574 ₽ по курсу ЦБ РФ на день оплаты, без комиссии оплаты из России. Готовые варианты стоят от 458 ₽ или от 999 ₽ в месяц по разным данным одной страницы, TableProf - от 2 900 ₽ в год, услуги - от 3 250 до 15 000 ₽, а проект студии - от 80 000 ₽.

Сравнение получается таким:

| Вариант | Цена | Что получаешь |
|---|---:|---|
| Своя сборка | Claude Pro $20 в месяц, около 1 574 ₽ | Таблица, шаблон, PDF и правила под свою работу |
| «Моё дело» | от 458 ₽ в месяц | Счета и дополнительные бухгалтерские функции |
| «Моё дело» по FAQ | от 999 ₽ в месяц | Базовый тариф интернет-бухгалтерии |
| TableProf | от 2 900 ₽ в год | Шаблон таблицы, час настройки и поддержка |
| FL.ru: Google Sheets -> PDF | 3 250 ₽ разово | Автогенерация документов, состав услуги нужно уточнять |
| Kwork | 3 500-15 000 ₽ разово | Сложная автоматизация, API, бот и таблицы |
| GoogleSheets.ru | от 80 000 ₽ разово | Диагностика, проектирование, разработка и запуск |

Официальная цена Claude Pro - $20 в месяц. Пересчёт около 1 574 ₽ сделан по курсу ЦБ РФ на день оплаты и не включает комиссию оплаты из России. Отдельные расходы на Google Apps Script, Telegram Bot API и возможных посредников в эту сумму не добавляю: подтверждённой цены для них в документации нет.

У «Моего дела» на одной странице указаны две суммы: от 458 ₽ в месяц и от 999 ₽ в месяц в FAQ. На одной странице приведены две разные суммы, каждая для своего случая. Перед покупкой надо проверить тариф и условия подключения.

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

Клиентские данные тоже нельзя собирать без меры. В таблице оставляй только то, что нужно для счёта. Паспортные данные, сканы, банковские карты и переписку «на всякий случай» в этот процесс не добавляй.

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

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

После основного результата я бы не оставлял практику на уровне чтения. На практикуме эту задачу проходят руками: от описания строки заказа до проверки готового документа. Там легче увидеть, где собственное правило отличается от стандартного шаблона.

Пройти практикум можно здесь.

## Что сделать сегодня, если технологии не твоя тема?

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

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

Порядок на сегодня такой:

1. Создай копию таблицы с тестовыми данными.
2. Запиши поля заказа и пороги по товарным группам.
3. Подготовь один шаблон Google Docs с маркерами.
4. Попроси помощника собрать только создание PDF.
5. Открой готовый документ и сравни каждую строку с таблицей.
6. После этого добавь ссылку, статусы и отправку.
7. Замерь ручной перенос до и после.

Если помощник выдаёт слишком большую систему, останови его. Скажи: «Оставь только строку заказа, расчёт, шаблон и PDF. Не добавляй личные кабинеты, склад и отчёты». В этой задаче лишние функции не помогают.

Если не хочется разбираться с установкой и разрешениями, можно заказать базовую автоматизацию. На Kwork простая задача по Google Таблицам указана за 500 ₽, но счёт с шаблоном, PDF, отправкой и обработкой ошибок, скорее всего, выйдет за рамки базовой услуги. Состав работ надо фиксировать заранее.

Официальный пример Google рассчитан на начинающих и требует минимальной настройки. Sheetgo Invoice Generator ближе к сценарию «строки -> PDF»: таблица заменяет маркеры и складывает документы в Google Drive. Excel-шаблон проще для ручного заполнения, но сам по себе не превращает каждую строку в отдельный счёт.

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

Начать можно на практикуме.

## Вопросы и ответы

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

Да. Скрипт читает строку Google Sheets, получает поля заказа, подставляет их в шаблон Google Docs и сохраняет заполненный документ в PDF. Если в заказе несколько товарных позиций, их лучше хранить отдельными строками с общим `order_id`, чтобы собрать их в один счёт.

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

Да. Apps Script может отправить HTTP-запрос в Telegram Bot API, а PDF передаётся методом `sendDocument`. Для отправки нужен `chat_id`. В документации Telegram указан максимальный размер файла 50 МБ.

Если статус не записался, следующий запуск может создать второй PDF или повторно отправить файл. Поэтому отдельно храни ID документа, ссылку, время отправки и ошибку. Перед повтором проверяй, существует ли уже документ для этого `order_id`.

Claude Pro стоит $20 в месяц, что составит около 1 574 ₽ по курсу ЦБ РФ на день оплаты, без комиссии оплаты из России. Готовые предложения начинаются от 458 ₽ или от 999 ₽ в месяц у «Моего дела», от 2 900 ₽ в год у TableProf, а услуги автоматизации стоят от 3 250 до 15 000 ₽ и выше.

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

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

- [Google: Generate & send PDFs from Google Sheets](https://developers.google.com/apps-script/samples/automations/generate-pdfs)
- [Google Apps Script: Range и метод getValues()](https://developers.google.com/apps-script/reference/spreadsheet/range)
- [Google Apps Script: Document и метод replaceText()](https://developers.google.com/apps-script/reference/document)
- [Google Apps Script: File и сохранение PDF в Drive](https://developers.google.com/apps-script/reference/drive/file)
- [Telegram Bot API: sendDocument](https://core.telegram.org/bots/api#senddocument)
- [Sheetgo Invoice Generator](https://github.com/Sheetgo/invoice-generator)
- [Anthropic: Plans & Pricing](https://claude.com/pricing)
- [Anthropic Help Center: планы Claude](https://support.claude.com/ru/articles/11049762-выберите-план-claude)
- [Anthropic: лимиты Claude Code](https://code.claude.com/docs/en/errors)
- [Google Apps Script: квоты сервисов](https://developers.google.com/apps-script/guides/services/quotas)
- [«Моё дело»: тарифы на выставление счетов](https://www.moedelo.org/landingpage/billing)
- [TableProf: автоматизация бизнеса в Google Sheets](https://www.tableprof.ru/)
- [Kwork: автоматизация Google Таблиц](https://kwork.ru/personal-assistant/51061990/avtomatizatsiya-google-tablits-apps-script-dashbordy-i-integratsii)
- [FL.ru: интеграция Google Sheets -> PDF](https://www.fl.ru/uslugi-freelancera/buhgalterskiy-uchet)
- [GoogleSheets.ru: цены на автоматизацию](https://googlesheets.ru/pricing/)
- [Федеральный закон № 152-ФЗ, статья 5](https://www.consultant.ru/document/cons_doc_LAW_61801/96fbc469f91f57235cc842a85e0516a99f23dc85/)

_Это собирательная история выпускников практикума, а не рассказ одного человека: так эта работа устроена в большинстве таких дел._
