Как программно получить стоимость основного средства в 1С?

Программист 1C:Бухгалтерия Бухгалтерский учет IT и автоматизация бизнеса
← На главную

При разработке печатных форм, отчетов или механизмов выгрузки данных программисты часто сталкиваются с необходимостью вывести стоимость основного средства (ОС). На первый взгляд задача кажется простой — достаточно найти нужное поле в справочнике ОсновныеСредства. Однако в системе 1С стоимость не является статичным реквизитом самого справочника, так как она может меняться со временем, зависеть от вида учета (бухгалтерский или налоговый) и различных событий (модернизация, переоценка). Рассмотрим подробно, какими способами можно получить эти данные программно.

Использование регистра сведений «Первоначальные сведения ОС»

Если перед нами стоит задача получить стоимость, которая была зафиксирована в момент принятия объекта к учету (первоначальную стоимость), то самым правильным и быстрым решением будет обращение к специализированным регистрам сведений. Разберем, как это работает в типовых конфигурациях, таких как «1С:Бухгалтерия 3.0».

Для бухгалтерского учета данные хранятся в регистре ПервоначальныеСведенияОСБухгалтерскийУчет. Проанализируем пример запроса, который позволяет извлечь стоимость по конкретной ссылке на основное средство:


Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |	ПервоначальныеСведения.ПервоначальнаяСтоимость КАК Стоимость
    |ИЗ
    |	РегистрСведений.ПервоначальныеСведенияОСБухгалтерскийУчет.СрезПоследних(&Период, ОсновноеСредство = &ОС) КАК ПервоначальныеСведения";

Запрос.УстановитьПараметр("ОС", СсылкаНаОС);
Запрос.УстановитьПараметр("Период", ТекущаяДата());

РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();

Если Выборка.Следующий() Тогда
    СтоимостьОС = Выборка.Стоимость;
КонецЕсли;

Важно помнить, что если вам нужны данные для налогового учета, следует обращаться к параллельному регистру — ПервоначальныеСведенияОСНалоговыйУчет. Разберем по шагам, почему это важно: правила включения затрат в первоначальную стоимость в БУ и НУ могут различаться (например, из-за курсовых разниц или включения определенных пошлин), поэтому цифры в этих регистрах могут не совпадать.

Получение текущей стоимости через регистр бухгалтерии

Ситуация усложняется, когда нам нужна не первоначальная, а актуальная (текущая) стоимость на определенную дату. Первоначальная стоимость из регистра сведений остается неизменной, даже если объект был модернизирован. Чтобы получить реальную восстановительную стоимость, мы должны обратиться к бухгалтерским итогам.

Проанализируем методику получения данных со счетов учета. Стоимость основного средства — это дебетовое сальдо по счету 01 «Основные средства». Посмотрим на пример кода, использующего объект РегистрыБухгалтерии для получения остатка:


СчетУчета = ПланыСчетов.Хозрасчетный.ОсновныеСредства;
Фильтр = Новый Структура("Субконто1", СсылкаНаОС);

Остатки = РегистрыБухгалтерии.Хозрасчетный.Остатки(ДатаОтчета, СчетУчета, , Фильтр);

Если Остатки.Количество() > 0 Тогда
    ТекущаяСтоимость = Остатки[0].СуммаОстатокДт;
КонецЕсли;

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

  1. Получаем дебетовый остаток по счету 01 (Первоначальная/Восстановительная стоимость).
  2. Получаем кредитовый остаток по счету 02 (Начисленная амортизация) по тому же объекту ОС.
  3. Вычисляем разницу: ОстаточнаяСтоимость = Сумма01 - Сумма02.

Использование программного интерфейса типовых конфигураций

В современных решениях на базе «1С:ERP», «Комплексная автоматизация» или «Бухгалтерия предприятия 3.0» разработчики часто используют готовые функции из общих модулей. Это позволяет не писать громоздкие запросы вручную и учитывать все нюансы законодательства, реализованные в коде вендора.

Выясним, какие модули могут быть полезны. Например, в модуле УчетОсновныхСредств часто встречаются функции типа ПолучитьДанныеОС. Посмотрим, как это упрощает работу программиста:


ПараметрыОС = Новый Структура;
ПараметрыОС.Вставить("Организация", Организация);
ПараметрыОС.Вставить("НаДату", ДатаПечати);

Данные = УчетОсновныхСредств.ДанныеДляПечатныхФормОС(СписокОС, ПараметрыОС);

Такой подход гарантирует, что вы получите корректную информацию, учитывающую состояние объекта на дату формирования документа, включая все изменения стоимости после модернизации. Выясним причину популярности этого метода: он автоматически учитывает специфику конфигурации (например, регистры накопления вместо регистров бухгалтерии в ERP).

Нюансы с модернизацией и событиями ОС

Разберем ситуацию, когда стоимость ОС изменилась. Если вы используете только данные регистра ПервоначальныеСведенияОС, вы рискуете вывести в печатную форму неактуальную цену. После проведения документа «Модернизация ОС» в бухгалтерском учете сумма на счете 01 увеличивается, но запись в регистре «Первоначальные сведения» остается прежней, так как она фиксирует состояние только на момент ввода в эксплуатацию.

Для получения истории изменения стоимости в продвинутых конфигурациях (ERP/КА) рекомендуется использовать регистр накопления СтоимостьОС. Проанализируем структуру этого регистра: он содержит измерения «ОсновноеСредство» и «Организация», а ресурс «Стоимость» позволяет увидеть динамику изменения цены объекта.

Важные моменты при работе со стоимостью:

  1. Дата запроса: Всегда устанавливайте параметр Период. Если не указать дату, система вернет итоги на «пустую» дату или на текущий момент, что может привести к ошибкам в архивных печатных формах.
  2. Групповой учет: В некоторых случаях (например, учет библиотечных фондов) одно основное средство может содержать несколько единиц в количественном выражении. Тогда стоимость одного объекта нужно вычислять путем деления общей суммы на количество.
  3. Валюта: Если организация ведет деятельность с валютными активами, убедитесь, что вы берете ресурс Сумма (в рублях), а не валютную сумму, если это не предусмотрено формой.

Таким образом, мы рассмотрели основные способы получения стоимости. Выбор конкретного метода зависит от ваших целей: для фиксации цены покупки используйте регистры сведений, а для отражения реального состояния активов на текущий момент — остатки по счетам 01 и 02 или функции типовых общих модулей.

← На главную