Вопрос формирования себестоимости в конфигурации «Торговля и Склад 9.2» (на платформе 1С 7.7) является фундаментальным для корректного ведения управленческого учета. Часто пользователи и начинающие разработчики сталкиваются с ситуацией, когда в отчетах или при формировании цен себестоимость отображается как нулевая, хотя закупки проводились. В рамках данной статьи мы подробно разберем механизмы оприходования ТМЦ, проанализируем программный код системы и выясним основные причины возникновения ошибок в расчете стоимости запасов.
Первоначальное формирование себестоимости в системе происходит в момент фиксации прихода товара на склад. Рассмотрим основные документы, которые участвуют в этом процессе:
Все эти документы при проведении обращаются к глобальной процедуре глОприходованиеПартийТМЦ, которая делает записи в один из ключевых регистров системы — ПартииНаличие. Именно в этом регистре в разрезе партий хранится количество и стоимостная оценка товара.
Проанализируем фрагмент кода, отвечающий за логику записи данных в регистр партий. Это поможет понять, какие измерения и ресурсы заполняются системой:
// Процедура производит оприходование ТМЦ по регистру "ПартииНаличие"
Процедура глОприходованиеПартийТМЦ(Конт,ТаблНоменклатуры,СписокПараметров, НУ24 = 0) Экспорт
СпрПартии = СоздатьОбъект("Справочник.Партии");
РегПартии = Конт.Регистр.ПартииНаличие;
Фирма = СписокПараметров.Получить("Фирма");
Склад = СписокПараметров.Получить("Склад");
Поставщик = СписокПараметров.Получить("Контрагент");
// ... получение других параметров ...
ТаблНоменклатуры.ВыбратьСтроки;
Пока ТаблНоменклатуры.ПолучитьСтроку=1 Цикл
Номенклатура = ТаблНоменклатуры.Номенклатура;
// Измерения регистра
РегПартии.Фирма = Фирма;
РегПартии.МОЛ = Склад.МОЛ;
РегПартии.Номенклатура = Номенклатура;
РегПартии.СтатусПартии = глПолучитьСтатусПартииПрихода(ТаблНоменклатуры.ВидТМЦ,Номенклатура,КодОперации, Склад);
// Определение партии в зависимости от учетной политики
УчПолитика = Фирма.ЮрЛицо.МетодРасчетаСебестоимости.Получить(Конт.ДатаДок);
Если (УчПолитика = Перечисление.МетодыРасчетаСебестоимости.FIFO) или (УчПолитика = Перечисление.МетодыРасчетаСебестоимости.LIFO) Тогда
ЗакупочнаяЦена = ?(ТаблНоменклатуры.Количество=0, 0, Окр(ТаблНоменклатуры.Сумма / ТаблНоменклатуры.Количество,2,1));
РегПартии.Партия = глЗаполнитьПартию(СпрПартии, ТаблНоменклатуры.Партия, Поставщик,ДоговорПоставщика,ТекДок,ЗакупочнаяЦена);
РегПартии.ДатаПартии = ТекДок.ДатаДок;
Иначе
// При методе "По среднему" партия может не заполняться для целей списания
РегПартии.Партия = "";
РегПартии.ДатаПартии = "";
КонецЕсли;
// Ресурсы (стоимостные показатели)
РегПартии.Количество = ТаблНоменклатуры.Количество;
РегПартии.СуммаУпр = ТаблНоменклатуры.СуммаУпр;
РегПартии.СуммаРуб = ТаблНоменклатуры.СуммаРуб;
РегПартии.СуммаБезНДС = ТаблНоменклатуры.СуммаРуб - ТаблНоменклатуры.СуммаНДС;
РегПартии.ДвижениеПриходВыполнить();
КонецЦикла;
КонецПроцедуры
Из кода видно, что себестоимость фиксируется сразу в нескольких ресурсах: СуммаУпр (управленческая валюта), СуммаРуб (валюта регламентированного учета) и СуммаБезНДС. Если при анализе отчетов вы видите нулевые значения, необходимо проверить заполнение именно этих полей в движениях документа.
Рассмотрим ситуацию, когда помимо цены поставщика в себестоимость должны входить затраты на логистику, таможенные пошлины или хранение. В ТиС 7.7 для этого используется документ «Поступление (доп. расходы)».
Важно помнить: чтобы сумма дополнительных расходов распределилась корректно, документ должен быть введен строго на основании соответствующего документа Поступление ТМЦ. В этом случае система распределит сумму расхода пропорционально стоимости или количеству товаров (в зависимости от настроек) и увеличит стоимостные ресурсы в регистре ПартииНаличие для конкретной партии. Проанализируем важный нюанс: доп. расходы изменяют данные в регистрах, но они автоматически не меняют цену в справочнике Цены. Это часто вводит пользователей в заблуждение при работе с обработкой «Формирование цен».
Выясним основные причины, по которым система может показывать нулевую себестоимость даже после проведения поступлений:
Цены. Если в документе Поступление ТМЦ на закладке «Дополнительно» не была установлена галочка «Обновлять цены в справочнике», то в регистре себестоимость будет, а в справочнике (и в обработке) — нет.Групповое проведение документов для восстановления последовательности.Проанализируем, как выбор метода расчета себестоимости в учетной политике влияет на данные в системе:
Метод FIFO: Система жестко отслеживает каждую партию. При списании программа ищет самую старую по времени поступления партию и берет ее стоимость. Если партии не найдены (например, из-за пересортицы по аналитике), себестоимость не спишется.
Метод «По среднему»: Себестоимость рассчитывается в момент проведения документа как (Остаток суммы на складе / Остаток количества на складе). Этот метод более устойчив к выбору конкретных партий, но также требует отсутствия отрицательных остатков на момент проведения операции.
Если вы обнаружили нулевую себестоимость, выполните следующие шаги:
Поступление ТМЦ), нажмите на нем правой кнопкой мыши и выберите пункт «Движения документа». Проверьте, заполнены ли ресурсы «СуммаРуб» и «СуммаУпр» в регистре ПартииНаличие.Тип цен, который используется в обработках формирования цен.Понимание того, что себестоимость в 1С 7.7 — это динамический показатель, зависящий от последовательности документов и корректности заполнения регистров, позволит вам эффективно управлять прибылью компании и избегать ошибок в отчетности.