Кому пригодится
- менеджеру по отгрузкам — план на день или неделю: что реально уедет, а что нет;
- логисту и кладовщику — понимание, чем занят остаток и на какой заказ он уйдёт;
- снабженцу — готовый список дефицита именно по датам отгрузки, а не «вообще»;
- руководителю отдела продаж — какие заказы под угрозой срыва срока.
Что показывает
Строки отчёта: Дата отгрузки → Заказ покупателя → Номенклатура.
Колонки:
- Количество в заказе — остаток к отгрузке по заказу, а не первоначальное количество: частично отгруженный заказ показывается тем, что осталось отгрузить;
- Возможно отгрузить — сколько реально можно отгрузить с учётом того, что часть остатка уже забрали более ранние заказы;
- Дефицит — «Количество в заказе» минус «Возможно отгрузить», не меньше нуля.
Итоги считаются по заказу, по дате отгрузки и по отчёту целиком. Строки с дефицитом подсвечены розовым, полностью обеспеченные — зелёным, поэтому проблемные позиции видно сразу, без чтения цифр.
Полностью отгруженные заказы в отчёт не попадают, завершённые — исключаются флажком, включённым по умолчанию.
Как считается распределение
Ключевое отличие от простого сравнения «заказ против остатка»: остаток делится между заказами по очереди.
Очередь задаётся тройкой: дата отгрузки, внутри одной даты — дата заказа, затем номер заказа. Заказы без даты отгрузки уходят отдельной группой в конец и обеспечиваются последними.
Для каждой строки:
Накоплено ранее = сумма потребности всех строк той же позиции, стоящих в очереди раньше
Доступно для строки = МАКС(0; свободный остаток − накоплено ранее)
Возможно отгрузить = МИН(количество в заказе; доступно для строки)
Дефицит = количество в заказе − возможно отгрузить
Пример из демо-базы, свободный остаток позиции — 10 штук:
04.09 Заказ 68 заказано 3 возможно 3 дефицит 0 осталось 7
08.09 Заказ 69 заказано 2 возможно 2 дефицит 0 осталось 5
12.09 Заказ 71 заказано 2 возможно 2 дефицит 0 осталось 3
20.04 Заказ 33 заказано 5 возможно 3 дефицит 2 осталось 0
20.04 Заказ 3 заказано 5 возможно 0 дефицит 5 осталось 0
05.05 Заказ 39 заказано 6 возможно 0 дефицит 6 осталось 0
Распределено ровно 10 единиц, а не 23. Здесь же видно работу приоритета внутри одной даты: 20.04 первым обеспечен более ранний заказ.
Распределение ведётся по паре номенклатура плюс характеристика: у каждой характеристики свой остаток и своя очередь.
Несколько складов работают как общий пул: остатки выбранных складов суммируются, склад в заказе на распределение не влияет — он остаётся отдельным отбором.
Три тонкости УНФ, из-за которых обычный отчёт врёт
-
Резервы намеренно не вычитаются. В УНФ резерв под заказ покупателя создаёт сам заказ. Отчёт распределяет остаток между этими же заказами. Если из остатка дополнительно вычесть резерв, один и тот же заказ уменьшит доступное количество дважды — сначала как резерв, потом как своя же строка распределения, и отчёт покажет дефицит там, где его нет. Поэтому доступным считается физический остаток «Запасов на складах».
-
Завершённые заказы остаток регистра не списывают. Без отбора по варианту завершения спрос завышается, и отчёт рисует дефицит под заказы, которые уже никто не повезёт. В отчёте это флажок «Исключать завершённые заказы», включён по умолчанию.
-
Услуги и работы лежат в том же регистре заказов. Они отсекаются перечислением нескладских типов номенклатуры, а не условием «тип равен запасу»: у позиций с незаполненным типом второй вариант молча выбросил бы из отчёта всю номенклатуру.
Отдельно: отборы по периоду и по складу заказа применяются только к выводу, само распределение всегда считается по всем заказам базы. Иначе заказ, отсечённый отбором — например, с датой отгрузки раньше начала периода, — не забрал бы свою долю остатка, и товар показался бы свободным для более поздних заказов.
Параметры
Все параметры выведены прямо на форму отчёта:
- Дата отгрузки с — пусто означает «без нижней границы», то есть все просроченные попадут в отчёт;
- Дата отгрузки по — пусто означает «без верхней границы»;
- Склады (наличие) — список складов, по которым берётся остаток, отбор в иерархии; пусто = все;
- Номенклатура или группа — список номенклатуры или групп, отбор в иерархии; пусто = вся;
- Склад в заказе (отбор) — фильтр заказов по складу резерва, на распределение не влияет;
- Организация — применяется и к заказам, и к остаткам; пусто = все;
- Только строки с дефицитом — оставить в отчёте только необеспеченное;
- Включать заказы без даты отгрузки — показывать их отдельной группой в конце;
- Исключать завершённые заказы — по умолчанию включено;
- Исключать услуги и работы — по умолчанию включено.
Типичный сценарий менеджера «все просроченные плюс ближайшие две недели»: дату «с» оставить пустой, в дату «по» поставить текущую плюс 14 дней.
Дополнительные поля
В основной вариант не выведены, но есть в схеме и включаются через «Ещё → Изменить вариант → Поля»:
- свободный остаток до распределения — сколько было у позиции до того, как его начали делить;
- остаток после обеспечения — видно, на каком именно заказе остаток закончился;
- статус обеспечения: обеспечен полностью, обеспечен частично, не обеспечен;
- склад в заказе;
- характеристика, артикул, покупатель, дата заказа, номер заказа.
Совместимость
Разработан и проверен на 1С:Управление нашей фирмой 3.0.14, управляемые формы, платформа 8.3. Используются только типовые регистры «Заказы покупателей» и «Запасы на складах» и типовые реквизиты заказа покупателя, поэтому отчёт ожидаемо работает и на соседних релизах 3.0.
Что проверено и что нет
Отчёт прогнан набором проверок на реальных данных базы: формула дефицита, неотрицательность дефицита, «возможно отгрузить» не больше заказанного, отсутствие двойного учёта (сумма распределённого по позиции не превышает её остаток), корректность последовательного распределения, приоритет просроченных, независимость расчёта от отборов, исключение завершённых заказов, поведение при нулевом остатке, частичная отгрузка, несколько складов, режим «только дефицит». Все проверки пройдены.
Честно о непокрытом:
- группа «Без даты отгрузки» проверена логикой запроса, но не данными — в моей базе все заказы с датой отгрузки;
- поведение базы с включённым резервированием данными не проверялось: регистр резервов закрыт функциональной опцией. На расчёт это не влияет, поскольку резервы не вычитаются по замыслу;
- если построчные даты отгрузки внутри одной номенклатуры различаются, берётся минимальная.
История версий
1.0.0.1 — первая публикация.
Проверено на следующих конфигурациях и релизах:
- Управление нашей фирмой, редакция 3.0, релизы 3.0.14.123
Вступайте в нашу телеграмм-группу Инфостарт