Как формируется себестоимость товара в 1С:Торговля и Склад 9.2

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

Вопрос формирования себестоимости в конфигурации «Торговля и Склад 9.2» (на платформе 1С 7.7) является фундаментальным для корректного ведения управленческого учета. Часто пользователи и начинающие разработчики сталкиваются с ситуацией, когда в отчетах или при формировании цен себестоимость отображается как нулевая, хотя закупки проводились. В рамках данной статьи мы подробно разберем механизмы оприходования ТМЦ, проанализируем программный код системы и выясним основные причины возникновения ошибок в расчете стоимости запасов.

Основные документы, формирующие себестоимость

Первоначальное формирование себестоимости в системе происходит в момент фиксации прихода товара на склад. Рассмотрим основные документы, которые участвуют в этом процессе:

  1. Поступление ТМЦ: основной документ для отражения закупок у поставщика.
  2. Ввод остатков ТМЦ: используется при запуске системы для внесения данных о товарах, уже находящихся на складах.
  3. Оприходование ТМЦ: применяется для фиксации излишков, выявленных в ходе инвентаризации.

Все эти документы при проведении обращаются к глобальной процедуре глОприходованиеПартийТМЦ, которая делает записи в один из ключевых регистров системы — ПартииНаличие. Именно в этом регистре в разрезе партий хранится количество и стоимостная оценка товара.

Разбор программного кода оприходования партий

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


// Процедура производит оприходование ТМЦ по регистру "ПартииНаличие"
Процедура глОприходованиеПартийТМЦ(Конт,ТаблНоменклатуры,СписокПараметров, НУ24 = 0) Экспорт 
    СпрПартии = СоздатьОбъект("Справочник.Партии"); 
    РегПартии = Конт.Регистр.ПартииНаличие; 
    Фирма = СписокПараметров.Получить("Фирма"); 
    Склад = СписокПараметров.Получить("Склад"); 
    Поставщик = СписокПараметров.Получить("Контрагент"); 
    // ... получение других параметров ...

    ТаблНоменклатуры.ВыбратьСтроки; 
    Пока ТаблНоменклатуры.ПолучитьСтроку=1 Цикл 
        Номенклатура = ТаблНоменклатуры.Номенклатура; 
        
        // Измерения регистра
        РегПартии.Фирма = Фирма; 
        РегПартии.МОЛ = Склад.МОЛ; 
        РегПартии.Номенклатура = Номенклатура; 
        РегПартии.СтатусПартии = глПолучитьСтатусПартииПрихода(ТаблНоменклатуры.ВидТМЦ,Номенклатура,КодОперации, Склад); 
        
        // Определение партии в зависимости от учетной политики
        УчПолитика = Фирма.ЮрЛицо.МетодРасчетаСебестоимости.Получить(Конт.ДатаДок);
        Если (УчПолитика = Перечисление.МетодыРасчетаСебестоимости.FIFO) или (УчПолитика = Перечисление.МетодыРасчетаСебестоимости.LIFO) Тогда 
            ЗакупочнаяЦена = ?(ТаблНоменклатуры.Количество=0, 0, Окр(ТаблНоменклатуры.Сумма / ТаблНоменклатуры.Количество,2,1)); 
            РегПартии.Партия = глЗаполнитьПартию(СпрПартии, ТаблНоменклатуры.Партия, Поставщик,ДоговорПоставщика,ТекДок,ЗакупочнаяЦена); 
            РегПартии.ДатаПартии = ТекДок.ДатаДок; 
        Иначе 
            // При методе "По среднему" партия может не заполняться для целей списания
            РегПартии.Партия = ""; 
            РегПартии.ДатаПартии = ""; 
        КонецЕсли; 

        // Ресурсы (стоимостные показатели)
        РегПартии.Количество = ТаблНоменклатуры.Количество; 
        РегПартии.СуммаУпр = ТаблНоменклатуры.СуммаУпр; 
        РегПартии.СуммаРуб = ТаблНоменклатуры.СуммаРуб; 
        РегПартии.СуммаБезНДС = ТаблНоменклатуры.СуммаРуб - ТаблНоменклатуры.СуммаНДС; 
        
        РегПартии.ДвижениеПриходВыполнить(); 
    КонецЦикла; 
КонецПроцедуры

Из кода видно, что себестоимость фиксируется сразу в нескольких ресурсах: СуммаУпр (управленческая валюта), СуммаРуб (валюта регламентированного учета) и СуммаБезНДС. Если при анализе отчетов вы видите нулевые значения, необходимо проверить заполнение именно этих полей в движениях документа.

Влияние дополнительных расходов на себестоимость

Рассмотрим ситуацию, когда помимо цены поставщика в себестоимость должны входить затраты на логистику, таможенные пошлины или хранение. В ТиС 7.7 для этого используется документ «Поступление (доп. расходы)».

Важно помнить: чтобы сумма дополнительных расходов распределилась корректно, документ должен быть введен строго на основании соответствующего документа Поступление ТМЦ. В этом случае система распределит сумму расхода пропорционально стоимости или количеству товаров (в зависимости от настроек) и увеличит стоимостные ресурсы в регистре ПартииНаличие для конкретной партии. Проанализируем важный нюанс: доп. расходы изменяют данные в регистрах, но они автоматически не меняют цену в справочнике Цены. Это часто вводит пользователей в заблуждение при работе с обработкой «Формирование цен».

Почему себестоимость может быть равна нулю?

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

  1. Разрыв между Регистром и Справочником: Обработка «Формирование цен» чаще всего обращается к периодическому справочнику Цены. Если в документе Поступление ТМЦ на закладке «Дополнительно» не была установлена галочка «Обновлять цены в справочнике», то в регистре себестоимость будет, а в справочнике (и в обработке) — нет.
  2. Отрицательные остатки: Если в настройках разрешено списание товара в минус, то при проведении реализации товара, которого нет на складе, система не может найти партию для списания. В результате количество списывается, а себестоимость устанавливается равной нулю.
  3. Нарушение хронологии документов: Если документ прихода проведен позже (по времени), чем документ продажи в пределах одного дня, списание также может пройти по нулевой стоимости. Рассмотрим решение: необходимо регулярно выполнять Групповое проведение документов для восстановления последовательности.
  4. Учет по фирмам: В константах может быть включена настройка «Вести партионный учет в разрезе фирм». Если товар приходовался на Фирму А, а продается от Фирмы Б, система не увидит партию и спишет товар по нулевой стоимости (если не настроены правила передачи между фирмами).

Методы расчета: FIFO vs Средневзвешенная

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

Метод FIFO: Система жестко отслеживает каждую партию. При списании программа ищет самую старую по времени поступления партию и берет ее стоимость. Если партии не найдены (например, из-за пересортицы по аналитике), себестоимость не спишется.

Метод «По среднему»: Себестоимость рассчитывается в момент проведения документа как (Остаток суммы на складе / Остаток количества на складе). Этот метод более устойчив к выбору конкретных партий, но также требует отсутствия отрицательных остатков на момент проведения операции.

Практические рекомендации по проверке

Если вы обнаружили нулевую себестоимость, выполните следующие шаги:

Понимание того, что себестоимость в 1С 7.7 — это динамический показатель, зависящий от последовательности документов и корректности заполнения регистров, позволит вам эффективно управлять прибылью компании и избегать ошибок в отчетности.

← На главную