Как получить список основных средств и дату их ввода в эксплуатацию в 1С:УПП

Программист 1С v8.3 (Обычные формы) Бухгалтерский учет Промышленность, строительство и АПК
← На главную

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

Использование регистра Состояния ОС организаций

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

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


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

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

Получение точной даты ввода в эксплуатацию

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

Давайте совместим данные о текущем состоянии и первоначальные сведения, чтобы получить полную картину. Для этого мы применим ЛЕВОЕ СОЕДИНЕНИЕ, чтобы не потерять объекты, по которым по какой-то причине не заполнены первоначальные данные.


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

Учет специфики передачи ОС между организациями

Ситуация усложняется, если одно и то же основное средство передавалось между юридическими лицами внутри одной базы (например, продажа из Организации А в Организацию Б и обратно). В 1С:УПП справочник ОсновныеСредства является общим, но учет ведется в разрезе организаций.

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

Правильный подход требует обязательной передачи параметра Организация в виртуальную таблицу:


// В параметрах виртуальной таблицы указываем отбор
РегистрСведений.СостоянияОСОрганизаций.СрезПоследних(&Период, Организация = &Организация)

Решение через временные таблицы для сложной истории

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

  1. Создаем временную таблицу актуальных ОС — выбираем те, которые на текущий момент не имеют состояния «Снято с учета».
  2. Создаем временную таблицу дат ввода — выбираем минимальный (первый) период из регистра состояний с фильтром «Введено в эксплуатацию».
  3. Соединяем результаты для получения итогового отчета.

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

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

Дополнительный контроль через местонахождение

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

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

Важные моменты для запоминания:

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

← На главную