Остаток на складе в 1С УТ 11 показывают несколько отчётов, и числа в них разные: сколько товара лежит на полке, сколько из него уже обещано клиентам и сколько можно продать. Ниже — какой отчёт открывать под какой вопрос, чем свободный остаток отличается от фактического и как вывести остатки товаров на складах в 1С вместе с ценой продажи и себестоимостью.
Первая часть — для владельца, руководителя продаж и склада. Вторая — для программиста: запрос для отчёта на СКД. Названия отчётов и регистров даны по УТ 11.5; в КА 2.5 и ERP 2.5 складской контур устроен так же.
Три отчёта собраны в разделе «Склад и доставка» → «Отчеты по складу»: «Остатки и доступность товаров», «Ведомость по товарам на складах» и «Ведомость по товарам в ценах номенклатуры». «Ведомость по товарам организаций» и «Себестоимость товаров» находятся в разделе «Финансовый результат и контроллинг», на его панели отчётов. Для ежедневной работы хватает пяти:
| Отчёт | Что показывает | На какой вопрос отвечает |
|---|---|---|
| Остатки и доступность товаров | В наличии, в резерве, доступно, отгружается, поступит, к обеспечению | Можно ли продать товар сейчас и чьими заказами он занят |
| Ведомость по товарам на складах | Начальный остаток, приход, расход и конечный остаток по складам за период | Сколько было, пришло и ушло за месяц; остаток на прошлую дату |
| Ведомость по товарам организаций | Остатки и движение в разрезе организаций | Чей товар лежит на складе, если юрлиц несколько |
| Ведомость по товарам в ценах номенклатуры | Остатки и движение, умноженные на цену выбранного вида | Сколько стоит склад в продажных или закупочных ценах |
| Себестоимость товаров | Стоимость запасов по данным расчёта себестоимости | Сколько денег вложено в товар |
«Ведомость по товарам организаций» заполняется, только если включена опция «Контролировать остатки товаров организаций» («НСИ и администрирование» → «Предприятие» → «Организации»). Свободный остаток по складу виден и при подборе товаров в заказ или реализацию, так что менеджеру не обязательно открывать отчёт.
В отчёте «Остатки и доступность товаров» три главные колонки:
Пример. На складе 100 коробок, по двум заказам зарезервировано 30 и 20. Фактический остаток — 100, свободный — 50. Приходит заказ на 60: со склада его можно обеспечить только на 50, для остальных 10 нужна поставка. Заказы с вариантом обеспечения «К обеспечению» и «Не обеспечивать» доступность не уменьшают: товар за ними не закреплён.
Отсюда главная ловушка. Старые заказы, которые никто не закрыл, продолжают держать резерв: товар на складе есть, а «Доступно» — ноль. Прежде чем искать ошибку в программе, посмотрите, какими заказами занят товар, — отчёт это показывает. Как настроить резервирование и не копить зависшие заказы, рассказано в статье о заказах клиентов в УТ 11.
Второй источник расхождений — ордерная схема. Если на складе включены приходные и расходные ордера, накладные и складские документы оформляют отдельно. «Ведомость по товарам на складах» на таком складе меняется по ордерам, то есть по факту движения товара, а «Ведомость по товарам организаций» — по накладным. Пока кладовщик не оформил ордер по проведённой реализации, два отчёта расходятся, и это нормально. Подробнее о настройке — в статье о складах в УТ 11.
«Ведомость по товарам в ценах номенклатуры» умножает количество на действующую цену и выводит колонку «Оценка». Параметр «Оценка запасов» задаёт, какую цену брать:
Первые два варианта берут вид цены из карточки склада (поля «Учетный вид цены» и «Розничный вид цены»), поэтому разные склады можно оценивать разными ценами. Но цена в отчёте одна: продажную цену рядом с себестоимостью он не покажет, резервов в нём тоже нет.
В отчёт «Остатки и доступность товаров» через «Настройки» добавляются реквизиты товара — артикул, производитель, — но цен и себестоимости среди полей этого отчёта нет. Типичная постановка: одна таблица, где по каждому складу и товару видно фактический остаток, резерв, свободное количество, цену продажи, себестоимость и сумму склада в обеих оценках. Разница двух сумм — наценка, которая лежит на складе. Такой отчёт делают внешним на СКД, без изменения конфигурации, и подключают через «Дополнительные отчеты и обработки».
Создайте внешний отчёт, откройте основную схему компоновки данных, добавьте набор данных «Запрос» и вставьте текст ниже. Параметр ВидЦены появится в схеме сам: задайте ему тип СправочникСсылка.ВидыЦен и включите в пользовательские настройки, чтобы вид цены выбирали перед формированием. Запрос рассчитан на УТ 11.5, КА 2.5, ERP 2.5 и показывает состояние на текущий момент.
// Внешний отчет «Остатки с ценой и себестоимостью»: текст запроса набора данных СКД.
// УТ 11.5, КА 2.5, ERP 2.5; платформа 8.3. Данные - на текущий момент.
// Параметр схемы: ВидЦены (СправочникСсылка.ВидыЦен).
// Поля результата: Склад, Номенклатура, Характеристика, ВНаличии, Зарезервировано,
// Свободно, Цена, ВалютаЦены, СуммаВЦенах, СебестоимостьЕдиницы, СуммаПоСебестоимости.
// 1. Фактический остаток, резервы и свободный остаток по складам
ВЫБРАТЬ РАЗРЕШЕННЫЕ
Запасы.Номенклатура КАК Номенклатура,
Запасы.Характеристика КАК Характеристика,
Запасы.Склад КАК Склад,
СУММА(Запасы.ВНаличииОстаток) КАК ВНаличии,
СУММА(Запасы.РезервироватьНаСкладеОстаток
+ Запасы.РезервироватьПоМереПоступленияОстаток) КАК Зарезервировано,
СУММА(ВЫБОР
КОГДА Запасы.Назначение = ЗНАЧЕНИЕ(Справочник.Назначения.ПустаяСсылка)
ТОГДА Запасы.ВНаличииОстаток
- Запасы.РезервироватьНаСкладеОстаток
- Запасы.РезервироватьПоМереПоступленияОстаток
ИНАЧЕ 0
КОНЕЦ) КАК Свободно
ПОМЕСТИТЬ ВТЗапасы
ИЗ
РегистрНакопления.ЗапасыИПотребности.Остатки(
,
Склад ССЫЛКА Справочник.Склады
{Склад.* КАК Склад,
Номенклатура.* КАК Номенклатура,
Характеристика.* КАК Характеристика}) КАК Запасы
СГРУППИРОВАТЬ ПО
Запасы.Номенклатура,
Запасы.Характеристика,
Запасы.Склад
ИМЕЮЩИЕ
(СУММА(Запасы.ВНаличииОстаток) <> 0
ИЛИ СУММА(Запасы.РезервироватьНаСкладеОстаток
+ Запасы.РезервироватьПоМереПоступленияОстаток) <> 0)
ИНДЕКСИРОВАТЬ ПО
Номенклатура,
Характеристика
;
// 2. Цена выбранного вида, пересчитанная из цены упаковки в цену единицы хранения
ВЫБРАТЬ РАЗРЕШЕННЫЕ
Цены.Номенклатура КАК Номенклатура,
Цены.Характеристика КАК Характеристика,
Цены.Валюта КАК Валюта,
ВЫБОР
КОГДА Цены.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
ИЛИ Цены.Упаковка.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.КоличествоШтук)
ТОГДА Цены.Цена
КОГДА Цены.Упаковка.ТипИзмеряемойВеличины = ЗНАЧЕНИЕ(Перечисление.ТипыИзмеряемыхВеличин.Упаковка)
И Цены.Упаковка.Числитель > 0
И Цены.Упаковка.Знаменатель > 0
ТОГДА Цены.Цена * Цены.Упаковка.Знаменатель / Цены.Упаковка.Числитель
ИНАЧЕ NULL
КОНЕЦ КАК ЦенаЗаЕдиницу
ПОМЕСТИТЬ ВТЦены
ИЗ
РегистрСведений.ЦеныНоменклатуры.СрезПоследних(
,
ВидЦены = &ВидЦены
И Номенклатура В
(ВЫБРАТЬ РАЗЛИЧНЫЕ
Т.Номенклатура
ИЗ
ВТЗапасы КАК Т)) КАК Цены
ИНДЕКСИРОВАТЬ ПО
Номенклатура,
Характеристика
;
// 3. Стоимость остатков по данным расчета себестоимости
ВЫБРАТЬ РАЗРЕШЕННЫЕ
Себестоимость.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура,
Себестоимость.АналитикаУчетаНоменклатуры.Характеристика КАК Характеристика,
Себестоимость.АналитикаУчетаНоменклатуры.МестоХранения КАК Склад,
СУММА(Себестоимость.КоличествоОстаток) КАК Количество,
СУММА(Себестоимость.СтоимостьБезНДСОстаток
+ Себестоимость.СтоимостьЗабалансоваяОстаток
+ Себестоимость.ДопРасходыБезНДСОстаток) КАК Стоимость
ПОМЕСТИТЬ ВТСебестоимость
ИЗ
РегистрНакопления.СебестоимостьТоваров.Остатки(
,
РазделУчета = ЗНАЧЕНИЕ(Перечисление.РазделыУчетаСебестоимостиТоваров.ТоварыНаСкладах)
И АналитикаУчетаНоменклатуры.Номенклатура В
(ВЫБРАТЬ РАЗЛИЧНЫЕ
Т.Номенклатура
ИЗ
ВТЗапасы КАК Т)) КАК Себестоимость
СГРУППИРОВАТЬ ПО
Себестоимость.АналитикаУчетаНоменклатуры.Номенклатура,
Себестоимость.АналитикаУчетаНоменклатуры.Характеристика,
Себестоимость.АналитикаУчетаНоменклатуры.МестоХранения
ИМЕЮЩИЕ
СУММА(Себестоимость.КоличествоОстаток) > 0
ИНДЕКСИРОВАТЬ ПО
Номенклатура,
Характеристика
;
// 4. Себестоимость единицы: по характеристике, а если ее нет - средняя по товару на складе
ВЫБРАТЬ
Запасы.Номенклатура КАК Номенклатура,
Запасы.Характеристика КАК Характеристика,
Запасы.Склад КАК Склад,
ВЫБОР
КОГДА ЕСТЬNULL(ПоХарактеристике.Количество, 0) > 0
ТОГДА ПоХарактеристике.Стоимость / ПоХарактеристике.Количество
КОГДА ЕСТЬNULL(ПоТовару.Количество, 0) > 0
ТОГДА ПоТовару.Стоимость / ПоТовару.Количество
ИНАЧЕ 0
КОНЕЦ КАК СебестоимостьЕдиницы
ПОМЕСТИТЬ ВТСебестоимостьЕдиницы
ИЗ
ВТЗапасы КАК Запасы
ЛЕВОЕ СОЕДИНЕНИЕ ВТСебестоимость КАК ПоХарактеристике
ПО (ПоХарактеристике.Номенклатура = Запасы.Номенклатура)
И (ПоХарактеристике.Характеристика = Запасы.Характеристика)
И (ПоХарактеристике.Склад = Запасы.Склад)
ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
Себестоимость.Номенклатура КАК Номенклатура,
Себестоимость.Склад КАК Склад,
СУММА(Себестоимость.Количество) КАК Количество,
СУММА(Себестоимость.Стоимость) КАК Стоимость
ИЗ
ВТСебестоимость КАК Себестоимость
СГРУППИРОВАТЬ ПО
Себестоимость.Номенклатура,
Себестоимость.Склад) КАК ПоТовару
ПО (ПоТовару.Номенклатура = Запасы.Номенклатура)
И (ПоТовару.Склад = Запасы.Склад)
;
// 5. Итог: остатки с ценой и себестоимостью
ВЫБРАТЬ
Запасы.Склад КАК Склад,
Запасы.Номенклатура КАК Номенклатура,
Запасы.Характеристика КАК Характеристика,
Запасы.ВНаличии КАК ВНаличии,
Запасы.Зарезервировано КАК Зарезервировано,
ВЫБОР
КОГДА Запасы.Свободно > 0
ТОГДА Запасы.Свободно
ИНАЧЕ 0
КОНЕЦ КАК Свободно,
ЕСТЬNULL(ЦеныХарактеристики.ЦенаЗаЕдиницу, ЦеныОбщие.ЦенаЗаЕдиницу) КАК Цена,
ЕСТЬNULL(ЦеныХарактеристики.Валюта, ЦеныОбщие.Валюта) КАК ВалютаЦены,
Запасы.ВНаличии
* ЕСТЬNULL(ЦеныХарактеристики.ЦенаЗаЕдиницу, ЕСТЬNULL(ЦеныОбщие.ЦенаЗаЕдиницу, 0)) КАК СуммаВЦенах,
ЕСТЬNULL(Себестоимость.СебестоимостьЕдиницы, 0) КАК СебестоимостьЕдиницы,
Запасы.ВНаличии * ЕСТЬNULL(Себестоимость.СебестоимостьЕдиницы, 0) КАК СуммаПоСебестоимости
ИЗ
ВТЗапасы КАК Запасы
ЛЕВОЕ СОЕДИНЕНИЕ ВТЦены КАК ЦеныХарактеристики
ПО (ЦеныХарактеристики.Номенклатура = Запасы.Номенклатура)
И (ЦеныХарактеристики.Характеристика = Запасы.Характеристика)
ЛЕВОЕ СОЕДИНЕНИЕ ВТЦены КАК ЦеныОбщие
ПО (ЦеныОбщие.Номенклатура = Запасы.Номенклатура)
И (ЦеныОбщие.Характеристика = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка))
ЛЕВОЕ СОЕДИНЕНИЕ ВТСебестоимостьЕдиницы КАК Себестоимость
ПО (Себестоимость.Номенклатура = Запасы.Номенклатура)
И (Себестоимость.Характеристика = Запасы.Характеристика)
И (Себестоимость.Склад = Запасы.Склад)
ЗапасыИПотребности — по нему УТ 11.5 считает обеспечение заказов. Свободный остаток — ВНаличии − РезервироватьНаСкладе − РезервироватьПоМереПоступления: по такой же формуле его считает типовая функция ОбеспечениеВДокументахСервер.ВременнаяТаблицаСвободныеОстатки. Условие Склад ССЫЛКА Справочник.Склады взято из типового отчёта: в КА и ERP в этом регистре встречаются не только склады.Назначение и явная группировка по товару, характеристике и складу. Отрицательный свободный остаток обрезается до нуля.ЦеныНоменклатуры.СрезПоследних по выбранному виду. Цену часто устанавливают за упаковку, например за коробку из 12 штук, поэтому она делится на коэффициент упаковки Числитель / Знаменатель. Весовые и объёмные упаковки этот упрощённый запрос пропускает: цена по ним остаётся пустой. Если такие упаковки есть, получите полное выражение один раз через типовую функцию Справочники.УпаковкиЕдиницыИзмерения.ТекстЗапросаКоэффициентаУпаковки("Цены.Упаковка", "Цены.Номенклатура") и подставьте его в ветку ИНАЧЕ.СебестоимостьТоваров по разделу учёта «Товары на складах». Товар, характеристика и склад хранятся в ключе АналитикаУчетаНоменклатуры. Себестоимость единицы без входящего НДС — (СтоимостьБезНДС + СтоимостьЗабалансовая + ДопРасходыБезНДС) / Количество, как в отчёте «Себестоимость товаров» с данными «без НДС»; допрасходы — например, доставка, распределённая на товар. Для варианта цены с НДС используют ресурсы Стоимость + СтоимостьЗабалансовая + ДопРасходы. Если по характеристике остатка в регистре нет, берётся средняя по товару на складе.ВалютаЦены. Сравнивайте суммы с одинаковой базой по НДС: признак «Цена включает НДС» у вида цены должен совпадать с выбранным вариантом себестоимости.Колонка «Доступно» типового отчёта дополнительно учитывает график поступлений, поэтому на товарах с резервом по мере поступления она может не совпасть с колонкой «Свободно».
На вкладке «Ресурсы» задайте итоги, иначе в группировках по складу суммы не сложатся:
| Поле | Выражение | Рассчитывать по |
|---|---|---|
| ВНаличии, Зарезервировано, Свободно, СуммаВЦенах, СуммаПоСебестоимости | Сумма(<поле>) | — |
| Цена | ВЫБОР КОГДА Сумма(ВНаличии) = 0 ТОГДА 0 ИНАЧЕ Сумма(СуммаВЦенах) / Сумма(ВНаличии) КОНЕЦ | Номенклатура, Характеристика |
| СебестоимостьЕдиницы | ВЫБОР КОГДА Сумма(ВНаличии) = 0 ТОГДА 0 ИНАЧЕ Сумма(СуммаПоСебестоимости) / Сумма(ВНаличии) КОНЕЦ | Номенклатура, Характеристика |
Цена единицы в итоге по складу бессмысленна, поэтому считается только в группировках по товару. Наценку в процентах добавьте так же: отношение сумм, а не сумма отношений.
Чтобы отчёт открывался из раздела программы, а не через «Файл» → «Открыть», добавьте в модуль объекта функцию регистрации. Загрузите файл в «НСИ и администрирование» → «Печатные формы, отчеты и обработки» → «Дополнительные отчеты и обработки» и укажите в карточке раздел размещения, например «Склад и доставка».
// Модуль объекта внешнего отчета: регистрация в подсистеме БСП
// «Дополнительные отчеты и обработки» (есть в УТ 11, КА 2, ERP 2).
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.1");
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительныйОтчет();
ПараметрыРегистрации.Версия = "1.0";
ПараметрыРегистрации.БезопасныйРежим = Истина; // отчет только читает данные базы
ПараметрыРегистрации.Информация = "Остатки по складам: в наличии, резерв, свободно, "
+ "цена выбранного вида и себестоимость.";
Возврат ПараметрыРегистрации;
КонецФункции
#КонецОбласти
#КонецЕсли
ЦеныНоменклатуры25 с другими измерениями: ХарактеристикаЦО, СерияЦО, УпаковкаЦО. Типовая ведомость в ценах номенклатуры сама проверяет опцию и берёт нужный регистр; в своём запросе для такой базы нужен отдельный блок под новый регистр.Сформируйте «Ведомость по товарам на складах» за период, который заканчивается нужной датой: конечный остаток и есть остаток на эту дату. «Остатки и доступность товаров» отвечает на другой вопрос — что есть сейчас и что ожидается.
Да. В складских отчётах есть параметр «Количество товаров»: в единицах хранения или в единицах для отчётов. Единица для отчётов задаётся в карточке товара.
Свободный, а не фактический: иначе покупатель оформит заказ на товар, который уже зарезервирован за другим клиентом. Это настраивается в обмене 1С с сайтом и в выгрузке на Ozon, Wildberries и Яндекс Маркет.
В себестоимость входят дополнительные расходы, если их распределили на товар, а при поставках по разной цене результат зависит от способа оценки запасов в учётной политике. Как считается себестоимость и где её проверить, разобрано в статье о себестоимости товара в УТ 11.
Сначала проверьте, не висят ли непроведённые ордера и перемещения. Если документы в порядке, нужен пересчёт товаров: по его результатам оформляют излишки и недостачи. С терминалом сбора данных пересчёт идёт быстрее — об этом статья про ТСД в 1С УТ 11.
Если нужен отчёт под ваши правила — с несколькими видами цен, наценкой, отбором по поставщику или остатками для выгрузки на сайт, — поручите его программисту, который знает регистры запасов УТ 11. Опишите задачу на странице отчётов и обработок 1С или сразу разместите задачу: оценка бесплатная, ответ в течение рабочего дня.
Станьте частью сообщества!
Войдите или зарегистрируйтесь, и вы сможете участвовать в обсуждениях.