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

Структура исходных данных: что должно быть в таблице «Остатки на складах»

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

Введение

Вы уже знакомы с тем, как в логистике важна точность данных о запасах. Без правильной таблицы «Остатки на складах» невозможно построить эффективный план поставок, рассчитать потребности в пополнении и избежать дорогостоящих ошибок. В этом уроке мы разберём, какие столбцы нужны в такой таблице, какие типы данных следует использовать и как обеспечить их корректность. Всё изложено простым языком, с живыми примерами, чтобы вы могли сразу применить полученные знания в своей системе.


1. Основные поля – «скелет» таблицы

Поле Тип данных Описание Пример
1 WarehouseID целое число (INT) Уникальный идентификатор склада в системе. 101
2 WarehouseName строка (VARCHAR) Читабельное название склада. Москва‑Центр
3 ProductID целое число (INT) Уникальный код товара (SKU). 56789
4 ProductName строка (VARCHAR) Наименование товара. Кофе Arabica 500 г
5 BatchNumber строка (VARCHAR) Номер партии, если товар выпускается партиями. B2023-07-15
6 QuantityOnHand десятичное число (DECIMAL) Текущее количество единиц на складе. 1245.00
7 UOM (Unit of Measure) строка (VARCHAR) Единица измерения (шт., коробка, литр и т.д.). шт.
8 LocationCode строка (VARCHAR) Код места хранения внутри склада (ряд, секция, полка). A‑03‑B
9 LastUpdated дата‑время (DATETIME) Момент последнего обновления записи. 2023‑09‑12 14:35:00

Почему именно эти поля?

  • WarehouseID и WarehouseName позволяют быстро группировать данные по складам и выводить их в отчётах.
  • ProductID и ProductName — два уровня детализации: один для системных расчётов, другой для удобства оператора.
  • BatchNumber нужен, если у вас есть требования к прослеживаемости (например, пищевые продукты).
  • QuantityOnHand – сердце таблицы, от него зависят все расчёты.
  • UOM важен, чтобы не путать «шт.» и «кг».
  • LocationCode ускоряет поиск конкретного места внутри склада.
  • LastUpdated обеспечивает контроль актуальности данных.

2. Дополнительные поля – «мягкие» детали

Поле Тип Зачем нужно Пример
ExpiryDate DATE Дата окончания срока годности (для скоропортящихся товаров). 2024‑02‑28
SerialNumber VARCHAR Серийный номер для товаров, требующих индивидуального учёта. SN‑00123‑XYZ
ReservedQuantity DECIMAL Количество, уже зарезервировано под заказы, но ещё не отгружено. 150
DamagedQuantity DECIMAL Сколько единиц помечено как повреждённые. 5
ReorderPoint DECIMAL Точка, при достижении которой следует оформить заказ поставщику. 500
SafetyStock DECIMAL Запас безопасности, учитывающий колебания спроса. 200
SupplierID INT Идентификатор основного поставщика для данного товара. 33

Эти поля не обязательны в каждой системе, но они позволяют добавить слой аналитики без значительных затрат. Например, ReservedQuantity помогает увидеть, сколько товаров действительно доступно для новых заказов: QuantityOnHand - ReservedQuantity.


3. Валидация и контроль качества данных

3.1. Правила целостности

  1. Уникальность комбинации WarehouseID + ProductID + BatchNumber.
    • Дублирование приводит к «плавающим» остаткам.
  2. Неотрицательные количества (QuantityOnHand, ReservedQuantity, DamagedQuantity).
    • Если отрицательное значение появляется, значит где‑то произошёл ввод ошибки.
  3. Соответствие UOM: если в системе есть справочник единиц измерения, поле UOM должно ссылаться только на него.

3.2. Триггеры и автоматические расчёты

Триггер Действие
AFTER INSERT/UPDATE Пересчитывать AvailableQuantity = QuantityOnHand - ReservedQuantity - DamagedQuantity и сохранять в отдельный столбец (если нужен быстрый доступ).
BEFORE DELETE Проверять, нет ли открытых заказов, использующих данный товар; если есть – блокировать удаление.

3.3. Регулярные проверки

  • Ежедневный скрипт сравнивает сумму AvailableQuantity по всем складам с суммой в ERP‑системе.
  • Месячный аудит проверяет, что ExpiryDate не прошёл у более чем 2 % товаров.

4. Пример полной таблицы (CSV‑формат)

WarehouseID,WarehouseName,ProductID,ProductName,BatchNumber,QuantityOnHand,UOM,LocationCode,LastUpdated,ExpiryDate,SerialNumber,ReservedQuantity,DamagedQuantity,ReorderPoint,SafetyStock,SupplierID
101,Москва‑Центр,56789,Кофе Arabica 500 г,B2023-07-15,1245,шт.,A-03-B,2023-09-12 14:35:00,2025-01-01,,150,5,500,200,33
102,Санкт‑Петербург,56789,Кофе Arabica 500 г,B2023-07-15,980,шт.,B-12-C,2023-09-12 14:40:00,2025-01-01,,80,2,500,200,33
103,Новосибирск,12345,Молоко 1 л,B2023-08-01,3000,л.,C-07-D,2023-09-12 14:45:00,2023-12-31,,0,0,1000,500,12

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


5. Как построить таблицу в разных инструментах

Инструмент Как создать таблицу Пример кода/шагов
MS Excel Вставьте заголовки в первую строку, задайте тип данных в формате «Таблица». Data → Table
SQL Server CREATE TABLE StockOnHand ( … ) CREATE TABLE StockOnHand ( WarehouseID INT NOT NULL, ProductID INT NOT NULL, QuantityOnHand DECIMAL(15,2) NOT NULL, … );
Google Sheets Аналогично Excel, но можно добавить Data Validation для списка UOM. Data → Data validation
Python (pandas) df = pd.read_csv('stock.csv') и далее df.dtypes для проверки типов. df['QuantityOnHand'] = df['QuantityOnHand'].astype(float)

Выбирайте инструмент, который уже используется в вашей компании, но не забывайте о унификации форматов (например, дата в ISO‑формате YYYY‑MM‑DD).


6. Частые ошибки и как их избежать

Ошибка Причина Как исправить
Дублирование строк Отсутствие уникального индекса. Добавьте UNIQUE (WarehouseID, ProductID, BatchNumber).
Неправильные единицы измерения Разные отделы используют разные сокращения (шт., pcs). Введите справочник UOM и используйте FK‑связь.
Пропущенные даты обновления Операторы забывают фиксировать LastUpdated. Автоматизируйте запись текущего времени через триггер.
Негативные остатки Ошибочный ввод ReservedQuantity. Добавьте CHECK (ReservedQuantity >= 0) и проверку в UI.
Неучтённые повреждённые товары Отсутствие поля DamagedQuantity. Включите поле и обучите персонал фиксировать дефекты.

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

  1. Составьте список обязательных полей для вашей компании, учитывая тип товаров (сырьё, готовая продукция, электроника).
  2. Напишите SQL‑запрос, который выводит все товары, у которых AvailableQuantity (рассчитанное как QuantityOnHand - ReservedQuantity - DamagedQuantity) меньше ReorderPoint.
  3. Создайте в Excel таблицу с 10 строками, включив все поля из раздела 1 и 2. Проверьте, что дата в колонке LastUpdated автоматически обновляется при изменении любой ячейки (используйте формулу =NOW() и настройте макрос).
  4. Опишите процесс валидации: какие автоматические проверки вы внедрите в системе, чтобы гарантировать, что отрицательных остатков не появится?
  5. Проанализируйте пример CSV‑файла выше и укажите, какие строки требуют исправления (например, если ExpiryDate уже прошёл).

Ответьте на вопросы, запишите свои выводы в блокнот и сравните с рекомендациями, приведёнными в уроке. Это поможет закрепить материал и подготовиться к внедрению таблицы в реальном бизнес‑процессе.


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