При разработке печатных форм, отчетов или механизмов выгрузки данных программисты часто сталкиваются с необходимостью вывести стоимость основного средства (ОС). На первый взгляд задача кажется простой — достаточно найти нужное поле в справочнике ОсновныеСредства. Однако в системе 1С стоимость не является статичным реквизитом самого справочника, так как она может меняться со временем, зависеть от вида учета (бухгалтерский или налоговый) и различных событий (модернизация, переоценка). Рассмотрим подробно, какими способами можно получить эти данные программно.
Если перед нами стоит задача получить стоимость, которая была зафиксирована в момент принятия объекта к учету (первоначальную стоимость), то самым правильным и быстрым решением будет обращение к специализированным регистрам сведений. Разберем, как это работает в типовых конфигурациях, таких как «1С:Бухгалтерия 3.0».
Для бухгалтерского учета данные хранятся в регистре ПервоначальныеСведенияОСБухгалтерскийУчет. Проанализируем пример запроса, который позволяет извлечь стоимость по конкретной ссылке на основное средство:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПервоначальныеСведения.ПервоначальнаяСтоимость КАК Стоимость
|ИЗ
| РегистрСведений.ПервоначальныеСведенияОСБухгалтерскийУчет.СрезПоследних(&Период, ОсновноеСредство = &ОС) КАК ПервоначальныеСведения";
Запрос.УстановитьПараметр("ОС", СсылкаНаОС);
Запрос.УстановитьПараметр("Период", ТекущаяДата());
РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();
Если Выборка.Следующий() Тогда
СтоимостьОС = Выборка.Стоимость;
КонецЕсли;
Важно помнить, что если вам нужны данные для налогового учета, следует обращаться к параллельному регистру — ПервоначальныеСведенияОСНалоговыйУчет. Разберем по шагам, почему это важно: правила включения затрат в первоначальную стоимость в БУ и НУ могут различаться (например, из-за курсовых разниц или включения определенных пошлин), поэтому цифры в этих регистрах могут не совпадать.
Ситуация усложняется, когда нам нужна не первоначальная, а актуальная (текущая) стоимость на определенную дату. Первоначальная стоимость из регистра сведений остается неизменной, даже если объект был модернизирован. Чтобы получить реальную восстановительную стоимость, мы должны обратиться к бухгалтерским итогам.
Проанализируем методику получения данных со счетов учета. Стоимость основного средства — это дебетовое сальдо по счету 01 «Основные средства». Посмотрим на пример кода, использующего объект РегистрыБухгалтерии для получения остатка:
СчетУчета = ПланыСчетов.Хозрасчетный.ОсновныеСредства;
Фильтр = Новый Структура("Субконто1", СсылкаНаОС);
Остатки = РегистрыБухгалтерии.Хозрасчетный.Остатки(ДатаОтчета, СчетУчета, , Фильтр);
Если Остатки.Количество() > 0 Тогда
ТекущаяСтоимость = Остатки[0].СуммаОстатокДт;
КонецЕсли;
Рассмотрим ситуацию, когда в печатной форме требуется вывести остаточную стоимость. В этом случае алгоритм действий будет следующим:
ОстаточнаяСтоимость = Сумма01 - Сумма02.В современных решениях на базе «1С:ERP», «Комплексная автоматизация» или «Бухгалтерия предприятия 3.0» разработчики часто используют готовые функции из общих модулей. Это позволяет не писать громоздкие запросы вручную и учитывать все нюансы законодательства, реализованные в коде вендора.
Выясним, какие модули могут быть полезны. Например, в модуле УчетОсновныхСредств часто встречаются функции типа ПолучитьДанныеОС. Посмотрим, как это упрощает работу программиста:
ПараметрыОС = Новый Структура;
ПараметрыОС.Вставить("Организация", Организация);
ПараметрыОС.Вставить("НаДату", ДатаПечати);
Данные = УчетОсновныхСредств.ДанныеДляПечатныхФормОС(СписокОС, ПараметрыОС);
Такой подход гарантирует, что вы получите корректную информацию, учитывающую состояние объекта на дату формирования документа, включая все изменения стоимости после модернизации. Выясним причину популярности этого метода: он автоматически учитывает специфику конфигурации (например, регистры накопления вместо регистров бухгалтерии в ERP).
Разберем ситуацию, когда стоимость ОС изменилась. Если вы используете только данные регистра ПервоначальныеСведенияОС, вы рискуете вывести в печатную форму неактуальную цену. После проведения документа «Модернизация ОС» в бухгалтерском учете сумма на счете 01 увеличивается, но запись в регистре «Первоначальные сведения» остается прежней, так как она фиксирует состояние только на момент ввода в эксплуатацию.
Для получения истории изменения стоимости в продвинутых конфигурациях (ERP/КА) рекомендуется использовать регистр накопления СтоимостьОС. Проанализируем структуру этого регистра: он содержит измерения «ОсновноеСредство» и «Организация», а ресурс «Стоимость» позволяет увидеть динамику изменения цены объекта.
Важные моменты при работе со стоимостью:
Период. Если не указать дату, система вернет итоги на «пустую» дату или на текущий момент, что может привести к ошибкам в архивных печатных формах.Сумма (в рублях), а не валютную сумму, если это не предусмотрено формой.Таким образом, мы рассмотрели основные способы получения стоимости. Выбор конкретного метода зависит от ваших целей: для фиксации цены покупки используйте регистры сведений, а для отражения реального состояния активов на текущий момент — остатки по счетам 01 и 02 или функции типовых общих модулей.