Как в 1С:Бухгалтерия 3.0 отобрать запросом основные средства, принятые к учету и не списанные

Программист 1С v8.3 (Управляемые формы) Бухгалтерский учет
← На главную

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

Рассмотрим пошагово, как правильно составить запрос, какие регистры использовать и каких типичных ошибок следует избегать.

Анализ источников данных

Для получения полной картины по основным средствам нам необходимо объединить информацию из нескольких источников:

  1. Регистр сведений «Местонахождение ОС (бухгалтерский учет)» — здесь хранится информация о том, в каком подразделении находится ОС и за каким МОЛ оно закреплено.
  2. Регистр сведений «Состояния ОС организаций» — этот регистр фиксирует ключевые события в «жизни» объекта: принятие к учету, ввод в эксплуатацию, выбытие (списание).
  3. Регистр бухгалтерии «Хозрасчетный» — (опционально, но рекомендуется) для проверки наличия остатков на счетах 01 или 03, что гарантирует нахождение объекта на балансе.

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

Разбор типичных ошибок в запросах

Часто начинающие разработчики допускают критическую ошибку при соединении виртуальных таблиц СрезПоследних. Посмотрим на пример некорректного кода:


// ОШИБОЧНЫЙ ПРИМЕР
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияОСОрганизаций.СрезПоследних(&Период) КАК Состояния
ПО ВТ_ОтборПоМОЛ.НомерСтроки = Состояния.НомерСтроки
    И ВТ_ОтборПоМОЛ.ОсновноеСредство = Состояния.ОсновноеСредство

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

Вариант 1: Запрос через регистры сведений

Этот способ удобен, когда нам нужно быстро получить список ОС по конкретному МОЛ. Мы будем использовать СрезПоследних, чтобы получить актуальные данные на нужную дату.

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


ВЫБРАТЬ
    Местонахождение.ОсновноеСредство КАК ОсновноеСредство,
    Местонахождение.МОЛ КАК МОЛ,
    Местонахождение.Организация КАК Организация,
    Состояния.Состояние КАК Состояние
ИЗ
    РегистрСведений.МестонахождениеОСБухгалтерскийУчет.СрезПоследних(&Период, МОЛ = &МОЛ) КАК Местонахождение
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияОСОрганизаций.СрезПоследних(&Период, ) КАК Состояния
        ПО Местонахождение.ОсновноеСредство = Состояния.ОсновноеСредство
            И Местонахождение.Организация = Состояния.Организация
ГДЕ
    Состояния.Состояние <> ЗНАЧЕНИЕ(Перечисление.СостоянияОС.СнятоСУчета)

В данном запросе мы используем ВНУТРЕННЕЕ СОЕДИНЕНИЕ, так как нам нужны только те ОС, по которым есть записи о состояниях. Условие в блоке ГДЕ гарантирует, что мы исключаем объекты, которые уже выбыли из учета.

Вариант 2: Использование учетных данных (Регистр бухгалтерии)

Самым надежным способом определения, «живое» ОС или нет, является проверка дебетового остатка на счете 01 «Основные средства». Если ОС списано, сальдо по нему будет нулевым.

Рассмотрим подробнее схему такого запроса:

  1. Получаем остатки по счету 01 (или группе счетов 01, 03) из виртуальной таблицы Хозрасчетный.Остатки.
  2. Присоединяем данные о местонахождении (МОЛ).
  3. Присоединяем данные о текущем состоянии для информативности.

ВЫБРАТЬ
    ХозрасчетныйОстатки.Субконто1 КАК ОсновноеСредство,
    ХозрасчетныйОстатки.Организация КАК Организация,
    Местонахождение.МОЛ КАК МОЛ
ИЗ
    РегистрБухгалтерии.Хозрасчетный.Остатки(&Период, Счет В ИЕРАРХИИ (ЗНАЧЕНИЕ(ПланСчетов.Хозрасчетный.ОсновныеСредства)), , ) КАК ХозрасчетныйОстатки
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.МестонахождениеОСБухгалтерскийУчет.СрезПоследних(&Период, ) КАК Местонахождение
        ПО ХозрасчетныйОстатки.Субконто1 = Местонахождение.ОсновноеСредство
            И ХозрасчетныйОстатки.Организация = Местонахождение.Организация
ГДЕ
    (&ФильтрПоМОЛ = ЗНАЧЕНИЕ(Справочник.ФизическиеЛица.ПустаяСсылка) ИЛИ Местонахождение.МОЛ = &МОЛ)

Важный момент: В 1С:Бухгалтерия 3.0 на счетах 01 учет в разрезе МОЛ в стандартном плане счетов обычно не ведется (только по ОС и подразделениям). Именно поэтому мы обязательно используем ЛЕВОЕ СОЕДИНЕНИЕ с регистром сведений МестонахождениеОСБухгалтерскийУчет, который является первичным источником информации о материально-ответственных лицах.

Дополнительные проверки и нюансы

При работе с основными средствами в БП 3.0 Корп следует учитывать следующие особенности:

Проанализировав ситуацию, мы видим, что наиболее оптимальным является сочетание проверки остатков по счету 01 и данных из регистров сведений. Это позволяет не только найти ОС, закрепленные за сотрудником, но и подтвердить их реальное наличие на балансе предприятия.

← На главную