Документ «Изменение состояния ОС»
Документ переключает налоговые и амортизационные признаки основных средств: начислять ли амортизацию, является ли ОС объектом имущественного, транспортного и земельного налога. Он не делает бухгалтерских проводок — только записывает новое состояние ОС в информационные регистры на дату документа. Работает пачкой: одним документом меняем состояние сразу для группы ОС.
🎯 Что это и зачем
У каждого основного средства есть набор «переключателей», от которых зависит дальнейший учёт:
- Начислять амортизацию — будет ли по ОС считаться износ в бухгалтерском учёте.
- Объект имущественного налога — облагается ли ОС налогом на имущество.
- Объект транспортного налога — облагается ли ОС транспортным налогом.
- Объект земельного налога — облагается ли земельный участок земельным налогом.
Эти признаки задаются при принятии ОС к учёту, но со временем меняются: ОС вывели из эксплуатации и амортизацию надо остановить; имущество перестало облагаться налогом; машину продали, и она больше не объект транспортного налога. Документ «Изменение состояния ОС» — это и есть инструмент для таких переключений. Он фиксирует новое значение признака на свою дату, а все последующие расчёты (амортизация, декларации по налогам) уже опираются на это новое состояние.
Важно сразу понять главное: этот документ — про регистры сведений, а не про деньги. Он не формирует проводок Дт/Кт, ничего не списывает и не начисляет в бухгалтерском учёте. Он лишь сообщает системе: «с этой даты у этого ОС такие-то признаки». Само начисление/прекращение амортизации и расчёт налогов выполняют другие, регламентные документы — они читают состояние, которое записал наш документ.
Кто работает: бухгалтер по основным средствам, эпизодически — при переквалификации ОС, выводе из эксплуатации, изменении налогового статуса. Создаётся как с нуля, так и на основании карточки ОС.
🧭 Где найти в программе
Раздел «ОС и НМА» (учёт основных средств и нематериальных активов) → пункт «Изменение состояния ОС». Откроется журнал документов; новый создаём кнопкой «Создать».
Второй путь — из карточки самого ОС: открыть элемент справочника «Основные средства» и выбрать «Ввести на основании» → «Изменение состояния ОС».
Документ.ИзменениеСостоянияОС отсутствует в карте навигации Fresh (navigation-map.json) — точная подпись пункта меню и команды в текущей сборке знаний не подтверждена. Раздел «ОС и НМА» и расположение пункта определены по метаданным и описанию объекта (objects/Документ_ИзменениеСостоянияОС.md: «доступен через журнал документов по учёту основных средств»). При проверке во Fresh уточните фактическую подпись раздела/пункта. См. поле issues.👤 Часть 1. Для пользователя
Проходим по шагам: от выбора типа изменения до проведённого документа и проверки результата в регистрах. Документ устроен непривычно — сначала в отдельной форме настройки выбираем, что меняем, и только потом в таблице указываем новые значения.
Урок 1. Снятие ОС с начисления амортизации
Когда: ОС вывели из эксплуатации (законсервировали, готовят к выбытию) и амортизацию надо прекратить.
Шаг 1. Создаём документ
Раздел «ОС и НМА» → «Изменение состояния ОС» → «Создать». Откроется пустой документ.
Шаг 2. Заполняем шапку
- Организация — подставится основная или выбираем вручную (обязательно).
- Дата — дата, с которой действует новое состояние ОС.
- Структурное подразделение — при необходимости (необязательно).
- Событие ОС — классификатор события для журнала событий ОС (необязательно).
Шаг 3. Открываем форму настройки и выбираем тип изменения
Это ключевой и не самый очевидный шаг. Нажимаем кнопку «Настройка» — откроется форма, где галочками отмечаем, какие именно признаки будет менять документ: - ☐ Изменение начисления амортизации - ☐ Изменение имущественного налога - ☐ Изменение транспортного налога - ☐ Изменение земельного налога
Для нашего урока ставим галочку «Изменение начисления амортизации» и нажимаем «Записать и закрыть».
Шаг 4. Подбираем основные средства
В таблицу «ОС» добавляем строки кнопкой «Подбор» и выбираем нужные основные средства. Инвентарный номер подставится автоматически.
Шаг 5. Заполняем текущие данные и переключаем признак
Нажимаем «Заполнить текущими данными» — система проставит в строках текущие значения всех признаков (как ОС учитывается прямо сейчас). После этого в колонке «Начислять амортизацию» снимаем галочку у тех ОС, по которым останавливаем амортизацию.
Шаг 6. Проводим и проверяем
«Провести» или «Записать и закрыть». Результат смотрим не в Дт/Кт (проводок нет!), а в движениях документа по регистрам сведений или в отчётах по ОС — после проведения по выбранным ОС амортизация со следующего расчёта начисляться не будет.
Урок 2. Снятие/постановка ОС на учёт по налогам
Отличия от Урока 1 — только в том, какую галочку ставим в форме настройки: 1. В «Настройке» отмечаем нужный налог: «Изменение имущественного налога», «…транспортного» или «…земельного» (можно несколько сразу). 2. В таблице ОС появятся соответствующие колонки: «Объект имущественного налога», «…транспортного», «…земельного». 3. «Заполнить текущими данными» → переключаем нужный флаг (ставим — чтобы поставить ОС на учёт по налогу; снимаем — чтобы снять).
Урок 3. Создание на основании карточки ОС
Чтобы не искать ОС вручную, документ удобно вводить прямо из карточки: 1. Открыть элемент справочника «Основные средства». 2. «Ввести на основании» → «Изменение состояния ОС». 3. Система создаст документ, заполнит Организацию, подставит Событие ОС «Принятие к учёту» и добавит одну строку в таблицу ОС с выбранным основным средством. 4. Дальше — как в Уроках 1–2: открыть «Настройку», отметить тип изменения, заполнить текущие данные, переключить признаки.
🛠 Часть 2. Для программиста
Источник: реальный код релиза 3.0.72.1 (Documents/ИзменениеСостоянияОС/Ext/ObjectModule.bsl и ManagerModule.bsl), плюс разбор objects/ и business-logic/.
Структура объекта
Реквизиты шапки. Обязательный — Организация (Заполнить.ВыдаватьОшибку). Остальные необязательны: СтруктурноеПодразделение (связана с организацией — очистка одного поля обнуляет другое в форме), СобытиеОС (Справочник.СобытияОС), Ответственный, Автор, Комментарий.
Управляющие флаги шапки (определяют видимость колонок таблицы и состав движений):
ИзменениеНачисленияАмортизации, ИзменениеИмущественногоНалога, ИзменениеТранспортногоНалога, ИзменениеЗемельногоНалога — все Булево. Задаются через отдельную форму ФормаНастройкиДокумента.
Флаг режима: РучнаяКорректировка (Булево) — при Истина авто-движения не формируются.
Табличная часть ОС: ОсновноеСредство (Справочник.ОсновныеСредства, ключевое поле), НачислятьАмортизацию, ОбъектИмущественногоНалога, ОбъектТранспортногоНалога, ОбъектЗемельногоНалога — все Булево, хранят новое значение признака. Колонка видна, только если в шапке поднят соответствующий флаг Изменение….
Формы: ФормаДокумента (основная), ФормаСписка, ФормаВыбора, ФормаНастройкиДокумента (выбор типов изменений; передаёт структуру четырёх флагов в документ через ОповеститьОВыборе).
Жизненный цикл проведения (обработчики ObjectModule)
| Обработчик | Что делает |
|---|---|
ОбработкаЗаполнения |
Заполняет реквизиты при вводе на основании (ЗаполнитьПоДокументуОснования) или из структуры; вызывает ЗаполнениеДокументов.ЗаполнитьШапкуДокумента |
ОбработкаПроверкиЗаполнения |
Проверяет дубли ОС, отражение ОС в учёте на дату, корректность снятия налоговых/амортизационных признаков |
ПередЗаписью |
Только проверка ОбменДанными.Загрузка — при загрузке выходит сразу; своей логики нет |
ОбработкаПроведения |
Готовит наборы записей, при РучнаяКорректировка выходит; иначе делегирует формирование движений модулю УчетОС |
ObjectModule нет обработчиков ПриЗаписи / ОбработкаУдаленияПроведения — они не требуются: документ не синхронизирует связанные документы (в отличие, например, от реализации со счётом-фактурой).Как формируется проведение — реальный код (3.0.72.1)
Главное по аналогии с другими документами конфигурации: движения не «зашиты» в документ напрямую. ОбработкаПроведения собирает параметры и делегирует формирование наборов записей профильному модулю УчетОС — по одному вызову на каждый регистр, и только если соответствующая таблица непуста.
Источник: ObjectModule.bsl, процедура ОбработкаПроведения (стр. 119), реальный код целиком:
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
// ПОДГОТОВКА ПРОВЕДЕНИЯ ПО ДАННЫМ ДОКУМЕНТА
ПроведениеСервер.ПодготовитьНаборыЗаписейКПроведению(ЭтотОбъект);
Если РучнаяКорректировка Тогда
Возврат; // ручное управление движениями — авто-проведение пропускается
КонецЕсли;
ПараметрыПроведения = Документы.ИзменениеСостоянияОС.ПодготовитьПараметрыПроведения(Ссылка, Отказ);
Если Отказ Тогда
Возврат;
КонецЕсли;
// Если параметры не получены и Отказ не взведён — тихо выходим
Если ПараметрыПроведения = Неопределено Тогда
Возврат;
КонецЕсли;
// ФОРМИРОВАНИЕ ДВИЖЕНИЙ — каждый вызов пишет «свой» регистр, только если таблица непуста:
Если ПараметрыПроведения.СобытияОСОрганизацийТаблицаОС.Количество() <> 0 Тогда
УчетОС.СформироватьДвиженияРегистрацияСобытияОС(ПараметрыПроведения.СобытияОСОрганизацийТаблицаОС,
ПараметрыПроведения.Реквизиты, Движения, Отказ);
КонецЕсли;
Если ПараметрыПроведения.СостоянияОСОрганизацийТаблицаОС.Количество() <> 0 Тогда
УчетОС.СформироватьДвиженияИзменениеСостоянияОС(ПараметрыПроведения.СостоянияОСОрганизацийТаблицаОС,
ПараметрыПроведения.Реквизиты, Движения, Отказ);
КонецЕсли;
Если ПараметрыПроведения.НачислениеАмортизацииОСБухгалтерскийУчетТаблицаОС.Количество() <> 0 Тогда
УчетОС.СформироватьДвиженияИзменениеПризнакаНачисленияАмортизацииОС(ПараметрыПроведения.НачислениеАмортизацииОСБухгалтерскийУчетТаблицаОС,
ПараметрыПроведения.Реквизиты, Движения, Отказ);
КонецЕсли;
Если ПараметрыПроведения.ОбъектыИмущественногоНалогаТаблицаОС.Количество() <> 0 Тогда
УчетОС.СформироватьДвиженияОбъектыИмущественногоНалога(ПараметрыПроведения.ОбъектыИмущественногоНалогаТаблицаОС,
ПараметрыПроведения.Реквизиты, Движения, Отказ);
КонецЕсли;
Если ПараметрыПроведения.ИзменениеТранспортногоНалогаТаблицаОС.Количество() <> 0 Тогда
УчетОС.СформироватьДвиженияИзменениеТранспортногоНалога(ПараметрыПроведения.ИзменениеТранспортногоНалогаТаблицаОС,
ПараметрыПроведения.Реквизиты, Движения, Отказ);
КонецЕсли;
Если ПараметрыПроведения.ИзменениеЗемельногоНалогаТаблицаОС.Количество() <> 0 Тогда
УчетОС.СформироватьДвиженияИзменениеЗемельногоНалога(ПараметрыПроведения.ИзменениеЗемельногоНалогаТаблицаОС,
ПараметрыПроведения.Реквизиты, Движения, Отказ);
КонецЕсли;
КонецПроцедуры
Разбор:
- ПроведениеСервер.ПодготовитьНаборыЗаписейКПроведению инициализирует наборы записей до проверки на ручную корректировку.
- РучнаяКорректировка = Истина → ранний Возврат сразу после подготовки наборов: никакие УчетОС.СформироватьДвижения* не вызываются, движения остаются за пользователем.
- Документы.ИзменениеСостоянияОС.ПодготовитьПараметрыПроведения (это ManagerModule) одним пакетом запросов собирает отдельную таблицу-источник на каждый регистр (СобытияОСОрганизацийТаблицаОС, СостоянияОСОрганизацийТаблицаОС, НачислениеАмортизацииОСБухгалтерскийУчетТаблицаОС, ОбъектыИмущественногоНалогаТаблицаОС, ИзменениеТранспортногоНалогаТаблицаОС, ИзменениеЗемельногоНалогаТаблицаОС) плюс структуру Реквизиты.
- Каждый блок защищён условием …ТаблицаОС.Количество() <> 0: если по типу изменения данных нет (флаг в шапке не поднят), модуль УчетОС для этого регистра не вызывается.
- Двойное молчаливое завершение: при Отказ = Истина — выход; при ПараметрыПроведения = Неопределено без отказа — тоже выход (защитная ветка).
Кто что формирует (вызов → смысл):
| Вызов в коде | Какой регистр пишет |
|---|---|
УчетОС.СформироватьДвиженияРегистрацияСобытияОС |
СобытияОСОрганизаций — журнал событий ОС |
УчетОС.СформироватьДвиженияИзменениеСостоянияОС |
СостоянияОСОрганизаций — новое состояние (статус) ОС |
УчетОС.СформироватьДвиженияИзменениеПризнакаНачисленияАмортизацииОС |
НачислениеАмортизацииОСБухгалтерскийУчет — признак «начислять амортизацию» |
УчетОС.СформироватьДвиженияОбъектыИмущественногоНалога |
ОбъектыИмущественногоНалога |
УчетОС.СформироватьДвиженияИзменениеТранспортногоНалога |
ОбъектыТранспортногоНалога |
УчетОС.СформироватьДвиженияИзменениеЗемельногоНалога |
ОбъектыЗемельногоНалога |
Движения по регистрам
| Регистр | Тип | Что пишет |
|---|---|---|
СостоянияОСОрганизаций |
РегистрСведений | Новое состояние (статус) ОС на дату документа |
СобытияОСОрганизаций |
РегистрСведений | Событие изменения (по СобытиеОС) |
НачислениеАмортизацииОСБухгалтерскийУчет |
РегистрСведений | Признак начисления амортизации (при флаге ИзменениеНачисленияАмортизации) |
ОбъектыИмущественногоНалога |
РегистрСведений | Признак объекта имущественного налога |
ОбъектыТранспортногоНалога |
РегистрСведений | Признак объекта транспортного налога |
ОбъектыЗемельногоНалога |
РегистрСведений | Признак объекта земельного налога |
ОбработкаПроведения нет ни одного движения по регистру бухгалтерии (Типовой) или по налоговому учёту — только перечисленные регистры сведений. Это принципиально отличает документ от, например, «Реализации» или «Принятия к учёту ОС». Сами проводки по амортизации (Дт 7210/7480 расходы — Кт 2420 амортизация ОС) и расчёт налогов делают другие, регламентные документы, которые читают записанное здесь состояние. Любые «плоские» Дт/Кт, приписанные этому документу, — ошибка: сверяйте по фактическим движениям проведённого документа. План счетов КЗ (для справки по смежным документам ОС): ОС — 2410, амортизация ОС — 2420, расходы — 7210/7480.РучнаяКорректировка; (3) убедиться, что регламентный документ-расчёт (амортизации/налога) проведён после даты изменения состояния. Логика признаков — в общем модуле УчетОС, туда и смотреть.Валидации (ОбработкаПроверкиЗаполнения)
Порядок и смысл (реальный код, стр. 28):
- Дубли ОС.
УправлениеВнеоборотнымиАктивамиСервер.ПроверитьОтсутствиеДублейВТабличнойЧасти(ЭтотОбъект, "ОС", Новый Структура("ОсновноеСредство"), Отказ)— одно ОС не может встречаться в таблице дважды. - Отражение в учёте. Вспомогательная функция
СФормироватьТЧОСДляПроверки()одним запросом со срезами последних (ПервоначальныеСведенияОСБухгалтерскийУчет, регистры налогов и амортизации) подтягивает по каждой строке «старые» значения и флагОтражалосьВБухгалтерскомУчете. Если ОС не отражалось в учёте по организации — ошибка «Основное средство <…> не отражалось в учете по указанной организации»,Отказ = Истина. - Ранний выход: если хоть одно ОС не принято к учёту — дальнейшие проверки пропускаются (
Если Отказ Тогда Возврат). - Корректность снятия признаков — построчно, только для поднятых флагов шапки. Нельзя снять признак, которого не было:
- амортизация:
ИзменениеНачисленияАмортизации И (Не НачислятьАмортизацию) И (Не НачислятьАмортизациюСтарый)→ «…ранее не устанавливался признак начисления амортизации»; - имущественный/транспортный/земельный налог — аналогично, со сравнением нового значения и…Старый(значение из среза последних): «…не является объектом обложения … налогом в данной организации».
Сообщения адресуются в конкретную ячейку таблицы через ОбщегоНазначения.СообщитьПользователю(…, ЭтотОбъект, Поле, "Объект", Отказ), где Поле — путь вида ОС[N].НачислятьАмортизацию.
Обязательность
Организацияобеспечивается платформенно (Заполнить.ВыдаватьОшибку), отдельной проверки в коде нет.
Заполнение (ManagerModule)
Две процедуры, на которые опирается UI:
ЗаполнитьДокументПоСправочникуОсновныеСредства(Объект, Основание) (стр. 115) — ввод на основании карточки ОС:
Процедура ЗаполнитьДокументПоСправочникуОсновныеСредства(Объект, Основание) Экспорт
Если Основание.ЭтоГруппа Тогда
ТекстСообщения = НСтр("ru = 'Нельзя изменять состояние по группе основных средств.'");
ВызватьИсключение(ТекстСообщения);
КонецЕсли;
Объект.СобытиеОС = УправлениеВнеоборотнымиАктивамиСервер.ПолучитьСобытиеПоОСИзСправочника(Перечисления.ВидыСобытийОС.ПринятиеКУчету);
СтрокаТабличнойЧасти = Объект.ОС.Добавить();
СтрокаТабличнойЧасти.ОсновноеСредство = Основание.Ссылка;
КонецПроцедуры
- Группа справочника → исключение.
- Подставляется событие «Принятие к учёту» и добавляется одна строка ОС.
ЗаполнитьТабличнуюЧастьТекущимиДанными(Объект) (стр. 37) — кнопка «Заполнить текущими данными». Запросом по срезам последних на КонецДня(Дата) для организации подтягивает текущие значения четырёх признаков (ОбъектЗемельногоНалога, ОбъектИмущественногоНалога, ОбъектТранспортногоНалога, НачислятьАмортизацию — все с ЕСТЬNULL(…, ЛОЖЬ)) и проставляет их в каждую строку таблицы ОС. Это и есть «снимок текущего состояния», поверх которого пользователь меняет нужный флаг.
Зависимости (общие модули)
УчетОС (ядро логики ОС, формирование всех движений — 6 вызовов в проведении), УправлениеВнеоборотнымиАктивамиСервер (дубли ОС, инвентарные номера, событие принятия к учёту), ПроведениеСервер (подготовка наборов записей), ЗаполнениеДокументов (заполнение шапки), ОбщегоНазначения / СтроковыеФункцииКлиентСервер (сообщения, подстановка параметров), ОбщегоНазначенияБКВызовСервераПовтИсп (валюта регл. учёта). В ManagerModule дополнительно — НомераТаблиц, МестонахождениеОСБухгалтерскийУчет, модули налоговых объектов.
- Состав движений управляется флагами шапки (
Изменение…), а они приходят изФормаНастройкиДокументачерезОповеститьОВыборе. Нет флага → нет колонки в таблице → пустая…ТаблицаОС→УчетОСдля этого регистра не вызывается. Это единый «рубильник» от UI до проведения.РучнаяКорректировка = Истина— раннийВозвратвОбработкаПроведения; наборы записей подготовлены, но не заполнены. Учитывайте при программном проведении.- Валидация сравнивает с «Старым» (срез последних,
Регистратор <> Ссылка): запрещено снимать признак, которого не было. При автозаполнении сначала вызывайте «Заполнить текущими данными», иначе легко получить ложную ошибку «не является объектом…».- Дата критична: все запросы (проверка и заполнение) идут по срезам последних на дату/конец дня документа. Смена даты в форме предлагает пересчитать инвентарные номера — это ожидаемо.
- Проводок нет — не ищите регистр бухгалтерии в движениях и не добавляйте «иллюстративные» Дт/Кт в документацию по этому документу.
🔗 Связанные разделы
- postuplenie-nma — поступление НМА (смежный объект модуля «ОС и НМА»)
- prinyatie-k-uchetu-os — принятие ОС к учёту (задаёт исходные признаки; плейсхолдер, страница может отсутствовать)
- nachislenie-amortizacii-os — регламентное начисление амортизации, читает состояние ОС (плейсхолдер)
- spisanie-os — выбытие ОС (плейсхолдер)
🆕 Что нового
| Версия | Изменение | Тип |
|---|---|---|
| 3.0.72.1 | Первичное описание (на релизе 3.0.72.1) | 🆕 |