Как в 1С при подборе товара по умолчанию выбирать единицу измерения, отличную от базовой единицы хранения?

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

Зачастую при работе в современных конфигурациях 1С, таких как 1С:Комплексная автоматизация 2, 1С:Управление торговлей 11 или 1С:ERP Управление предприятием, возникает практическая задача: при добавлении номенклатуры через форму подбора товаров необходимо, чтобы по умолчанию подставлялась единица измерения, отличная от базовой единицы хранения остатков.

Проанализируем ситуацию. Как правило, такая потребность возникает в компаниях, где складской учет ведется в мельчайших неделимых единицах (например, в штуках) для обеспечения точности инвентаризации, а коммерческий отдел отгружает продукцию клиентам исключительно групповой тарой (ящиками, коробками, паллетами). Из-за этого менеджерам приходится при каждом подборе вручную менять единицу измерения, что замедляет процесс формирования заказа и приводит к ошибкам. Разберем по шагам, как можно решить эту задачу различными способами.

Ограничения типового механизма

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

Решение 1: Использование штатного механизма упаковок (без программирования)

Если нет возможности писать код или использовать расширения, рассмотрим штатный механизм платформы. Вы можете использовать функционал упаковок:

  1. Перейдите в раздел НСИ и администрирование и включите опцию использования упаковок номенклатуры.
  2. Настройте для видов номенклатуры (или для конкретных карточек товаров) индивидуальные или общие наборы упаковок. Обязательно укажите коэффициенты вложенности. Например, 1 коробка = 12 шт.
  3. При таком подходе в форме подбора (или уже в табличной части документа заказа) менеджер сможет изменить единицу измерения на нужную через выпадающий список.

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

Решение 2: Программная доработка системы через расширение

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

Рекомендуется использовать механизм расширений, чтобы не снимать основную конфигурацию с поддержки. В расширении необходимо реализовать перехват данных либо на этапе работы «Корзины» формы подбора, либо на этапе обработки выбора и переноса данных в табличную часть самого документа заказа.

Алгоритм заполнения табличной части документа должен делать следующее:

  1. В момент переноса строк из подбора перехватить структуру данных.
  2. Программно подменить базовую единицу хранения на требуемую упаковку (например, на основе заранее созданного дополнительного реквизита номенклатуры).
  3. Обязательно умножить цену и разделить количество на коэффициент выбранной упаковки. Это критически важно, чтобы итоговые суммы в заказе сформировались корректно.

Как получить значение дополнительного реквизита номенклатуры программно

В процессе доработки часто требуется завести дополнительный реквизит для номенклатуры (например, УпаковкаПоУмолчанию) и ориентироваться на него. Если вам необходимо программно проверить это значение (например, в общем модуле при обработке проведения или при подборе), воспользуемся запросом к регистру сведений ЗначенияСвойствОбъектов.

Рассмотрим подробнее код запроса для получения значения доп. реквизита:


ВЫБРАТЬ
    ЗначенияСвойствОбъектов.Значение
ИЗ
    РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
ГДЕ
    ЗначенияСвойствОбъектов.Объект = &Номенклатура
    И ЗначенияСвойствОбъектов.Свойство = &ДопРеквизит

В данном запросе параметр &Номенклатура — это ссылка на проверяемый элемент справочника, а &ДопРеквизит — ссылка на ПВХ ДополнительныеРеквизитыИСведения. Полученное Значение можно использовать в условиях вашего кода, чтобы подставлять нужную упаковку или вызывать отказ при проведении, если условия бизнес-логики не выполнены.

← На главную