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

OrderGrow — программа для совместных покупок и приёма заказов, и каталог в ней общий: то, что вы завели один раз, видно и в приложении, и на витрине, и в Telegram-боте. Завести товар можно двумя способами, и они не конкурируют: Google-таблица через бота — для объёма, форма в приложении — для единичных позиций. Ниже — что заполняется, как проходит загрузка, что происходит при ошибке, как устроены фотографии и когда какой способ уместнее.

Что заполняется в карточке товара

Набор полей одинаковый в обоих способах:

  • Название, категория и подкатегория — по ним товар находится в каталоге и раскладывается по разделам.
  • Описание — необязательное, но именно оно отвечает на вопросы покупателя до того, как он их задаст.
  • Поставщик — по нему потом собираются накладные и отчёты.
  • Кратность, единица и размер коробки — как товар считается и как упакован.
  • Цена.
  • Статус — «Опубликован», «Скрыт» или «Удалён».
  • Дата и время окончания сбора — момент, когда сбор по товару закроется сам.

Статусы отличаются сильнее, чем кажется. «Скрыт» — товар в системе есть, покупателю не виден, вернуть можно в любой момент. «Удалён» — товар помечается удалённым, и вместе с ним убираются его фотографии. Восстановить карточку с прежними снимками уже не получится, поэтому для временного снятия с продажи нужен «Скрыт».

ID — первая колонка в таблице и первое поле в форме. Его можно проставить самому, а можно оставить пустым: система присвоит следующий свободный. Занятый номер повторно присвоить нельзя.

Форма создания нового товара в OrderGrow в тёмной теме
Форма нового товара: обязательные поля подсвечены до заполнения
Форма создания нового товара в OrderGrow в светлой теме
Та же форма в светлой теме

Как загрузить товары из Google-таблицы

Таблица уже создана в нужном формате — колонки и их порядок менять не нужно. Заполняете строки: одна строка — один товар.

Дальше в боте, в режиме администратора, — раздел «Товары», затем «Товары из Google».

Меню администратора OrderGrow с разделом Товары
Раздел «Товары» в режиме администратора

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

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

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

Если в файле окажутся две строки с одним ID, сработает первая, вторая будет отклонена с ошибкой. Товар не «перезапишется дважды», но и вторая строка в каталог не попадёт.

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

Строки Google-таблицы с отметками об успешном импорте товаров
Результат по каждой строке — в последней колонке

В конце бот присылает итог: сколько добавлено, сколько обновлено, сколько удалено и сколько строк не прошло.

Сообщение бота OrderGrow об успешном импорте товаров из Google
Импорт без ошибок

Что происходит, когда в строке ошибка

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

Строка Google-таблицы с подсвеченной ячейкой и текстом ошибки
Ячейка подсвечена, рядом — что именно поправить
Ошибка в дате окончания сбора при импорте товаров OrderGrow
Ещё один пример: дата окончания сбора в прошлом

Несколько проверок, с которыми сталкиваются чаще всего:

  • обязательные поля не заполнены;
  • цена и кратность должны быть числом;
  • дата и время окончания сбора либо стоят оба, либо не стоят вовсе, и дата не может быть в прошлом;
  • один и тот же ID не может встречаться в файле дважды.

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

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

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

Сообщение бота OrderGrow об импорте товаров с ошибками
Импорт с ошибками: часть строк ждёт правок

Таблица работает в обе стороны

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

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

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

Если вы уже работаете с каталогом через выгрузку в файл и массовые правки, механика знакомая — она описана в материале про работу с каталогом через Excel. Разница в том, что Google-таблица живёт постоянно и обновляется сама, а файл выгружается под конкретную задачу.

Как добавить один товар в приложении

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

В приложении в режиме администратора — раздел «Товары», вкладка «Матрица», кнопка «Добавить товар»: на компьютере вверху слева над таблицей, на телефоне внизу по центру.

Матрица товаров OrderGrow со списком позиций, остатками и статусами
Матрица товаров: отсюда добавляется новая позиция

Поля те же, что в таблице. Разница одна и существенная: здесь же, в карточке товара, прикрепляются фотографии. После «Создать» товар сразу в каталоге.

Как добавляются фотографии

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

Хранение в Telegram. Бесплатный вариант: Telegram выступает накопителем для снимков. Платить не нужно, но появляется зависимость от внешнего сервиса — от его доступности и от ограничений, которые могут действовать в конкретном городе, регионе или стране. Кроме того, при открытии карточек и листании каталога фотографии подгружаются медленнее.

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

Способы не исключают друг друга: у одного товара может быть до четырёх снимков в Telegram и до четырёх на сервере — до восьми в сумме.

Переходить между способами можно без потерь. Начать разумно с Telegram и ничего не платить, а когда скорость открытия каталога станет заметной, перейти на серверное хранение. Загружать снимки заново не нужно: внутри есть инструмент, который переносит уже загруженные фотографии. Иначе бесплатный вариант оказался бы ловушкой — чем дольше им пользуешься, тем дороже уход.

Когда таблица, а когда приложение

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

Приложение — когда позиция одна, нужна сейчас и с фотографиями.

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

Есть и третий путь — Excel прямо в приложении, без Google-таблицы и без бота. В разделе «Товары» на вкладке «Матрица» есть кнопки «Выгрузить» и «Загрузить»: выгружаете каталог файлом, правите в привычном редакторе, загружаете обратно. Работает и с телефона. Подходит, когда нужно разово поправить много строк, а держать постоянную таблицу незачем — механика разобрана в материале про работу с каталогом через Excel.

Что проверить после добавления

  1. Товар появился в каталоге с нужной категорией и подкатегорией.
  2. Статус — «Опубликован», если товар должен быть виден покупателям.
  3. Цена, кратность и единица совпадают с тем, что вы вводили.
  4. Переключиться в режим покупателя и посмотреть карточку его глазами.

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

Чего эти способы не делают

Фотографии через таблицу не загружаются. В ней видно только их количество. Таблица работает с текстом и числами — файлы через неё передавать неудобно и медленно.

Товар не появляется у покупателей сам. Пока статус не «Опубликован», позиция есть в системе, но её не видно. Загрузка каталога и его публикация — разные действия намеренно: ассортимент можно готовить заранее и открыть целиком в нужный момент.

Дата окончания сбора работает только вперёд. Поставить её задним числом, чтобы закрыть сбор, не выйдет — такая строка не пройдёт проверку. Чтобы закрыть сбор сейчас, меняется статус, а не дата.

«Удалён» удаляет фотографии. Это не «Скрыт». Для временного снятия с продажи — «Скрыт».

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

Читайте также