Из Excel-таблицы в веб-сервис
У производителя фильтров расчёт поставок на маркетплейсы и заявка на производство жили в одной большой Excel-книге: больше двадцати листов, отдельные листы под каждый аккаунт Озона, Wildberries и Яндекс Маркета, справочники артикулов и формулы ВПР между ними. Перед каждым расчётом данные вставлялись вручную, а подсказки в самой таблице напоминали «обновить из 1С» и «протянуть формулу». Одна ошибка в диапазоне, и цифры поставки уезжают.
Задача была перенести этот расчёт в веб-сервис: сотрудник загружает выгрузки, нажимает «Запустить расчёт» и получает готовые файлы поставок и заявку на производство.
Какие данные загружаются
- Остатки из 1С: артикул, номенклатура, доступное количество по складам.
- Ожидаемые поступления: что придёт с производства в ближайшее время.
- Рекомендации к поставке Озона, Wildberries и Яндекс Маркета: рекомендуемое количество, остатки на складах FBO и товары в пути.
- Потребность по городам из SellerStats: Москва, Санкт-Петербург, Екатеринбург, Казань, Краснодар, Новосибирск, Ростов, Самара, Нижний Новгород.
- Справочник штрихкодов, чтобы в файлах для площадок стояли настоящие штрихкоды.
Каждый источник загружается перетаскиванием файла, для каждого можно скачать пример формата. В расчёт идёт последняя загрузка каждого типа.
Как считается поставка и производство
- Общая таблица по артикулам. У компании два бренда с разными системами артикулов, и разные выгрузки знают товар под разным кодом: 1С под одним, SellerStats под другим. Сервис склеивает их в одну строку через файлы рекомендаций маркетплейсов, где указаны оба артикула.
- Потребность каждой площадки: рекомендация минус остаток на складах FBO минус товар в пути, но не меньше нуля.
- Сколько произвести: суммарная потребность площадок минус остаток в 1С минус ожидаемые поступления.
- Поставка Озона по городам распределяется пропорционально спросу из SellerStats, а штуки, оставшиеся от округления, уходят в город с наибольшим объёмом.
Позиции, которые нужно производить в первую очередь, стоят в начале списка.
Что получается на выходе
- Заявка на производство: оба артикула, наименование, остаток в 1С, поступления, потребность площадок и сколько произвести.
- Файлы поставок Озона по каждому городу в формате для загрузки.
- Файлы для Wildberries и Яндекс Маркета со штрихкодами. Если справочник штрихкодов не загружен, сервис предупреждает, что в колонке стоит артикул вместо штрихкода.
- Сводная поставка для склада: все площадки и города на одном листе, с разбивкой по категориям хранения и итогами.
История расчётов
Каждый запуск сохраняется в истории со статусом, сводкой и файлами. Старый расчёт можно открыть и скачать файлы заново, он пересчитывается по тем же загруженным данным. Вход в сервис по учётной записи.
Как устроено
Бэкенд на FastAPI и PostgreSQL, разбор Excel на openpyxl, интерфейс на Next.js. Парсеры сами находят строку заголовков, даже если она не первая, и понимают разделители складов в выгрузке 1С. Сервис работает в Docker, для первого знакомства есть кнопка «Заполнить демо-данными».
Частые вопросы
Как рассчитать поставку на Озон, Wildberries и Яндекс Маркет из одной таблицы?
Загрузить рекомендации к поставке каждой площадки, остатки 1С и ожидаемые поступления. Сервис посчитает потребность каждой площадки с учётом остатков FBO и товаров в пути и подготовит файлы поставок.
Как считается объём производства?
Суммарная потребность всех площадок минус остаток на складе в 1С и минус ожидаемые поступления.
Как поставка Озона делится по городам?
Пропорционально спросу по городам из SellerStats.
Нужна ли интеграция с 1С?
Нет, достаточно обычной выгрузки остатков из 1С в Excel.





