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