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

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

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

Архитектурная причина поведения системы

Проанализируем структуру хранения данных в конфигурациях на платформе 1С (в частности, в «1С:Управление производственным предприятием 1.3» и схожих решениях):

  1. Единица хранения остатков — это базовая единица, в которой ведутся все количественные остатки в регистрах накопления (таких как ТоварыНаСкладах, ПартииТоваровНаСкладах). Ее коэффициент всегда строго равен единице.
  2. Единица для отчетов — реквизит, предназначенный исключительно для формирования аналитических отчетов, где требуется пересчет количества по коэффициенту. В типовые алгоритмы заполнения документов этот реквизит штатно не заложен.
  3. Механизм заполнения строк документов — при выборе номенклатуры в табличной части срабатывают централизованные процедуры общего модуля ОбработкаТабличныхЧастей, где жестко прописано обращение к реквизиту Номенклатура.ЕдиницаХраненияОстатков.

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

Способ 1. Программная доработка общего модуля

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

Разберем логику доработки:

  1. Определяем единицу по умолчанию: проверяем наличие заполненной единицы для отчетов (или отдельного дополнительного реквизита «Единица для продаж»).
  2. Заполняем единицу и коэффициент в текущей строке документа.
  3. Вызываем стандартный пересчет цен и сумм.

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


Если ЗначениеЗаполнено(СтрокаТабличнойЧасти.Номенклатура) Тогда
    // Проверяем наличие единицы для отчетов
    Если ЗначениеЗаполнено(СтрокаТабличнойЧасти.Номенклатура.ЕдиницаДляОтчетов) Тогда
        СтрокаТабличнойЧасти.ЕдиницаИзмерения = СтрокаТабличнойЧасти.Номенклатура.ЕдиницаДляОтчетов;
    Иначе
        СтрокаТабличнойЧасти.ЕдиницаИзмерения = СтрокаТабличнойЧасти.Номенклатура.ЕдиницаХраненияОстатков;
    КонецЕсли;

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

Способ 2. Методологическое разделение номенклатуры (без доработки кода)

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

  1. Создаем новую карточку номенклатуры с базовой единицей «шт.».
  2. Переводим существующие остатки с исходной позиции (в пог. м) на новую позицию (в шт.) с помощью документа КомплектацияНоменклатуры (с видом операции «Комплектация» или «Разукомплектация») либо парой документов СписаниеТоваров и ОприходованиеТоваров.
  3. Старую карточку номенклатуры переносим в архивную папку или запрещаем для использования в новых документах. Дальнейшие закупки и продажи оформляются уже по новой карточке.

Способ 3. Использование внешних печатных форм

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

В этом случае в самом документе учет ведется в пог. м, а алгоритм формирования печатной формы на лету выполняет пересчет:

  1. Количество для печати рассчитывается как: Количество * КоэффициентХранения / КоэффициентОтчетов.
  2. Цена за единицу пересчитывается делением суммы строки на полученное количество в штуках.

Особенности работы с ценообразованием

При переходе на продажу в альтернативных единицах измерения обратим внимание на подсистему ценообразования:

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

← На главную