# Коммерческое предложение для строительной бригады 2026

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

Источник: https://vibeceh.ru/cases/kommercheskie-predlozheniya-v-dokumente-dlya-stroitelnoy-brigady
Автор: Сергей Мазур · опубликовано 2026-08-16

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

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

А началось всё с того, что смета снова превратилась в ручную работу.

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

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

Я не стал искать большую CRM. Мне нужна была небольшая рабочая вещь, а не новая система, которую ещё надо изучать. Для такой схемы подходят [Google Таблицы](/concepts/google-tablicy), Google Документ и скрипт. Если нужна отдельная смета для строительной бригады, я сверяю поля с [примером сметы на строительные работы](/guides/smeta-dlya-stroitelnoj-brigady). Таблица хранит данные, документ отвечает за вид, а скрипт связывает одно с другим.

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

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

## Что изменилось в моей работе после своего коммерческого предложения?

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

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

Сама строка выглядит примерно так:

```text
client | object | stage | work | materials | quantity | price | total | document_url | status
```

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

В коммерческом предложении для объекта я оставляю:

- имя и контакт клиента;
- название или адрес объекта;
- состав работ по этапам;
- материалы;
- количество и единицу измерения;
- стоимость каждой позиции;
- итоговую стоимость;
- условия и срок, если они уже определены;
- ссылку на готовый файл;
- статус обработки.

Смета остаётся рабочим документом. КП становится документом для клиента. Они связаны данными, но не должны быть одним и тем же файлом.

Я также добавил статус. Пустая строка означает, что данные ещё не обработаны. После сборки появляется `Готово`, а рядом записывается ссылка. Если произошла ошибка, ставится отдельный статус, а не делается вид, что документ отправлен.

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

Главное правило осталось прежним: деньги по объекту не равны прибыли. Коммерческое предложение показывает клиенту состав и стоимость работ, но аванс становится результатом только после списания фактических затрат по выполненному этапу.

## Почему свою форму коммерческого предложения не стоит сравнивать с готовым сервисом?

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

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

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

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

В своей форме я могу добавить поле, не меняя всю систему. Например:

- `stage_status` для этапа;
- `who_buys_materials` для того, кто закупает материалы;
- `payment_status` для состояния оплаты;
- `estimate_version` для версии расчёта;
- `document_url` для ссылки на файл.

Я не стал добавлять всё сразу. Сначала оставил только то, что появляется в каждом КП. Лишние поля не делают документ умнее. Они увеличивают число мест, где можно ошибиться.

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

Для меня важна именно возможность менять правило сразу. Если в работе появился новый этап, я не жду, пока кто-то перестроит форму. Я описываю помощнику, что изменилось, показываю текущие файлы и проверяю результат на одной строке.

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

## Из чего состоит коммерческое предложение для строительной бригады?

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

![Кот у схемы связывает строку таблицы, шаблон документа и копию результата.](https://s3.regru.cloud/crossmark/statejnik/images/guides/kommercheskie-predlozheniya-v-dokumente-dlya-stroitelnoy-brigady/kadr-1.webp)

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

### Строка в Google Таблицах

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

### Шаблон Google Документа

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

```text
{{КЛИЕНТ}}
{{ОБЪЕКТ}}
{{ЭТАП}}
{{СРОК}}
{{ИТОГ}}
```

### Таблица работ

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

### Копия результата

Исходный шаблон не меняется. Для клиента создаётся отдельный Google Документ. После этого его можно скачать как PDF или DOCX, а ссылку записать в строку.

### Статус

Он показывает, что произошло с записью: `Новая`, `В работе`, `Готово`, `Ошибка`. Я не использую пустую ссылку как единственный признак результата. Пустая ссылка может означать и ожидание, и сбой.

Google подтверждает базовую механику такой схемы. В документации Apps Script метод чтения диапазона возвращает значения ячеек как двумерный массив:

В документации Google сказано: “Returns the rectangular grid of values for this range.”

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

Важная техническая деталь: `replaceText()` работает с регулярными выражениями. Поэтому в данных со специальными символами могут появиться неожиданные замены. Помощнику стоит сразу сказать, чтобы он безопасно обрабатывал значения, а результат всё равно проверить глазами.

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

## Что поставить перед сборкой и сколько это стоит?

Перед сборкой нужны Visual Studio Code и Claude Code. Первый показывает файлы проекта, второй работает с ними по описанию задачи. Время установки зависит от системы, аккаунтов и авторизации, поэтому его лучше проверить на своей машине. Claude Pro стоит $20 в месяц, официальная цена в рублях для России не установлена.

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

Claude Code работает с файлами проекта из терминала или поддерживаемого интерфейса; конкретный способ подключения зависит от установленной интеграции. Подробнее о безопасной первой задаче рассказано в [инструкции по настройке Claude Code](/guides/claude-code-zakryt-sekrety-ot-agenta-pered-pervoj-zadachej). Ему можно написать обычными словами: «прочитай строку из Google Таблиц, создай копию документа, подставь поля и верни ссылку». В ответ он объяснит план, создаст файлы и укажет, что проверить.

Порядок установки простой:

1. Скачать и установить VS Code.
2. Открыть в нём отдельную папку проекта.
3. Установить Claude Code по инструкции помощника.
4. Войти в аккаунт.
5. Получить ключ, если он понадобится для подключения.
6. Проверить, что помощник видит папку и может создать тестовый файл.

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

Про расходы лучше сказать прямо. Claude Pro стоит $20 в месяц при помесячной оплате. Официальная цена в рублях для России не установлена, оплата российской картой не подтверждена. В годовом варианте официально указано $200 на [странице тарифов Claude](https://claude.com/pricing), но для сравнения самостоятельной схемы я беру помесячный тариф.

Подписка расходует общий лимит Claude и Claude Code. После включённого объёма использование может оплачиваться отдельно по API-тарифам. Поэтому $20 не стоит воспринимать как безусловный предел всех расходов.

Google Apps Script и Google Таблицы позволяют начать на бесплатной инфраструктуре. Для обычного пользовательского аккаунта Google указаны [ограничения Apps Script](https://developers.google.com/apps-script/guides/services/quotas):

- 90 минут работы триггеров в день;
- 6 минут на один запуск;
- 20 триггеров на пользователя и скрипт.

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

Claude Pro требует платную подписку за $20 в месяц. Россия не указана в опубликованном списке поддерживаемых стран, а оплата российской картой не подтверждена. Это надо выяснить до сборки, а не после подготовки всей схемы.

## Как собрать коммерческое предложение шаг за шагом?

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

![Сиба-ину одобряет цепочку из трёх шагов сборки коммерческого предложения.](https://s3.regru.cloud/crossmark/statejnik/images/guides/kommercheskie-predlozheniya-v-dokumente-dlya-stroitelnoy-brigady/kadr-2.webp)

Создай папку проекта и открой её в VS Code. Не начинай с просьбы «написать программу». Сначала объясни помощнику, как сейчас готовится КП и что должно получиться.

   

Помощник должен выдать список полей, порядок действий и вопросы. Если он сразу создаёт большой проект с авторизацией, Telegram и CRM, останови его. Для первого результата нужна только цепочка «строка - документ - ссылка».

Создай Google Таблицу с одной строкой заголовков. Не смешивай описание объекта и список работ в одну ячейку, если таблица работ будет собираться отдельно.

   

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

Открой новый Google Документ и расставь маркеры. Исходный шаблон не должен превращаться в готовое КП для конкретного клиента.

   

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

Теперь попроси помощника читать строку, копировать исходный документ и заменять маркеры. Сначала работай с одной записью.

   

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

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

   

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

После проверки Google Документа добавь экспорт. Не начинай с Telegram: сначала нужен стабильный файл и рабочая ссылка.

   

На выходе должны появиться Google Документ, PDF и DOCX. Google Диск поддерживает сохранение документа в этих форматах:

> В справке Google описан выбор формата при скачивании файла на компьютер.
> - Google, [справка о скачивании файлов с Google Диска](https://support.google.com/drive/answer/2423534?co=GENIE.Platform%3DDesktop&hl=ru-US)

Скачай PDF и открой его отдельно. Проверь страницы, таблицу работ, итог и отсутствие пустых маркеров.

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

   

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

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

## Какие файлы появятся после сборки и что в них менять?

После сборки появятся копия Google Документа-шаблона, готовый документ для конкретного объекта, PDF или DOCX, папка на Google Диске, ссылка и статус в Google Таблице. Исходный шаблон остаётся отдельно. В код без необходимости лезть не нужно: изменения в полях и тексте делаются через таблицу, шаблон и понятное описание помощнику.

В папке на Google Диске хранятся результаты для клиентов. Название может включать клиента и объект, например `КП - Иван Петров - Ремонт кухни`. Точные имена не важны, важно различать исходный шаблон и готовые документы.

В Google Документе меняются:

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

В Google Таблице меняются данные заявки:

- имя клиента;
- объект;
- адрес;
- этап;
- работы;
- материалы;
- стоимость;
- статус.

PDF нужен для отправки клиенту. DOCX оставляет возможность открыть файл в Microsoft Word и внести правку вручную. Ссылка в таблице нужна, чтобы не искать документ по папкам.

Доступы надо проверить отдельно. Если ссылка открывается только у владельца, клиент её не увидит. Google Workspace может запрещать общий доступ по ссылке на уровне администратора. В таком случае отправляй файл подходящим способом или настрой доступ с учётом правил аккаунта.

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

## Что делать, если документ создаётся дважды или не отправляется?

Сначала зафиксируй симптом и статус записи, потом попроси помощника проверить журнал операций, стабильный идентификатор и доступы. Не запускай генератор повторно после тайм-аута вслепую. Дубли появляются при неясном результате, сортировка ломает обновление по номеру строки, параллельные заявки перезаписывают данные, а ошибки `429` и `401` требуют разных действий.

![Мужчина закрывает лицо ладонью рядом со схемой дублей, ошибок и повторного запуска.](https://s3.regru.cloud/crossmark/statejnik/images/guides/kommercheskie-predlozheniya-v-dokumente-dlya-stroitelnoy-brigady/kadr-3.webp)

**Документ создался дважды.** После тайм-аута система может не знать, успела ли операция завершиться. Повторный запуск создаёт второй файл или повторно отправляет сообщение. В таком случае нужен `operation_id` или `document_id`, журнал попыток и статус `Неизвестно`.

   В обсуждении библиотеки `python-telegram-bot` пользователь описывал ситуацию, когда ошибка может возникнуть, хотя сообщение уже доставлено серверу:

   > В обсуждении отмечен неопределенный результат: исключение при `bot.send_message()` не всегда означает, что сообщение не дошло до сервера Telegram.
> - [Обсуждение python-telegram-bot](https://github.com/python-telegram-bot/python-telegram-bot/discussions/4630)

**Статус меняется не у той записи.** Если сценарий запомнил строку 42, а потом таблицу отсортировали, номер 42 уже относится к другому объекту. Обновляй данные по `request_id`, не по позиции строки.

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

**Появляется `429` или `quota exceeded`.** На одной тестовой строке всё может работать, а при запуске по расписанию проявится лимит. Apps Script ограничивает время, триггеры и обращения к сервисам. Добавь журнал попыток, очередь и задержку после временной ошибки.

   Не увеличивай число триггеров без причины. Для одной цепочки достаточно одного понятного расписания.

**Последняя проблема - доступ отозван или токен недействителен.** Это не всегда находится сразу: сценарий может молча перестать создавать документы, хотя расписание продолжает запускаться. Ошибки `401`, `invalid_grant` и `token revoked` должны переводить заявку или систему в состояние `auth_required`.

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

## Сколько стоит своё решение против готового сервиса?

При подходящем бесплатном аккаунте Google отдельная плата за базовую связку может не взиматься, но тарифы и ограничения нужно проверить отдельно. Claude Pro стоит $20 в месяц. Стоимость готового решения нужно проверять по актуальному тарифу конкретного сервиса. Разработка на заказ также зависит от состава работ и условий подрядчика.

| Вариант | Прямые расходы | Что получаешь |
|---|---:|---|
| Своя схема на бесплатной инфраструктуре | 0 ₽ | Таблица, шаблон, Apps Script, самостоятельная настройка |
| Claude Pro | $20 в месяц | Помощник Claude Code и общий лимит использования |

| Готовый сервис без указанного тарифа | Цена зависит от продукта | Готовый сервис |

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

Подписка Claude Pro считается отдельно: $20 в месяц при помесячной оплате. Официальной рублёвой цены для России нет, оплата российской картой не подтверждена. Если после лимита включить дополнительные кредиты, расходы могут вырасти.

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

Своя схема подходит, если:

- объектов не слишком много;
- структура КП меняется под работу;
- ты готов проверить результат;
- достаточно Google Таблиц, Google Документа и файлов на Диске;
- не нужна сложная CRM;
- документы не выпускаются массовым потоком.

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

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

## Что сделать сегодня, если я не разбираюсь в технологиях?

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

Маршрут выглядит так:

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

Не начинай с автоматической отправки клиенту. Сначала убедись, что документ правильно создан, сумма совпадает, доступ работает, а статус записан в нужную строку.

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

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

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

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

Начни с конкретного объекта и результата работ. Укажи клиента, состав работ, материалы, этап, стоимость, срок и условия, если они уже согласованы. Для строительной бригады коммерческое предложение должно отвечать, что именно будет сделано, в каком объёме, кто закупает материалы и за какие деньги.

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

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

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

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

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

Назови каждую работу отдельной строкой. Рядом укажи единицу, количество, цену и сумму, а для материалов добавь отдельную колонку. Если установка зависит от состояния объекта, вынеси это условие в примечание и отметь, что изменится после осмотра или уточнения объёма.

Собери данные по одному объекту: название, адрес, этап, перечень работ, материалы, объёмы и стоимость. Не смешивай его с другой заявкой и создай отдельную версию, если расчёт изменился. Для автоматической сборки используй отдельный `request_id`, чтобы ссылка и статус вернулись в правильную запись.

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

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

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

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

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

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

Опиши объект установки, подготовительные работы, саму установку, материалы и результат проверки. Для каждой позиции укажи объём и стоимость, а в конце покажи общий итог и способ связи. Если Telegram не используется клиентом, подготовь PDF или DOCX и проверь, что ссылка открывается у получателя.

- [Google Apps Script: Range](https://developers.google.com/apps-script/reference/spreadsheet/range)
- [Google Apps Script: Document body](https://developers.google.com/apps-script/reference/document/body)
- [Google Apps Script: Drive file](https://developers.google.com/apps-script/reference/drive/file)
- [Google Apps Script: квоты и ограничения](https://developers.google.com/apps-script/guides/services/quotas?authuser=01&hl=en)
- [Google Apps Script: триггеры](https://developers.google.com/apps-script/guides/triggers/installable?authuser=19)
- [Google Документы: создание копии](https://support.google.com/docs/answer/148833?co=GENIE.Platform%3DDesktop&hl=ru-SM)
- [Google Диск: скачивание файлов](https://support.google.com/drive/answer/2423534?co=GENIE.Platform%3DDesktop&hl=ru-US)
- [Официальный пример Google Apps Script для Google Документов](https://developers.google.com/apps-script/guides/docs?authuser=2)
- [Официальная страница тарифов Claude](https://claude.com/pricing)
- [Выберите план Claude](https://support.claude.com/ru/articles/11049762-%D0%B2%D1%8B%D0%B1%D0%B5%D1%80%D0%B8%D1%82%D0%B5-%D0%BF%D0%BB%D0%B0%D0%BD-claude)
- [Доступность Claude по странам](https://support.claude.com/ru/articles/8461763-%D0%B3%D0%B4%D0%B5-%D1%8F-%D0%BC%D0%BE%D0%B3%D1%83-%D0%BF%D0%BE%D0%BB%D1%83%D1%87%D0%B8%D1%82%D1%8C-%D0%B4%D0%BE%D1%81%D1%82%D1%83%D0%BF-%D0%BA-claude)
- [Обсуждение дублей сообщений в python-telegram-bot](https://github.com/python-telegram-bot/python-telegram-bot/discussions/4630)
- [Обсуждение обновления строки после сортировки](https://www.reddit.com/r/n8n/comments/1tlyrfk/n8n_google_sheets_humanintheloop_workflow/)
- [Обсуждение перезаписи строк при параллельных запросах](https://www.reddit.com/r/n8n/comments/18xme1h/webhook_and_google_sheets_workflow_issue_data_gets_written_on_the_same_row/)

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