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

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

Хочу себе такие же кнопки
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(). Затем построьте график количества заявок в день. Что вы можете улучшить в процессе?

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


Адаптивный дизайн WordPress блога
CamZamZam - снимки с веб камеры и эффектом глитча
Cartoon Network games для детей
Чат-испытание
Инструкция по установке логистического программного обеспечения Logitrans.
Как предотвратить поломки оборудования в логистике.
Как улучшить логистические операции с помощью технологии RFID.
Как выбрать правильное оборудование для логистики на Урале.
Как заработать $1000 в неделю без блога и рекламы
Китайские фитинги и трубы для промышленности
Куклы LOL витрина
Лайфхаки для логистических компаний на Урале.
ЛОР болезни и аллергия: взаимосвязь
Ошибки в логистике: что делать, если груз потерян.
Основные стандарты логистики на Урале.
QR-код декодер онлайн
Регистрация ИП в Москве без посещения офиса
Русская онлайн рулетка
Специалист по доменным трендам
Сравнение логистических решений: CargoLogix vs. LogiMaster.
Стильные сумки для женщин
Субтитры — нет, уши — включены: 5 минут на английский
Важные факторы при выборе хостинга
Видеорегистраторы с функцией записи