Как отобразить статус сборки и место хранения заказа покупателя в журнале заказов 1С:УТ 11?

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

При организации самовывоза товаров со склада компании часто сталкиваются с ситуацией, когда крупные заказы собираются комплектовщиками заблаговременно, а документ РеализацияТоваровУслуг оформляется непосредственно в момент передачи товара покупателю. При отсутствии визуального контроля или отметок в программе кладовщик может не заметить уже скомплектованный заказ на стеллаже и начать собирать его повторно. Это приводит к потере рабочего времени, путанице с остатками и задержкам при обслуживании клиентов.

Разберем способы решения данной задачи в конфигурации «1С:Управление торговлей 11» (а также «1С:Комплексная автоматизация 2» и «1С:ERP»): от легкой доработки запроса динамического списка с использованием дополнительных реквизитов до использования типовых механизмов складского учета.

Вариант 1. Использование дополнительных реквизитов и модификация динамического списка

Если руководство компании не готово внедрять расширенный складской контур, самым быстрым способом является добавление дополнительного реквизита к документу ЗаказКлиента (например, «Отметка о сборке» со строковым типом или списком значений ячеек) и вывод этой информации напрямую в колонку «Текущее состояние» журнала заказов.

Посмотрим, как устроен механизм формирования поля состояния. В типовой конфигурации текущее состояние заказов не хранится в реквизите документа, а рассчитывается и записывается в регистр сведений СостоянияЗаказовКлиентов. В динамическом списке формы списка заказов состояние выбирается запросом из этого регистра.

Разберем по шагам, как модифицировать текст запроса динамического списка в расширении конфигурации или в форме списка документов.

  1. Создадим дополнительный реквизит для документа ЗаказКлиента с наименованием «Отметка о сборке» (тип: Строка). Кладовщик будет указывать в нем номер полки/ячейки или факт готовности.
  2. В тексте запроса динамического списка добавим левое соединение с табличной частью дополнительных реквизитов документа.
  3. Учтем ограничение платформы: реквизит ТекстоваяСтрока или строковое значение неограниченной длины нельзя напрямую сравнивать и конкатенировать в условиях ВЫБОР. Для этого применим оператор ВЫРАЗИТЬ(... КАК СТРОКА(1000)).

Посмотрим на пример базового фрагмента запроса:


ВЫБОР
    КОГДА НЕ ДокументЗаказКлиента.Проведен ТОГДА
        ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.ПустаяСсылка)
    КОГДА НЕ ДополнительныеРеквизитыЗаказКлиента.Значение ЕСТЬ NULL 
        И ДополнительныеРеквизитыЗаказКлиента.Свойство.Заголовок = "Отметка о сборке"
        И (ВЫРАЗИТЬ(ДополнительныеРеквизитыЗаказКлиента.Значение КАК СТРОКА(1000))) <> "" ТОГДА
        "Собран: " + (ВЫРАЗИТЬ(ДополнительныеРеквизитыЗаказКлиента.Значение КАК СТРОКА(1000)))
    ИНАЧЕ
        ЕСТЬNULL(СостоянияЗаказовКлиентов.Состояние, ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.Закрыт))
КОНЕЦ КАК Состояние

Обратим внимание на условие по имени свойства: фильтрация по Свойство.Заголовок чувствительна к случайному переименованию свойства пользователем. Для промышленного решения безопаснее связывать свойство по фиксированному имени через ПланВидовХарактеристик.ДополнительныеРеквизитыИСведения.ИмяПредопределенногоНабора либо по постоянной ссылке.

Вариант 2. Автоматическое разделение заказов на «Готов к сборке» с подсчетом строк и исключением услуг

Если требуется не только видеть факт сборки, но и автоматически информировать склад о приоритете (крупные заказы собирать в первую очередь, а мелкие — по факту прибытия клиента), запрос можно расширить. Для этого соединим документ с агрегированной выборкой по табличной части Товары.

Проанализируем важный нюанс: в табличную часть заказов помимо материальных позиций часто включаются услуги доставки, подъем на этаж и сервисные работы. Их необходимо исключить из подсчета строк и количества позиций к отбору.

Рассмотрим пример запроса с исключением номенклатуры с типом Услуга и Работа:


ВЫБОР
    КОГДА НЕ ДокументЗаказКлиента.Проведен ТОГДА
        ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.ПустаяСсылка)
    КОГДА НЕ ДополнительныеРеквизитыЗаказКлиента.Значение ЕСТЬ NULL 
        И ДополнительныеРеквизитыЗаказКлиента.Свойство.Заголовок = "Отметка о сборке"
        И (ВЫРАЗИТЬ(ДополнительныеРеквизитыЗаказКлиента.Значение КАК СТРОКА(1000))) <> "" ТОГДА
        "Собран: " + (ВЫРАЗИТЬ(ДополнительныеРеквизитыЗаказКлиента.Значение КАК СТРОКА(1000)))
    КОГДА СостоянияЗаказовКлиентов.Состояние = ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.ГотовКОтгрузке)
        И ЕСТЬNULL(ТоварыЗаказКлиента.КоличествоСтрок, 0) > 1 ТОГДА
        ВЫБОР
            КОГДА ТоварыЗаказКлиента.КоличествоТовар >= 10 ТОГДА
                "К сборке: 10 и более шт."
            ИНАЧЕ
                "Готов к сборке (" + ВЫРАЗИТЬ(ТоварыЗаказКлиента.КоличествоСтрок КАК СТРОКА(10)) + " поз.)"
        КОНЕЦ
    ИНАЧЕ
        ЕСТЬNULL(СостоянияЗаказовКлиентов.Состояние, ЗНАЧЕНИЕ(Перечисление.СостоянияЗаказовКлиентов.Закрыт))
КОНЕЦ КАК Состояние

// Секция соединений:
ИЗ
    Документ.ЗаказКлиента КАК ДокументЗаказКлиента
    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияЗаказовКлиентов КАК СостоянияЗаказовКлиентов
        ПО (СостоянияЗаказовКлиентов.Заказ = ДокументЗаказКлиента.Ссылка)
    ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента.ДополнительныеРеквизиты КАК ДополнительныеРеквизитыЗаказКлиента
        ПО (ДокументЗаказКлиента.Ссылка = ДополнительныеРеквизитыЗаказКлиента.Ссылка)
    ЛЕВОЕ СОЕДИНЕНИЕ (
        ВЫБРАТЬ
            ЗаказКлиентаТовары.Ссылка КАК Ссылка,
            СУММА(ЗаказКлиентаТовары.Количество) КАК КоличествоТовар,
            КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ЗаказКлиентаТовары.НомерСтроки) КАК КоличествоСтрок
        ИЗ
            Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
        ГДЕ
            ЗаказКлиентаТовары.Номенклатура.ТипНоменклатуры НЕ В (
                ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Услуга),
                ЗНАЧЕНИЕ(Перечисление.ТипыНоменклатуры.Работа)
            )
        СГРУППИРОВАТЬ ПО
            ЗаказКлиентаТовары.Ссылка
    ) КАК ТоварыЗаказКлиента
        ПО (ДокументЗаказКлиента.Ссылка = ТоварыЗаказКлиента.Ссылка)

Важное предостережение по производительности: соединение динамического списка с вложенными запросами и группировками по табличным частям может замедлить работу журнала при больших объемах данных (десятки тысяч заказов). Для высоконагруженных баз расчет агрегатов рекомендуется выносить в отдельный непериодический регистр сведений, обновляемый при проведении документа, либо в регламентное задание.

Вариант 3. Использование штатных складских механизмов 1С:УТ 11

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

  1. Ордерная схема только при отгрузке: В настройках склада (раздел НСИ и администрирование -> Склады и магазины) можно включить флаг «При отгрузке» в блоке «Ордерная схема документооборота», не включая адресное хранение. В этом случае финансовый документ РеализацияТоваровУслуг оформляется менеджером в момент выдачи, а на складе используется документ РасходныйОрдерНаТовары. Ордер имеет типовые статусы: «К отбору», «В процессе отбора», «Отобран», «К отгрузке». Статус «Отобран» однозначно сообщает всем пользователям, что товар физически собран и ожидает клиента.
  2. Справочное размещение товаров в ячейках: Если требуется фиксация конкретной полки на складе, в параметрах склада можно включить использование ячеек для справочного размещения. Это не требует ведения сложного количественного учета в разрезе ячеек, но дает возможность распечатать задание на отбор и закрепить за собранным заказом зону отгрузки или полку временного хранения.
  3. Отчет «Состояние выполнения заказов»: Типовой отчет доступен непосредственно из формы заказа и наглядно показывает текущее состояние каждой позиции: зарезервировано, готово к отгрузке, отгружено или ожидает обеспечения.

Выбор варианта зависит от масштаба склада: для небольших интернет-магазинов оптимально подходит расширение динамического списка с дополнительным реквизитом, а для распределенных складов с несколькими сотрудниками сборки — типовая ордерная схема на отгрузку.

← На главную