Дата публикации: 14.05.2026

Создание шаблона «Заявка водителю» с автоподстановкой данных из подобранного авто

Хочу себе такие же кнопки
2a75c51f

Что вы получите от этого урока

  • Шаблон «Заявка водителю» готов к использованию в любой системе планирования перевозок.
  • Автоподстановка данных из выбранного транспортного средства (марка, госномер, тоннаж, статус).
  • Навык построения динамических форм, которые ускоряют работу диспетчеров и снижают количество ошибок.

1. Почему шаблон важен в логистике

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

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


2. Основные элементы шаблона

Элемент Описание Пример значения
Заголовок Указывает тип документа «Заявка водителю»
Номер заявки Уникальный идентификатор REQ-2026-00123
Дата и время Момент формирования 13.05.2026 09:15
Автомобиль Выбранный транспорт Грузовик Volvo FMX 2020
Госномер Регистрационный номер A123BC77
Тоннаж Грузоподъёмность 18 т
Маршрут Пункт отправления → пункт назначения Москва → Санкт‑Петербург
Контакт водителя Телефон, мессенджер +7 987 654‑32‑10
Комментарий Дополнительные инструкции Требуется охрана

Все поля, которые меняются от заявки к заявке, называют переменными. Мы будем помещать их в шаблон в виде заполнителей (placeholders) вида {{переменная}}.


3. Выбор инструмента

Самыми популярными вариантами являются:

  1. Google Таблицы + Google Docs – облачное, совместное редактирование, простая интеграция через IMPORTRANGE и Google Apps Script.
  2. Microsoft Excel + Word – классический набор, работает офлайн, поддерживает Mail Merge.
  3. CRM‑система (например, Bitrix24, Zoho CRM) – уже содержит модули “Транспортные средства” и “Заявки”.

В этом уроке мы разберём Google Таблицы + Google Docs, потому что они бесплатны, доступны из любого браузера и позволяют быстро публиковать шаблон в виде PDF‑файла.


4. Подготовка справочника транспортных средств

Создайте таблицу «Транспорт» в Google Таблицах:

A B C D E
ID Марка Госномер Тоннаж Статус
1 Volvo FMX A123BC77 18 Свободен
2 Scania R450 B987XY55 20 На загрузке
3 Mercedes Actros C321DE99 22 В пути
  • ID – внутренний идентификатор (используется в формуле).
  • Статус – помогает отфильтровать только свободные машины.

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


5. Создание шаблона в Google Docs

  1. Откройте Google Docs, создайте пустой документ.
  2. Вставьте фиксированный текст, оставив места для переменных в двойных фигурных скобках:
Заявка водителю №{{НомерЗаявки}}
Дата: {{Дата}} {{Время}}

Уважаемый {{ИмяВодителя}}!

Вам назначено транспортное средство:
Марка: {{Марка}}
Госномер: {{Госномер}}
Тоннаж: {{Тоннаж}} т
Статус: {{Статус}}

Маршрут: {{Маршрут}}
Контакт: {{КонтактВодителя}}
Комментарий: {{Комментарий}}

Пожалуйста, подтвердите получение заявки.
  1. Сохраните документ под названием «Шаблон заявки» и скопируйте его ID из URL (строка после document/d/ и до /edit).

6. Связывание данных через Google Apps Script

6.1. Открываем скрипт

  • В таблице «Транспорт»РасширенияApps Script.

6.2. Основной код

/**
 * Функция генерирует заявку в PDF и отправляет её водителю.
 * @param {number} vehicleId   ID выбранного автомобиля
 * @param {string} driverName  Имя водителя
 * @param {string} route       Маршрут (например, "Москва → СПб")
 * @param {string} comment     Дополнительный комментарий
 */
function generateRequest(vehicleId, driverName, route, comment) {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const sheet = ss.getSheetByName('Транспорт');
  const data = sheet.getDataRange().getValues(); // массив всех строк

  // 1️⃣ Находим строку с нужным ID
  const vehicle = data.find(row => row[0] === vehicleId);
  if (!vehicle) throw new Error('Автомобиль не найден');

  // 2️⃣ Формируем объект заменяемых полей
  const placeholders = {
    '{{НомерЗаявки}}': 'REQ-' + Utilities.formatDate(new Date(), 'GMT+3', 'yyyyMMdd') + '-' + Math.floor(Math.random()*1000),
    '{{Дата}}': Utilities.formatDate(new Date(), 'GMT+3', 'dd.MM.yyyy'),
    '{{Время}}': Utilities.formatDate(new Date(), 'GMT+3', 'HH:mm'),
    '{{ИмяВодителя}}': driverName,
    '{{Марка}}': vehicle[1],
    '{{Госномер}}': vehicle[2],
    '{{Тоннаж}}': vehicle[3],
    '{{Статус}}': vehicle[4],
    '{{Маршрут}}': route,
    '{{КонтактВодителя}}': '+7 987 654-32-10', // можно вынести в отдельный лист
    '{{Комментарий}}': comment || ''
  };

  // 3️⃣ Получаем шаблон из Docs
  const templateId = 'YOUR_TEMPLATE_DOC_ID'; // ← замените на ваш ID
  const doc = DocumentApp.openById(templateId);
  const body = doc.getBody();

  // 4️⃣ Заменяем плейсхолдеры
  for (const [key, value] of Object.entries(placeholders)) {
    body.replaceText(key, value);
  }

  // 5️⃣ Сохраняем как PDF
  const pdfBlob = doc.getAs('application/pdf').setName('Заявка_' + placeholders['{{НомерЗаявки}}'] + '.pdf');

  // 6️⃣ Отправка письма (по желанию)
  MailApp.sendEmail({
    to: '+7 987 654-32-10', // телефон в виде email‑SMS, если поддерживается
    subject: 'Новая заявка №' + placeholders['{{НомерЗаявки}}'],
    body: 'Вам пришла новая заявка. Смотрите вложение.',
    attachments: [pdfBlob]
  });

  // 7️⃣ Возвращаем PDF‑ссылка (для дальнейшего использования)
  const file = DriveApp.createFile(pdfBlob);
  return file.getUrl();
}

Пояснение к коду

  • replaceText ищет все вхождения {{переменная}} и заменяет их значением.
  • Utilities.formatDate формирует читаемую дату/время.
  • Math.random()*1000 гарантирует уникальность номера заявки.

6.3. Как вызвать функцию

В таблице добавьте кнопку (вставка → рисунок → назначить скрипт) и привяжите её к следующей обёртке:

function onButtonClick() {
  const ui = SpreadsheetApp.getUi();
  const response = ui.prompt('Введите ID автомобиля, имя водителя, маршрут и комментарий (через запятую)', 
                               'Пример: 1, Иванов, Москва → СПб, Требуется охрана', ui.ButtonSet.OK_CANCEL);
  if (response.getSelectedButton() !== ui.Button.OK) return;

  const [id, name, route, comment] = response.getResponseText().split(',').map(s => s.trim());
  const pdfUrl = generateRequest(Number(id), name, route, comment);
  ui.alert('Заявка создана. Ссылка на PDF: ' + pdfUrl);
}

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


7. Проверка и отладка

Шаг Что проверить Как исправить
1️⃣ ID автомобиля существует в таблице Добавьте проверку if (!vehicle) … (в коде уже есть).
2️⃣ Плейсхолдеры совпадают с шаблоном Убедитесь, что в Docs нет опечаток ({{Марка}} vs {{Марка }}).
3️⃣ Формат даты соответствует локали Поменяйте параметр 'GMT+3' на ваш часовой пояс.
4️⃣ PDF‑файл сохраняется в нужной папке Добавьте DriveApp.getFolderById('FOLDER_ID').addFile(file);
5️⃣ Отправка письма работает Проверьте, что у вас включён сервис MailApp.

8. Расширенные возможности

Возможность Как реализовать Пример применения
Автоподбор свободного авто Фильтрация Статус = "Свободен" и выбор первого const free = data.filter(r => r[4] === 'Свободен')[0]; Диспечер просто нажимает «Подобрать авто», система сама выбирает свободный грузовик.
Сохранение истории заявок После генерации добавьте строку в лист «История» historySheet.appendRow([placeholders['{{НомерЗаявки}}'], …]); Позволяет быстро посмотреть, какие машины уже задействованы.
Интеграция с GPS‑системой Добавьте поле {{Координаты}} и берите их из API UrlFetchApp.fetch('https://api.gps.com/vehicle/'+vehicleId) Водитель получает точные координаты места погрузки.
Мультиязычность Храните тексты в отдельном листе «Перевод» и подставляйте их {{ТекстПривет}}перевод[language][key] Один шаблон обслуживает русскоязычных и англоязычных водителей.

9. Лучшие практики

  • Не храните личные данные (телефоны, email) в открытом доступе – используйте отдельный лист с ограниченными правами.
  • Версионируйте шаблон – сохраняйте копию перед каждым крупным изменением.
  • Тестируйте на небольшом наборе – создайте 3‑4 заявки вручную и сравните их с автоматически сгенерированными.
  • Обучайте диспетчеров – проведите короткий воркшоп, где каждый пробует создать заявку через кнопку.

Практика для закрепления

  1. Создайте таблицу «Транспорт» с минимум 5 строками, добавьте столбец «Тип груза». Заполните данные правдоподобными значениями.
  2. Сделайте копию шаблона в Google Docs и замените все плейсхолдеры на новые, например {{НомерЗаявки}}{{RequestID}}. Обновите скрипт, чтобы он использовал новые имена.
  3. Напишите функцию autoSelectVehicle(), которая ищет первый свободный автомобиль, соответствующий требуемому типу груза, и возвращает его ID. Вызовите её из onButtonClick() вместо ввода вручную.
  4. Сгенерируйте 3 заявки с разными водителями и маршрутами. Сохраните полученные PDF‑файлы в отдельную папку Google Диска и проверьте, что в каждой заявке правильно подставлены данные.
  5. Проведите аудит: откройте лист «История», добавьте столбец «Время генерации», и запишите в него new Date(). Затем построьте график количества заявок в день. Что вы можете улучшить в процессе?

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


Почему Excel без VBA быстрее внедрить в малой логистике
Структура исходных данных: что должно быть в таблице «Остатки на складах»
Структура исходных данных: таблица «Поступления товара»
Структура исходных данных: таблица «Отгрузки и продажи»
Создание умной таблицы (Ctrl+T) для автоматического расширения диапазонов
Правила именования складов и ячеек хранения
Формула СУММЕСЛИ для подсчёта остатков по конкретному товару
Формула СУММЕСЛИМН для расчёта остатков по товару + складу
Расчёт свободного объёма склада в паллето-местах
Создание справочника «Товары» с габаритами и весом единицы
Формула ВПР для подстановки габаритов из справочника в таблицу заказов
Автоматический расчёт веса партии по ВПР + умножение
Автоматический расчёт объёма партии (длинаширинавысотаколичество)
Условное форматирование для подсветки отрицательных остатков (красным)
Условное форматирование для подсветки нулевых остатков (серым)
Условное форматирование для подсветки страхового запаса (жёлтым)
Создание выпадающего списка складов через «Проверку данных»
Создание выпадающего списка товаров через «Проверку данных»
Динамическая таблица остатков с выбором склада через выпадающий список
Формула ЕСЛИ для сигнала «Срочный заказ» при остатке ниже нормы
Создание простого дашборда остатков на одном листе
Таблица «Заявки на перевозку»: номер, дата, маршрут, вес, объём
Справочник автомобилей: тип, грузоподъёмность, объём кузова, расход топлива
Формула ВПР для подбора авто по грузоподъёмности (ближайшая сверху)
Дополнительная проверка: объём груза < объёма кузова
Формула И / ИЛИ для одновременной проверки веса и объёма
Условное форматирование для авто, которые НЕ подходят (зачёркивание)
Автоматическая маркировка «Газель» / «Фура» по весу
Расчёт минимального количества автомобилей для сборного груза
Расчёт коэффициента загрузки фуры (факт/максимум) в процентах
Сводная таблица для анализа частоты заказов по каждому маршруту
Гистограмма в сводной таблице для визуализации загрузки авто
Расчёт удельной стоимости перевозки на 1 кг или 1 куб. м
Расчёт остатков на завтра: остаток сегодня минус плановая отгрузка
Формула СЕГОДНЯ для контроля сроков годности (если скоропорт)
Условное форматирование для товаров с истекающим сроком годности
Создание журнала перемещений между складами
Расчёт транзитных остатков (товар в пути) формулой СУММЕСЛИМН
Общий доступный остаток = складской + транзитный
Расчёт точки заказа (мин. остаток под заказ новой партии)
Автоматический текст: «Заказать N единиц» через ЕСЛИ и округление
Проверка дубликатов в накладных через СЧЁТЕСЛИ
Создание понятной шапки с фильтрами (Автофильтр)
Защита листов от случайного изменения формул (без пароля на старте)
Настройка вывода процентов загрузки склада в условных значках (зелёный/жёлтый/красный)
Расчёт оборачиваемости товара (отношение продаж к среднему остатку)
Создание шаблона «Заявка водителю» с автоподстановкой данных из подобранного авто
Сохранение файла как шаблона (.xltx) для ежедневного копирования
Чек-лист из 5 шагов на каждый день: проверить отрицательные остатки, загрузку авто, подсветку страхового
Бонусный пункт: как не сломать формулы при вставке новых строк
АПТЕЧКА ДЛЯ СОБАКИ С ПОМОЩЬЮ МЕДИЦИНЫ
Часы на весь экран в высоком разрешении
Чат рулетка 2026: чаты с элементом неопределенности
Чат рулетка бесплатно
Чатрулетка: чат с новой личностью
Чай и кофе: два мира вкуса
Диагностика шин: Проверка давления и износа
Excel для логистики: бесплатный курс учёта остатков и подбора авто
Фототехника в цифровую эпоху
Игрушки для развития навыков самостоятельности
Инновационные подходы в управлении грузовыми перевозками на линиях Валберис
Немецкие авто: легковые и внедорожники
Общение с Аней в чате
Онлайн генератор паролей с символами
Оптимизация динамического контента GEO
Политика конфиденциальности и пользовательское соглашение
Сервер для affiliate-маркетинга: Безопасность, Скорость, Изоляция
Смешные телевизоры
Современные тенденции в российском автопроме
Средства IP видеонаблюдения