При ведении торгового и складского учета часто возникает ситуация, когда товар хранится на складе в одной единице измерения (например, в погонных метрах), а продается клиентам в другой (в штуках). При попытке указать в карточке номенклатуры штуки как Единицу для отчетов пользователи сталкиваются с тем, что в документах «Счет на оплату покупателю», «Заказ покупателя» и «Реализация товаров и услуг» все равно по умолчанию подставляется единица хранения остатков. Разберем, почему программа ведет себя именно так и какими способами можно настроить автоматическое заполнение требуемой единицы.
Проанализируем структуру хранения данных в конфигурациях на платформе 1С (в частности, в «1С:Управление производственным предприятием 1.3» и схожих решениях):
ТоварыНаСкладах, ПартииТоваровНаСкладах). Ее коэффициент всегда строго равен единице.ОбработкаТабличныхЧастей, где жестко прописано обращение к реквизиту Номенклатура.ЕдиницаХраненияОстатков.Важно: Нельзя просто изменить единицу хранения остатков в карточке товара, по которому уже были движения. В регистрах хранится только числовое значение количества, поэтому смена базовой единицы задним числом приведет к искажению исторических остатков и себестоимости.
Если требуется, чтобы при выборе номенклатуры в строки документов автоматически подставлялась единица, отличная от единицы хранения остатков, необходимо скорректировать процедуру заполнения реквизитов строки в модуле ОбработкаТабличныхЧастей.
Разберем логику доработки:
Пример кода в процедуре заполнения единиц измерения табличной части:
Если ЗначениеЗаполнено(СтрокаТабличнойЧасти.Номенклатура) Тогда
// Проверяем наличие единицы для отчетов
Если ЗначениеЗаполнено(СтрокаТабличнойЧасти.Номенклатура.ЕдиницаДляОтчетов) Тогда
СтрокаТабличнойЧасти.ЕдиницаИзмерения = СтрокаТабличнойЧасти.Номенклатура.ЕдиницаДляОтчетов;
Иначе
СтрокаТабличнойЧасти.ЕдиницаИзмерения = СтрокаТабличнойЧасти.Номенклатура.ЕдиницаХраненияОстатков;
КонецЕсли;
// Устанавливаем актуальный коэффициент пересчета
Если ЗначениеЗаполнено(СтрокаТабличнойЧасти.ЕдиницаИзмерения) Тогда
СтрокаТабличнойЧасти.Коэффициент = СтрокаТабличнойЧасти.ЕдиницаИзмерения.Коэффициент;
Иначе
СтрокаТабличнойЧасти.Коэффициент = 1;
КонецЕсли;
КонецЕсли;
Если внесение изменений в типовую конфигурацию нежелательно, наиболее корректным решением является разделение номенклатурных позиций:
КомплектацияНоменклатуры (с видом операции «Комплектация» или «Разукомплектация») либо парой документов СписаниеТоваров и ОприходованиеТоваров.В случаях, когда складской и финансовый учет предприятия должен оставаться в погонных метрах, а покупателю требуется выставлять документы исключительно в штуках, оптимально использовать внешнюю печатную форму счета на оплату или УПД.
В этом случае в самом документе учет ведется в пог. м, а алгоритм формирования печатной формы на лету выполняет пересчет:
Количество * КоэффициентХранения / КоэффициентОтчетов.При переходе на продажу в альтернативных единицах измерения обратим внимание на подсистему ценообразования:
В документе УстановкаЦенНоменклатуры цена всегда фиксируется для конкретного элемента справочника ЕдиницыИзмерения. Если при выборе единицы «шт.» цена в документах продажи не подтягивается автоматически, необходимо зарегистрировать актуальные цены документом установки цен именно для единицы «шт.», либо убедиться, что используемый тип цен поддерживает автоматический пересчет по коэффициенту относительно базовой цены.