При переходе на современные версии конфигурации 1С:Управление торговлей 11 (а также 1С:ERP и 1С:Комплексная автоматизация) пользователи часто сталкиваются с ситуацией: документ Заказ клиента проводится без ошибок, даже если товара нет в наличии на складе или у конкретной организации. При этом в документе Реализация товаров и услуг контроль остатков отрабатывает штатно и запрещает отгрузку.
Разберем подробно причины такого поведения системы, выясним архитектурные отличия контроля остатков в УТ 11 и рассмотрим по шагам, как настроить резервирование и контроль доступности товаров на этапе оформления заказов.
Проанализируем, почему типовая логика 1С разделяет оформление заказа и фактическое списание со склада:
Заказ клиента отражает потребность покупателя. Программа не должна запрещать запись намерения клиента купить товар только потому, что его прямо сейчас нет в наличии. Если позиции нет на складе, заказ может выступать основанием для закупки или перемещения.Реализация товаров и услуг. Заказ клиента резервирует физическое количество на складе, но не фиксирует принадлежность товара конкретному юридическому лицу.Если на предприятии требуется жесткий контроль наличия товаров уже на этапе согласования и проведения заказов, выполним следующую последовательность настроек:
Перейдем в раздел НСИ и администрирование → Настройка НСИ и разделов → Продажи → Оптовые продажи. В поле Использование заказов вместо варианта «Заказ как счет» выберем «Заказ только со склада» или «Заказ со склада и под заказ».
Откроем карточку используемого склада в разделе НСИ и администрирование → Склады и магазины и убедимся, что включена опция Контролировать обеспечение.
После включения расширенного режима в табличной части документа Заказ клиента появляется колонка Действия (или колонка обеспечения). Для строк заказа можно выбирать варианты: Не обеспечивать, К обеспечению, Резервировать на складе, Резервировать к дате, Отгрузить.
Система не позволит установить действие Резервировать на складе или Отгрузить на количество, превышающее текущий свободный остаток на складе.
Чтобы менеджеры не могли принудительно ставить статус отгрузки без фактического наличия, проверим профили групп доступа. У пользователей должно отсутствовать право на отклонение от условий обеспечения (роль Редактирование обеспечения в заказах сверх доступного остатка).
Рассмотрим, где и какими типовыми отчетами можно проанализировать остатки, резервы и заказы, которыми они заняты:
Склад и доставка → Отчеты по складу → Остатки и доступность товаров.Также непосредственно из формы открытого заказа клиента можно нажать кнопку Состояние обеспечения. Это позволит в наглядном виде увидеть текущую обеспеченность каждой строки заказа свободными складскими остатками или ожидаемыми поставками.
Если бизнес-процесс компании строго требует запретить проведение документа Заказ клиента даже в статусе согласования при отсутствии остатка (включая проверку по организациям схемы «Интеркампани»), типового функционала без резервирования будет недостаточно. В таких ситуациях доработку реализуют через расширение конфигурации.
Посмотрим на пример логики проверки свободных остатков в расширении. В модуле объекта документа или в обработчике проверки заполнения перехватывается проведение и выполняется запрос к регистру накопления СвободныеОстатки или ТоварыОрганизаций:
&Вместо("ОбработкаПроверкиЗаполнения")
Процедура Расш_ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
// Выполняем стандартную проверку
ПродолжитьВызов(Отказ, ПроверяемыеРеквизиты);
// Если уже есть отказ, дополнительные проверки не требуются
Если Отказ Тогда
Возврат;
КонецЕсли;
// Дополнительный контроль остатков при проведении
Если Статус = Перечисления.СтатусыЗаказовКлиентов.КОтгрузке Тогда
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ТабЧасть.Номенклатура КАК Номенклатура,
| ТабЧасть.Количество КАК КоличествоВЗаказе,
| ЕСТЬNULL(Остатки.ВНаличииОстаток, 0) КАК СвободныйОстаток
|ИЗ
| Документ.ЗаказКлиента.Товары КАК ТабЧасть
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.СвободныеОстатки.Остатки(
| ,
| Склад = &Склад) КАК Остатки
| ПО ТабЧасть.Номенклатура = Остатки.Номенклатура
|ГДЕ
| ТабЧасть.Ссылка = &Ссылка
| И ТабЧасть.Количество > ЕСТЬNULL(Остатки.ВНаличииОстаток, 0)";
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Запрос.УстановитьПараметр("Склад", Склад);
Результат = Запрос.Выполнить();
Если НЕ Результат.Пустой() Тогда
Отказ = Истина;
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = СтрШаблон(
"Недостаточно товара %1: требуется %2, доступно %3",
Выборка.Номенклатура,
Выборка.КоличествоВЗаказе,
Выборка.СвободныйОстаток
);
Сообщение.Поле = "Товары";
Сообщение.Сообщить();
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Таким образом, для включения контроля остатков в заказах типовыми средствами достаточно отказаться от режима «Заказ как счет», настроить правила обеспечения и научить менеджеров правильно распределять действия со строками товаров в заказе.