В торговых компаниях с разветвленной структурой юридических лиц (например, при наличии ООО для закупок и ИП для розничной и оптовой реализации) часто возникает классическая проблема — появление отрицательных остатков на складах. Менеджеры по продажам, стремясь быстрее обслужить клиента, оформляют документы отгрузки с конкретного склада ИП, на котором товара физически нет, хотя он числится в целом по организации или лежит на центральном складе ООО. Если в системе отключен жесткий контроль остатков по складам, программа позволяет провести такую сделку. В результате себестоимость списывается некорректно, «рвется» партионный учет, а процедура закрытия месяца превращается в бесконечную борьбу с ошибками.
В этой статье мы подробно разберем, как исправить уже накопившиеся за несколько месяцев отрицательные остатки с минимальными трудозатратами, а также рассмотрим системные механизмы автоматизации в «1С:Управление торговлей 11.4» (1С:УТ 11.4), которые навсегда защитят базу от подобного бардака.
Прежде чем переходить к настройкам, важно понять техническую суть проблемы. В 1С:УТ 11.4 партионный учет работает по версии 2.2. Для корректного расчета себестоимости программа должна четко сопоставить документ списания (например, РеализацияТоваровУслуг) с конкретной партией поступления (документы закупки или перемещения). Если товар сначала продается, а документ перемещения, перекрывающий минус, проводится позже (даже в пределах одного дня), возникает так называемый внутридневной минус.
При закрытии месяца система анализирует остатки на каждую секунду времени. Если на момент продажи (например, в 12:00:00) товара на складе физически не было (перемещение провели в 18:00:00), программа не сможет определить партию списания. В итоге себестоимость этого товара рассчитается некорректно или не рассчитается вовсе, выдав ошибку распределения расходов.
Поэтому наша задача состоит не просто в создании документов перемещения, а в выстраивании правильной хронологии и автоматизации процессов.
Перед тем как исправлять ситуацию, нужно оценить масштаб расхождений. Для этого мы будем использовать два ключевых отчета:
Проанализируем отчеты. Наша цель — выявить склады-получатели с отрицательным конечным остатком и склады-источники, на которых этот товар остался в избытке.
Чтобы не открывать каждый заказ вручную и не сверять остатки, воспользуемся штатным механизмом расширенного обеспечения потребностей. Настроим автоматическое формирование заказов на перемещение под дефицит складов ИП.
Разберем процесс по шагам:
СпособОбеспеченияПотребностей. Перейдем в Склад и доставка — Настройки и справочники — Способы обеспечения потребностей. Создадим элемент с типом обеспечения «Перемещение». В качестве источника укажем основной склад ООО (куда поступает товар от поставщика).СхемуОбеспечения. Свяжем наши розничные склады ИП со способом обеспечения «Перемещение с центрального склада ООО».ЗаказКлиента на товар, которого сейчас нет на складе ИП, менеджер должен устанавливать для этой строки вариант обеспечения «К обеспечению» (а не «Отгрузить»).ЗаказНаПеремещение. Логисту останется только провести их и создать на их основании фактические перемещения.Если ваши склады ИП находятся на одной территории (например, разные этажи одного здания или зоны одного магазина), идеальным решением станет использование механизма «Группы складов».
Создадим группу складов в справочнике Склады и магазины. В настройках группы обязательно включим опцию «Разрешить в заказах и реализациях». Теперь в шапке документов продажи менеджеры смогут указывать не конкретный склад, а всю группу. Система зарезервирует товар, если он есть хотя бы на одном из складов этой группы. А кладовщик при сборке товара сможет оформить перемещение по факту, не дергая менеджера для переделки документов продажи.
В описанной ситуации организация состоит из двух юрлиц (ООО закупает, ИП продает). Оформлять ручные перемещения, а затем перепродажи под каждую мелкую транзакцию крайне неэффективно. Настроим встроенный механизм Интеркампани:
ПередачаТоваровМеждуОрганизациями. Это полностью решает проблему перепродажи между своими юрлицами без рутины.Если за прошедшие 3 месяца накопилось много отрицательных остатков на складах ИП, и нужно быстро «схлопнуть» их перемещениями, ручной ввод займет недели. Напишем простую обработку (или выполним код в консоли разработчика), которая найдет все минусы по складам на конец дня и сформирует корректирующие перемещения.
Рассмотрим пример алгоритма на встроенном языке 1С, который собирает отрицательные остатки и создает документы перемещения:
// Шаг 1. Формируем запрос для получения отрицательных остатков на складах
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
| ТоварыНаСкладахОстатки.Характеристика КАК Характеристика,
| ТоварыНаСкладахОстатки.Склад КАК СкладПолучатель,
| -ТоварыНаСкладахОстатки.ВНаличииОстаток КАК Количество
|ИЗ
| РегистрНакопления.ТоварыНаСкладах.Остатки(&КонецПериода, ВНаличииОстаток < 0) КАК ТоварыНаСкладахОстатки";
Запрос.УстановитьПараметр("КонецПериода", Новый Граница(ТекущаяДата(), ВидГраницы.Включая));
РезультатЗапроса = Запрос.Выполнить();
Если Не РезультатЗапроса.Пустой() Тогда
Выборка = РезультатЗапроса.Выбрать();
// Шаг 2. Создаем документ перемещения
// В реальной практике рекомендуется группировать по складам-отправителям и получателям
Перемещение = Документы.ПеремещениеТоваров.СоздатьДокумент();
Перемещение.Дата = НачалоДня(ТекущаяДата()); // Устанавливаем время на начало дня для соблюдения хронологии партий
Перемещение.СкладОтправитель = Справочники.Склады.НайтиПоНаименованию("Центральный склад ООО");
Пока Выборка.Следующий() Цикл
Перемещение.СкладПолучатель = Выборка.СкладПолучатель;
НоваяСтрока = Перемещение.Товары.Добавить();
НоваяСтрока.Номенклатура = Выборка.Номенклатура;
НоваяСтрока.Характеристика = Выборка.Характеристика;
НоваяСтрока.Количество = Выборка.Количество;
КонецЦикла;
Попытка
Перемещение.Записать(РежимЗаписиДокумента.Проведение);
Сообщить("Документ перемещения успешно создан и проведен: " + Перемещение.Ссылка);
Исключение
Сообщить("Ошибка проведения: " + ОписаниеОшибки());
КонецПопытки;
КонецЕсли;
Обратите внимание на важный нюанс: в коде мы устанавливаем время создаваемого перемещения на начало дня (НачалоДня(ТекущаяДата())). Это гарантирует, что при расчете партий документ перемещения гарантированно окажется по времени раньше, чем любые документы продаж, созданные менеджерами в течение этого дня. Тем самым мы полностью избегаем «внутридневного минуса».
При проведении процедуры закрытия месяца в 1С:УТ 11.4 на шаге расчета себестоимости программа автоматически предлагает воспользоваться встроенным инструментом — «Помощник исправления отрицательных остатков товаров организаций».
Этот помощник анализирует расхождения, возникшие из-за пересортицы по организациям, номерам ГТД или видам запасов. Он автоматически генерирует исправительные документы передачи между организациями. Однако помните: исправить физический пересорт между разными складами этот помощник сам не сможет — для этого нужно предварительно настроить обеспечение потребностей (Шаг 2) или сделать ручные перемещения по нашей методике.
Для полного устранения проблемы отрицательных остатков по складам при межфирменных продажах необходимо внедрить комплексный подход: