Как программно получить список основных средств по организации в 1С:ERP 2.4

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

При работе с 1С:ERP Управление предприятием (начиная с версии 2.4 и выше) разработчики часто сталкиваются с задачей программного извлечения данных по основным средствам (ОС). Сложность заключается в том, что система поддерживает две разные архитектуры учета — версию 2.2 и версию 2.4. В зависимости от выбранной настройки в базе, данные будут храниться в разных регистрах. Разберем пошагово, как определить версию учета и какими запросами получить нужные данные.

Определяем версию учета внеоборотных активов

Прежде чем приступать к написанию кода, нам необходимо выяснить, какой механизм учета используется в конкретной информационной базе. Если мы обратимся к регистрам версии 2.2, когда в системе включена версия 2.4, мы получим пустые результаты или некорректные данные.

Для проверки версии учета в интерфейсе программы пройдем по следующему пути: НСИ и администрирование — Настройка НСИ и разделов — Внеоборотные активы — Учет внеоборотных активов. Здесь расположен переключатель между версиями 2.2 и 2.4. Проанализируем ситуацию: если ваша база обновлена до ERP 2.4.6 и выше, скорее всего, используется версия 2.4, так как версия 2.2 считается устаревшей и поддерживается для совместимости.

Программно проверить эту настройку можно через чтение функциональных опций или констант, отвечающих за ведение учета ВА. Это важно для универсальных обработок, которые должны работать в разных базах.

Где хранятся данные: Справочники vs Регистры

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

Решение для версии учета 2.4

Рассмотрим наиболее актуальный вариант для современных конфигураций. В версии 2.4 логика учета была переработана для сближения с бухгалтерским учетом. Основным источником данных здесь выступает регистр сведений МестонахождениеОСБухгалтерскийУчет.

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


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

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

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

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

Дополнительная проверка состояния (Принятие к учету)

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

Объединим данные о местонахождении и текущем состоянии. Рассмотрим пример сложного запроса:


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

Решение для версии учета 2.2

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

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

Практические рекомендации

При написании программного кода для получения ОС, всегда учитывайте следующие моменты:

  1. Использование СрезаПоследних: Всегда передавайте в параметры виртуальной таблицы дату. Если параметр &Период не указан, 1С берет данные на самую последнюю запись в будущем, что может быть некорректно при наличии документов, проведенных будущим числом.
  2. Фильтрация на уровне БД: Устанавливайте фильтр Организация = &Организация непосредственно в параметрах виртуальной таблицы (в скобках после имени регистра), а не в секции ГДЕ. Это значительно ускоряет выполнение запроса, так как СУБД отсекает лишние данные сразу.
  3. Учет арендованных ОС: Если ваша задача включает поиск ОС, принятых на забалансовый учет (аренда, лизинг), вам может потребоваться дополнительно проанализировать регистр ПорядокУчетаОСБухгалтерскийУчет, где указан признак собственности.

Таким образом, мы выяснили, что для решения задачи в 1С:ERP 2.4 необходимо сначала определить версию учета в настройках НСИ, а затем использовать запрос к регистру МестонахождениеОСБухгалтерскийУчет (для 2.4) или СостоянияОСОрганизаций (для 2.2). Помните, что справочник ОбъектыЭксплуатации является лишь реестром названий, а вся финансовая логика сосредоточена в регистрах сведений.

← На главную