Как настроить автоматический учет кратности фасовки товара при оформлении заказа в 1С 7.7 Торговля и склад?

Программист 1С v7.7 Управленческий учет Торговля и дистрибуция
← На главную

При оптовых и мелкооптовых закупках часто возникает ситуация, когда поставщик отгружает товар исключительно фиксированными упаковками (например, коробками по 6, 12 или 100 штук), в то время как покупатель оформляет заказ в штуках. Если менеджер заполняет документ ЗаявкаПокупателя, ему приходится постоянно сверяться с внешними прайс-листами или тратить время на выяснение объема заводского короба. Разберем, почему в типовой конфигурации «1С:Торговля и склад 7.7» (редакция 9.2) эта задача не решается в один клик, и рассмотрим проверенные практические способы организации работы с кратностью фасовки.

Ограничения типового механизма единиц измерения в 1С:Платформе 7.7

Проанализируем базовую архитектуру учета номенклатуры в «1С:Торговля и склад 7.7». В типовой конфигурации предусмотрен справочник Номенклатура и подчиненный ему справочник Единицы. Каждая дополнительная единица измерения связывается с базовой единицей (как правило, «шт») через коэффициент пересчета Коэффициент.

При этом в платформе отсутствуют штатные механизмы принудительной кратности ввода количества. Выясним основные причины:

  1. Фиксированное начальное количество: при интерактивном добавлении новой строки в табличную часть документа или через стандартную обработку подбора поле Количество жестко инициализируется значением 1.
  2. Отсутствие понятия шага ввода: система не контролирует кратность введенного числа коэффициенту упаковки. Если ввести 7 штук при фасовке 3 штуки, программа проведет документ без предупреждений.
  3. Пересчет цен: выбор упаковки в качестве основной единицы влечет за собой автоматическое умножение цены за штуку на коэффициент упаковки, что часто не подходит для формирования счетов клиентам, привыкшим видеть цены за единицу изделия.

Ниже рассмотрим несколько вариантов решения: от организационно-типовых настроек без изменения конфигурации до программных доработок экранных форм и создания автоматизированных рабочих мест (АРМ).

Вариант 1. Настройка подчиненных единиц измерения без доработки конфигуратора

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

  1. В карточке номенклатуры базовой единицей устанавливаем «шт» (коэффициент равен 1). Все складские остатки и внутренний учет будут вестись в штуках.
  2. В подчиненном справочнике Единицы заводим дополнительную единицу «упак» (или «кор»), где в поле Коэффициент указываем размер фасовки (например, 6 или 100).
  3. Если необходимо, чтобы фасовка всегда была на виду у менеджера при выборе товара, указываем размер коробки прямо в рабочем наименовании позиции: Мыло туалетное 90г (упак. 60 шт). Это избавит оператора от необходимости открывать прайс-листы поставщиков.

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

Вариант 2. Программная подстановка фасовки и контроль кратности в документе

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

Для хранения кратности добавим в справочник Номенклатура числовой реквизит КратностьФасовки (точность 0) либо будем считывать коэффициент первой найденной нештучной единицы из подчиненного справочника. Разберем реализацию логики на уровне модуля формы документа.

В процедуре, которая отрабатывает при выборе или изменении номенклатуры в строке табличной части (формула колонки Товар), заменим стандартную подстановку единицы на считывание фасовки:


// Фрагмент процедуры обработки строки документа
Процедура ПриВыбореТовара()
    Перем ТекТовар, Кратность;
    ТекТовар = Товар;
    Если ПустоеЗначение(ТекТовар) = 0 Тогда
        // Считываем фасовку из реквизита номенклатуры
        Кратность = ТекТовар.КратностьФасовки;
        Если Кратность > 0 Тогда
            Количество = Кратность;
        Иначе
            Количество = 1;
        КонецЕсли;
        // Единица измерения остается базовой
        Единица = ТекТовар.БазоваяЕдиница;
        Коэффициент = 1;
        ПересчитатьСтроку();
    КонецЕсли;
КонецПроцедуры

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


Процедура ПриИзмененииКоличества()
    Перем Кратность, ОстатокОтДеления;
    Кратность = Товар.КратностьФасовки;
    Если Кратность > 1 Тогда
        ОстатокОтДеления = Количество - Цел(Количество / Кратность) * Кратность;
        Если ОстатокОтДеления <> 0 Тогда
            Предупреждение("Количество товара должно быть кратно упаковке (" + Кратность + " шт.)!");
            // Автоматическое округление в большую сторону
            Количество = Цел((Количество + Кратность - 1) / Кратность) * Кратность;
            ПересчитатьСтроку();
        КонецЕсли;
    КонецЕсли;
КонецПроцедуры

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

Вариант 3. Двухэтапная подгонка заказа под фасовку через АРМ

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

Рассмотрим архитектуру решения через разделение процесса на два шага:

  1. Фиксация исходной заявки: менеджер набивает документ ЗаявкаПокупателя в штуках в точности по данным клиента без каких-либо ограничений.
  2. Вызов специализированной обработки подгонки: по кнопке в документе открывается внешняя обработка (АРМ менеджера), которая анализирует строки заказа, сопоставляет их с кратностью фасовки поставщика и предлагает варианты округления:
    • Жесткое округление вверх: все количества подтягиваются до полного короба.
    • Округление по порогу: если клиент запросил больше половины упаковки, заказ округляется вверх до целой пачки; если меньше — позиция либо отбрасывается, либо согласуется индивидуально.
  3. Формирование скорректированного заказа: обработка перезаполняет табличную часть документа согласованными количествами или создает парный документ, сохраняя возможность вывести сравнительный отчет и согласовать корректировки с заказчиком.

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

← На главную