Три шага и карточка на девять пунктов
Страница для администратора вашей сети. Здесь же копятся ответы на вопросы, которые задают чаще всего — если чего-то не хватает, напишите, и ответ появится тут.
Ищете конкретный ответ — вот все вопросы этой страницы:
Продукт открывается в браузере. Установку делаем мы. От вас нужно решить, где он будет жить — на нашем сервере или на вашем, — и дать доступ к базе Венд-Аналитики на чтение.
Разворачиваем у себя, продукт открывается по адресу вида ваша-компания.growvend.ru. От вас по серверу не нужно ничего — только доступ к базе.
База не покидает ваш контур вообще. Нужна отдельная машина, желательно чистая. Требования скромные — таблица ниже.
| Параметр | Минимум | Рекомендуем |
|---|---|---|
| Система | Ubuntu 22.04 / 24.04, 64 бита | Ubuntu 24.04 LTS |
| Процессор и память | 2 ядра / 4 ГБ | 4 ядра / 8 ГБ |
| Диск | 40 ГБ свободно | 60–80 ГБ |
| Права | Учётная запись с sudo. Настроим всё мы | |
Скажите город сети. Ubuntu обычно приезжает в поясе UTC, а приложение считает «сегодня» по времени сервера. По городу выставим правильный часовой пояс и подтянем погоду — иначе выручка и ночные расчёты уедут на несколько часов.
Только если сервер ваш. Ставим и поддерживаем удалённо по защищённому каналу SSH — пользователи этим не пользуются, это служебный вход.
sudo — логин и пароль. Либо мы пришлём SSH-ключ, вы его добавите, и пароль не понадобится вовсе.⚠️ Пароли и адреса присылайте личным сообщением, не в общем чате и не в переписке, где есть посторонние.
Все цифры продукт берёт отсюда. Подключаемся по сети только на чтение: приложение никогда ничего не пишет в вашу базу — это запрещено на уровне самой СУБД, ошибкой SQLCODE −817, а не нашим обещанием.
Firebird обычно слушает порт 3050. Сервер, где будет продукт, должен «видеть» машину с базой по этому порту — если между ними межсетевой экран, откройте 3050 с адреса нашего сервера.
Достаточно учётной записи с правом только чтения. Права администратора базы не требуются — можете завести отдельного пользователя под нас и отозвать его в любой момент.
Девять пунктов. Пятый и всё, что с паролями, — личным сообщением.
| № | Что нужно |
|---|---|
| 1 | Название сети — как подписать в шапке приложения |
| 2 | Город сети — часовой пояс, погода, каникулы |
| 3 | Сервер: наш (укажите желаемое имя ___.growvend.ru) или ваш |
| 4 | Если сервер ваш — как заходим: внешний IP или домен с портом, либо VPN |
| 5 | Если сервер ваш — SSH-логин с sudo и пароль (в личку) |
| 6 | Firebird: IP сервера с базой в локальной сети и порт, если меняли — по умолчанию 3050 |
| 7 | Firebird: путь к файлу базы. Если баз несколько — путь к каждой |
| 8 | Firebird: логин и пароль — только если меняли (в личку) |
| 9 | Есть ли в сети школы и вузы — нужно для учёта каникул |
Списком домашних заданий не пугаем. Как получим доступы — проверим подключение, развернём продукт и сами посмотрим, что в данных заполнено, а что стоит дозаполнить. Дальше присылаем таблицы по одной: таблица → вы заполняете → следующая проверка показывает, что осталось. Разбор пробелов — наша работа, а не ваше домашнее задание.
Нет, и не можем физически. Соединение открывается в режиме только чтения на уровне самой СУБД: любая попытка записи отклоняется Firebird ошибкой SQLCODE −817, независимо от того, что написано в нашем коде.
Важнее прочего: номера автоматов заполнены и не повторяются, проставлены подразделения и тип точки, заведены закупочные цены и старые не затираются новыми, есть категории, габариты товара и сроки годности. Чего не хватает — увидим сами и пришлём таблицу.
Считаем не «выручку нового товара», а разницу по промежуткам между приездами: внутри промежутка полка не меняется, поэтому видно, что дало само решение. Дни каникул выкидываются целиком, прирост считается в штуках и только потом переводится в деньги — подорожание в него не попадает. Правило целиком расписано на странице «Методика расчёта».
Да, и это главная часть расчёта: из прироста вычитается то, что вытесненный товар недодал против своей прежней скорости — в штуках, и в валовой прибыли, и в выручке. Если у товара просто забрали лишнюю ячейку и он продаёт столько же, вычет обнуляется сам. Если алгоритм вернул товар обратно, вычет прекращается с этого дня. Как это устроено.
Справочники → Торговые автоматы → карточка автомата → поле «Код». Это номер ТА — тот, которым автомат называют в работе и по которому мы связываем продажи, приезды и планограмму.
Два требования: заполнен у каждого автомата и не повторяется. Пустой код — автомат выпадает из расчёта целиком, его продажи не с чем сопоставить. Повторяющийся номер — коллизия: такие автоматы попадут в стоп-факторы, и вы увидите их списком в кабинете.
Справочники → Номенклатура → карточка товара → поле «Код». Достаточно названия категории: «Снек», «Скоропортящиеся», «Аптека», «Сувениры».
Здесь же — «Основной поставщик» и «Срок годности, дни». Три из пяти полей заполняются в одной карточке.
Категория — не бумажка для отчёта, на ней держатся два расчёта. Погодные коэффициенты считаются по категориям: вода в жару уходит вдвое быстрее, снек падает — без категории товар остаётся вне этой поправки. И категория говорит, что товар скоропортящийся: только у таких мы спрашиваем срок годности и, если нужно, квант поставки. Товар с пустым кодом выпадает из подбора замен совсем — его не введут и не выведут, он просто стоит.
Справочники → Номенклатура → карточка → раздел «Снековая ячейка» → «Высота» и «Ширина» (подсвечены на снимке). Ширина — сколько места товар занимает по ширине: 1 — одинарная ячейка, 1,5 — полуторная, 2 — двойная. Ставится числом, а не цифрой из кода товара.
В расчёт идут только ширины 1, 1,5 и 2. Всё остальное — пустое поле, ноль, любое другое число — считается незаполненным, и такой товар уходит в «Выведенный ассортимент»: в подборе замен он не участвует. Это не потеря: позицию, которую улучшать не нужно, туда и выводят намеренно, вместо того чтобы дозаполнять карточку.
Последняя. Проверить проще всего по карточке товара: если раздела «Снековая ячейка» с «Высотой» и «Шириной» в ней нет — сервер ВА старый, его нужно обновить.
Дистрибутив у разработчика — скачать va-server.msi. Обновляет ваш администратор, база при этом сохраняется.
Пока полей нет, доходность полки и подбор замен не считаются: без габаритов система не знает, встанет ли товар в ячейку. Остальное — период обслуживания, погода, гросс-маржа — работает и на старой версии.
Справочники → Торговые точки → карточка точки → вкладка «Параметры» → поле «Тип». Заполняется у каждого автомата, значение выбирается из списка:
офис · улица · транспортный узел · медицина · школа · институт
На этом поле строится подбор замены: сначала берём то, что хорошо продаётся в точках такого же типа, и только потом — топ по всей сети. Школа и бизнес-центр покупают разное, и товар, который выстрелил в офисе, в школе может простоять. Поле новое — просим заполнить заранее, чтобы к моменту, когда расчёт начнёт его учитывать, данные уже были.
Справочники → Номенклатура → карточка товара → «Срок годности, дни». Поле в той же карточке, что и «Код» с «Основным поставщиком».
Срок задаёт потолок периода обслуживания — то есть решает, как часто ездить на точку. Без него расчёт берёт четыре дня на любой товар: к точке с сорокадневным сыром ездили бы в десять раз чаще, чем нужно, а однодневный товар портился бы на полке.
Справочники → Номенклатура → карточка товара → «Основной поставщик». Там же, где категория и срок годности.
Внизу той же карточки — вкладка «Цены», там задаётся закупочная цена.
Без него не работают ограничения сети — чей товар в какой автомат ставить можно, а какого нельзя. Товар без поставщика ограничения не отсекают, и он может встать туда, куда по договору нельзя. Если позиция больше не нужна — быстрее вывести её из ассортимента, чем дозаполнять.
Карточка товара → вкладка «Цены» → строка «Закупочная». Оттуда она попадает в чек продажи как себестоимость — по ней и считается маржа. При оприходовании товара цена проставляется документом поступления, но проверять и править удобнее в карточке.
Ноль — не «бесплатно», а «не заполнено». При нулевой закупочной цене маржа товара считается нулевой: он выглядит бесполезным для полки, может быть вытеснен незаслуженно, а оператору за него не начислится бонус.
Заполнять не обязательно. Поле «Ёмкость» в разделе «Снековая ячейка» можно заполнить, но система всё равно берёт ёмкость по факту последней загрузки автомата — так точнее. Раскладку и число ячеек читаем из планограммы точки. Модель автомата нигде указывать не нужно.
Расчёт по этому разделу останавливается, а не выдаёт приблизительный ответ. Вы получаете список: какое поле, у скольких товаров, в каком подразделении. Как заполните — замок снимается сам, пересчёт идёт в ближайший ночной прогон.
Разделы держатся разными полями и независимо друг от друга: габариты снека не имеют отношения к заказу скоропорта, и останавливать из-за них заказ было бы неправдой.
Только те наши сотрудники, кто занят вашим подключением. Наружу ничего не уходит. Продажи конкретной сети в конкретной точке — коммерческая тайна, и мы относимся к ней так же, как будем относиться к вашей: в примерах на сайте и в любых материалах названия и номера точек условные, суммы и имена сотрудников не публикуются.
Не обязательно, но так надёжнее. Мы работаем и с обычной учётной записью: соединение открывается в режиме чтения, и запись отклоняет сам Firebird. Если хотите, чтобы у нас на руках вообще не было реквизитов с правом записи — заведите пользователя с правом только SELECT, это десять минут. Пришлём администратору готовую инструкцию с запросами — она здесь.
Нет. Это настройка конкретного ODBC-источника на конкретной машине: учётная запись при этом остаётся с полными правами, и другое приложение с теми же реквизитами пишет свободно. К тому же наш продукт через ODBC не подключается — мы читаем базу напрямую. Но конфигуратор удобен, чтобы проверить реквизиты до отправки.
От получения доступов до первого отчёта об аудите базы — обычно один-три дня. Дальше срок зависит от того, как быстро закрываются пробелы в справочниках: пока не заполнены цены и габариты, часть расчётов честно не считается.
Отзываете доступы — и всё. Учётные записи аннулируете вы сами, мы прекращаем их использование и удаляем выгрузки. Это записано в соглашении о неразглашении, которое подписываем до получения любых доступов.
Сегодня продукт читает Венд-Аналитику на Firebird и данные микромаркетов. Если у вас другая учётная система — напишите, посмотрим на её устройство: разбор чужой базы мы делаем регулярно, и это первое, с чего начинается работа.
Не нашли своего вопроса — напишите нам, ответ появится на этой странице.