Как запретить проведение Заказа клиента при отсутствии товара на складе в 1С:ERP 2.4?

Бизнес-аналитик 1С v8.3 (Управляемые формы) 1С:ERP Управление предприятием Управленческий учет Торговля и дистрибуция
← На главную

В системе 1С:ERP 2.4 логика работы с заказами клиентов существенно отличается от более простых учетных систем. Здесь Заказ клиента часто выступает не только как распоряжение на отгрузку, но и как инструмент планирования потребностей. Именно поэтому новички часто сталкиваются с ситуацией, когда документ проводится, несмотря на отсутствие товара. Рассмотрим подробно, как настроить систему так, чтобы запретить проведение заказа при нехватке остатков, и разберем причины, по которым штатное поведение программы может казаться избыточным.

Понимание концепции ERP: почему заказ проводится без остатков?

Прежде чем приступать к настройкам, проанализируем базовый принцип работы системы. В 1С:ERP документ Заказ клиента может иметь разные цели. Если товара нет в наличии, заказ фиксирует потребность. На основании этого «пустого» заказа отдел закупок может сформировать Заказ поставщику, а производство — Заказ на производство. Если система будет жестко запрещать проведение документа при отсутствии остатка, механизм обеспечения потребностей просто перестанет работать. Однако, если ваша бизнес-модель предполагает продажи строго «с полки», нам необходимо изменить штатные настройки.

Шаг 1. Настройка контроля остатков в карточке склада

Первое, что мы должны сделать — это проверить настройки самого склада, указанного в шапке документа. В 1С:ERP контроль включается индивидуально для каждой складской территории. Рассмотрим последовательность действий:

  1. Перейдем в раздел НСИ и администрирование — НСИ — Склады и магазины.
  2. Откроем карточку нужного склада.
  3. Перейдем на вкладку Настройка контроля остатков.
  4. Установим флаг Контролировать остатки.

Важно обратить внимание на режим контроля. Рассмотрим два основных варианта:

Шаг 2. Влияние колонки «Действие» в табличной части

Даже если контроль остатков на складе включен, Заказ клиента может продолжать проводиться. Выясним причину этого поведения. Она кроется в табличной части Товары, а именно в колонке Действие. Проанализируем, как система реагирует на разные статусы обеспечения:

Таким образом, для запрета проведения необходимо, чтобы в строках было установлено действие Резервировать на складе или Отгрузить.

Шаг 3. Функциональная опция «Заказы только со склада»

Если ваша организация не использует сложные схемы перепродажи или обеспечения под заказ, мы можем упростить интерфейс и логику программы. Для этого разберем настройку в разделе Продажи.

Перейдем в НСИ и администрирование — Настройка НСИ и разделов — Продажи — Оптовые продажи. Здесь можно включить опцию Заказы только со склада. После активации этой настройки из документа Заказ клиента исчезнут варианты обеспечения, не связанные с текущим остатком. Система будет принудительно заставлять пользователя резервировать товар, что автоматически активирует контроль остатков при проведении.

Шаг 4. Глобальная настройка запрета отгрузки

Существует еще одна важная настройка, которая влияет на проведение документов в статусе «Отгрузить». Проанализируем раздел Склад и доставка:

В меню НСИ и администрирование — Склад и доставка найдем пункт Разрешить отгрузку при отсутствии остатков. Если этот флаг снят, то даже при попытке провести документ, статус которого предполагает реальное списание (например, Заказ клиента в статусе К выполнению с действием Отгрузить), система выдаст жесткую ошибку при нехватке товара.

Шаг 5. Программная автоматизация установки обеспечения

Чтобы пользователям не приходилось вручную менять действие в каждой строке, мы можем автоматизировать этот процесс. Самый простой способ — использование типовой обработки заполнения обеспечения. Рассмотрим, как это работает:

  1. В документе Заказ клиента нажмем кнопку Обеспечение — Заполнить обеспечение.
  2. В открывшемся окне выберем стратегию Резервировать по мере поступления или Резервировать на складе.
  3. Система сама проставит нужные статусы в строках, и если товара не будет, при нажатии Провести и закрыть возникнет ошибка.

Если же требуется полностью исключить человеческий фактор, можно прибегнуть к программной доработке через механизм расширений. Рассмотрим пример логики, которую можно внедрить в процедуру ПередЗаписью или ОбработкаПроверкиЗаполнения:


// Пример логики для расширения
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
    Если РежимПроведения = РежимПроведенияДокумента.Проведение Тогда
        Для Каждого СтрокаТЧ Из ЭтотОбъект.Товары Цикл
            // Если установлено действие, требующее остатка, выполняем проверку
            Если СтрокаТЧ.Действие = Перечисления.ВариантыОбеспечения.Отгрузить 
               ИЛИ СтрокаТЧ.Действие = Перечисления.ВариантыОбеспечения.РезервироватьНаСкладе Тогда
                
                // Здесь вызывается функция проверки остатков по регистру "ТоварыНаСкладах"
                Остаток = СкладскойУчет.ПолучитьОстатокТовара(СтрокаТЧ.Номенклатура, ЭтотОбъект.Склад);
                
                Если СтрокаТЧ.Количество > Остаток Тогда
                    Сообщение = Новый СообщениеПользователю;
                    Сообщение.Текст = "Недостаточно товара " + СтрокаТЧ.Номенклатура + " на складе!";
                    Сообщение.Сообщить();
                    Отказ = Истина;
                КонецЕсли;
            КонецЕсли;
        КонецЦикла;
    КонецЕсли;
КонецПроцедуры

Использование Отказ = Истина гарантирует, что документ не будет проведен, если хотя бы по одной строке выявлена нехватка. Однако, стоит помнить, что использование типовых механизмов (настройка склада + функциональные опции) является более приоритетным, так как не снимает конфигурацию с поддержки и сохраняет логику обновления системы.

Резюме

Мы проанализировали основные способы запрета проведения Заказа клиента при отсутствии товара. Подведем итог: наиболее корректный путь — это комбинация включенного контроля остатков на складе и использования действия Резервировать на складе в строках заказа. Для упрощения работы пользователей рекомендуем использовать опцию Заказы только со склада в настройках продаж.

← На главную