Документ «Инвентаризация НМА»
Документ фиксирует результаты инвентаризации (сверки) нематериальных активов: подгружает перечень НМА по данным учёта на дату документа, позволяет отметить фактическое наличие и стоимость, считает излишки и недостачи по каждому активу и печатает описи Инв-8 и Инв-16 с составом комиссии. Это информационный документ — он НЕ формирует бухгалтерских проводок и не делает движений по регистрам; выявленные недостачи вы затем оформляете отдельным документом «Списание НМА» (создаётся прямо из инвентаризации). Раздел «ОС и НМА».
🎯 Что это и зачем
Нематериальные активы (лицензии на ПО, патенты, товарные знаки, исключительные права) тоже подлежат инвентаризации — обычно перед годовой отчётностью, при смене ответственного лица или по требованию ревизии. По НМА «физическая» проверка означает: подтвердить, что права/лицензии действуют, документы на месте, актив по-прежнему используется и не утратил силу. Документ «Инвентаризация НМА» автоматизирует эту сверку:
- подтягивает список НМА по данным учёта из регистра состояний НМА на дату документа (только действующие — не списанные);
- сам берёт балансовую (восстановительную) стоимость каждого актива из регистра бухгалтерии по соответствующему счёту учёта НМА;
- даёт отметить по каждому активу фактическое наличие и фактическую стоимость;
- ведёт построчно излишки и недостачи (по наличию и по сумме);
- печатает официальные формы Инв-8 (инвентаризационная опись) и Инв-16 с составом комиссии и председателем.
Кто работает: бухгалтер по ОС и НМА и члены инвентаризационной комиссии. Периодичность — по графику инвентаризаций организации (как правило, раз в год).
🧭 Где найти в программе
Раздел «ОС и НМА» → пункт «Инвентаризация НМА». Откроется журнал документов; новый создаём кнопкой «Создать».
navigation-map.json (релиз 3.0.72.1) объект Документ.ИнвентаризацияНМА отсутствует — карта маршрутов содержит только блоки «Продажа / Покупка / Банк и касса / Зарплата / Операции / Отчеты / ЭСФ-ЭАВР». Раздел «ОС и НМА» определён по подсистеме объекта, по печатным формам Инв-8/Инв-16 и по парному документу «Инвентаризация ОС», который живёт в этом же разделе. Точная подпись пункта в левом меню Fresh может отличаться («Инвентаризация НМА», «Инвентаризация нематериальных активов» и т. п.). Сверьте по своей базе и при необходимости поправьте fresh_nav. Несостыковка занесена в issues.👤 Часть 1. Для пользователя
Проходим по шагам, как в курсе: от пустого документа до оформленной описи с подсчитанными излишками и недостачами и до списания недостающих НМА.
Урок 1. Инвентаризация по данным учёта (основной сценарий)
Когда: плановая инвентаризация НМА по организации (или по структурному подразделению, если ведёте учёт по подразделениям).
Шаг 1. Создаём документ и заполняем шапку
«Создать». Заполняем шапку:
- Организация — обязательна (без неё кнопки заполнения не сработают, см. ⚠️ ниже).
- Структурное подразделение — необязательно; заполняйте, только если в программе включён учёт по подразделениям и нужна инвентаризация по одному подразделению. Пусто = по всей организации.
- Дата — ключевой реквизит: именно на эту дату берутся остатки и стоимость НМА из учёта. Поставьте дату инвентаризации (обычно конец периода).
- Ответственный, Причина проведения инвентаризации, реквизиты документа-основания (вид / номер / дата приказа), даты начала и окончания — заполняются для печатных форм.
Шаг 2. Заполняем перечень НМА по данным учёта
На закладке с табличной частью НМА нажмите «Заполнить по остаткам». Программа:
- очистит текущие строки таблицы (если они были) и пересчитает данные заново — об этом выводится предупреждение «При заполнении существующие данные были пересчитаны!»;
- запросит регистр состояний НМА на дату документа и подставит все действующие НМА (списанные не попадают);
- по каждому активу заполнит «Стоимость по данным учёта» (балансовая/восстановительная стоимость из учёта) и поставит «Наличие по данным учёта» = Да;
- предварительно пометит каждую строку как недостачу (количество 1, сумма = учётной стоимости) — пока вы не подтвердили факт. На следующем шаге это снимается.
Шаг 3. Вносим фактические данные
Комиссия проверяет каждый НМА и фиксирует результат:
- Наличие фактическое — отметка, что актив подтверждён (права действуют, документы на месте).
- Стоимость фактическая — стоимость по результатам проверки (обычно равна учётной).
Если расхождений нет вообще — нажмите «Заполнить фактические данные»: команда массово скопирует учётные данные в фактические (наличие и стоимость) и обнулит недостачи по всем строкам. Дальше правите только те строки, где факт реально отличается.
Шаг 4. Заполняем инвентаризационную комиссию
На закладке «Инвентаризационная комиссия» добавьте членов комиссии (из справочника физлиц) и одного отметьте как Председателя. Программа следит, чтобы председатель был только один: при установке отметки у одной строки она снимается у остальных.
Шаг 5. Записываем и печатаем
Нажмите «Записать». Затем «Печать» → выберите «Инв-8» (инвентаризационная опись) или «Инв-16» (детальный реестр НМА). В описи будут шапка с организацией и датами, перечень НМА со стоимостью по учёту и фактической, разницы (излишки/недостачи) и блок комиссии с председателем.
Урок 2. Оформление недостач — «Списание НМА» на основании
Когда: по итогам сверки есть активы, которые числятся в учёте, но фактически отсутствуют (право прекращено, лицензия не продлена и т. п.).
Шаг 1. Убедитесь, что недостача отмечена
Недостающим считается актив, у которого «Наличие по данным учёта» = Да, а «Наличие фактическое» = Нет. Именно такие строки программа отбирает для списания.
Шаг 2. Создаём списание
Нажмите «Создать на основании» → «Списание НМА» (или одноимённую кнопку в форме).
- Если документ ещё не записан — программа предложит сначала записать его (списание можно создавать только из записанного документа); согласитесь.
- Откроется окно выбора НМА со списком только тех активов, что подлежат списанию (недостачи). Если таких нет — будет сообщение «В документе нет НМА, подлежащих списанию.».
- Отметьте нужные НМА и подтвердите — откроется новый документ «Списание НМА» с предзаполненными активами.
Шаг 3. Дозаполняем и проводим списание
В документе «Списание НМА» укажите причину, счета учёта и проведите его — вот он и сформирует бухгалтерские проводки по списанию НМА и накопленной амортизации. Подробнее — в разделе spisanie-nma.
Урок 3. Повторная (контрольная) инвентаризация копированием
Чтобы не вводить шапку заново, откройте прошлую инвентаризацию и «Скопировать». Дата нового документа автоматически встанет на сегодня (начало дня). После копирования обязательно нажмите «Заполнить по остаткам» заново — иначе в таблице останутся старые учётные данные с прошлой даты.
🛠 Часть 2. Для программиста
Источник: реальный код релиза 3.0.72.1 (Documents/ИнвентаризацияНМА/Ext/ObjectModule.bsl и …/Ext/ManagerModule.bsl, плюс модуль формы документа), сверено с разбором objects/ и business-logic/.
Структура объекта
Реквизиты шапки. Обязателен (на уровне метаданных, ShowError) только Организация. Остальное — DontCheck: СтруктурноеПодразделение (CatalogRef.ПодразделенияОрганизаций), Ответственный, Автор (служебный), ДатаНачалаИнвентаризации, ДатаОкончанияИнвентаризации, ПричинаПроведенияИнвентаризации, ДокументОснованиеВид/Номер/Дата, Комментарий. Плюс стандартный реквизит документа Дата — он определяет дату среза остатков.
Табличные части:
| Часть | Ключевые колонки | Назначение |
|---|---|---|
НМА |
НематериальныйАктив (CatalogRef.НематериальныеАктивы), НаличиеПоДаннымУчета, СтоимостьПоДаннымУчета, НаличиеФактическое, СтоимостьФактическая, ИзлишекКоличество, ИзлишекСумма, НедостачаКоличество, НедостачаСумма |
строки сверки «учёт ↔ факт» по каждому активу |
ИнвентаризационнаяКомиссия |
ФизЛицо (CatalogRef.ФизическиеЛица), Председатель (булево) |
состав комиссии для печатных форм |
objects/. Разбор objects/ называет колонки Излишек/Недостача «вычисляемыми в форме». Реальный код показывает, что это полноценные реквизиты табличной части НМА — их пишут серверные/клиентские процедуры (ЗаполнитьТабличнуюЧастьНМА, ЗаполнитьФактическиеДанные, расчёт по строке в форме) и сохраняют в документе; печать Инв-8/Инв-16 берёт суммы излишков/недостач из них.Формы: ФормаДокумента (основная), ФормаСписка, ФормаВыбора, ФормаВыбораНМА (модальный выбор НМА к списанию). Макеты: ПФ_MXL_ИНВ8, ПФ_MXL_ИНВ16.
Жизненный цикл — обработчики ObjectModule
Модуль объекта намеренно «тонкий». Полный перечень обработчиков:
| Обработчик | Что делает (реально) |
|---|---|
ОбработкаЗаполнения |
удаляет ключ Автор из структуры ДанныеЗаполнения, копирует свойства, вызывает ЗаполнениеДокументов.ЗаполнитьШапкуДокумента(…, ПолучитьВалютуРегламентированногоУчета()) |
ОбработкаПроверкиЗаполнения |
единственная валидация — отсутствие дублей по НематериальныйАктив в ТЧ НМА |
ПередЗаписью |
при ОбменДанными.Загрузка — ранний Возврат; иной логики нет |
ПриКопировании |
ставит Дата = НачалоДня(ОбщегоНазначения.ТекущаяДатаПользователя()) |
ОбработкаПроведения |
ОТСУТСТВУЕТ — документ не проводится |
⚠️ Проводок нет — это ключевой факт
В ObjectModule.bsl нет процедуры ОбработкаПроведения, и во всём объекте (объектный + менеджерский модули) подстроки ОбработкаПроведения нет ни разу. Значит:
- документ не делает движений ни по регистру бухгалтерии (
Типовой/Налоговый), ни по регистрам накопления; - у него нет кнопки «Дт/Кт» и в принципе нет понятия «провести в учёте» — он записывается, но не проводится;
- исправление баланса по итогам сверки выполняется другими документами: недостачи —
Документ.СписаниеНМА(создаётся на основании), излишки — принятием НМА к учёту.
Сердце документа — заполнение по учёту (реальный код)
Вся «вычислительная» нагрузка не в проведении, а в ManagerModule.ЗаполнитьТабличнуюЧастьНМА — она работает в двух режимах и собирает учётные данные из трёх источников. Источник: ManagerModule.bsl, стр. 37, сокращённо:
Процедура ЗаполнитьТабличнуюЧастьНМА(Объект, ПоддержкаРаботыСоСтруктурнымиПодразделениями, РежимЗаполнения) Экспорт
Если РежимЗаполнения = "ПоОстаткам" Тогда
СписокНМА = Неопределено; // берём все НМА организации
ИначеЕсли РежимЗаполнения = "ПоДаннымУчета" Тогда
СписокНМА = Объект.НМА.Выгрузить(, "НематериальныйАктив"); // только то, что уже в ТЧ
КонецЕсли;
Запрос.УстановитьПараметр("ДатаОстатков", Новый Граница(Объект.Дата, ВидГраницы.Включая));
Запрос.УстановитьПараметр("Организация", Объект.Организация);
Запрос.УстановитьПараметр("СубконтоНМА", ПланыВидовХарактеристик.ВидыСубконтоТиповые.НематериальныеАктивы);
Запрос.УстановитьПараметр("Состояние", Перечисления.ВидыСостоянийНМА.Списан); // исключаем списанные
// ВТ_НМА : РегистрСведений.СостоянияНМАОрганизаций.СрезПоследних, где Состояние <> Списан
// ВТ_Счета : РегистрСведений.СчетаУчетаНМА.СрезПоследних — СчетУчетаБУ и СчетНачисленияАмортизацииБУ
// финал : ЛЕВОЕ СОЕДИНЕНИЕ с РегистрБухгалтерии.Типовой.Остатки по СчетУчетаБУ
// и субконто НематериальныеАктивы → ВосстановительнаяСтоимость (СуммаОстаток)
Результат = Запрос.Выполнить().Выгрузить();
Если РежимЗаполнения = "ПоОстаткам" Тогда
Для Каждого СтрокаНМА Из Результат Цикл
НоваяСтрока = Объект.НМА.Добавить();
НоваяСтрока.НематериальныйАктив = СтрокаНМА.НематериальныйАктив;
НоваяСтрока.СтоимостьПоДаннымУчета = СтрокаНМА.ВосстановительнаяСтоимость;
НоваяСтрока.НаличиеПоДаннымУчета = Истина;
НоваяСтрока.НедостачаСумма = СтрокаНМА.ВосстановительнаяСтоимость; // предварительно — недостача
НоваяСтрока.НедостачаКоличество = 1;
КонецЦикла;
ИначеЕсли РежимЗаполнения = "ПоДаннымУчета" Тогда
Для Каждого СтрокаНМА Из Объект.НМА Цикл
ОстатокНМА = Результат.Найти(СтрокаНМА.НематериальныйАктив, "НематериальныйАктив");
Если НЕ (ОстатокНМА = Неопределено) Тогда
СтрокаНМА.СтоимостьПоДаннымУчета = ОстатокНМА.ВосстановительнаяСтоимость;
СтрокаНМА.НаличиеПоДаннымУчета = Истина;
Иначе
СтрокаНМА.СтоимостьПоДаннымУчета = 0;
СтрокаНМА.НаличиеПоДаннымУчета = Ложь;
КонецЕсли;
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Разбор.
- Источники данных (три регистра, всё на
ДатаОстатков = Граница(Дата, Включая)): 1.РегистрСведений.СостоянияНМАОрганизаций.СрезПоследних— какие НМА вообще действуют у организации (фильтрСостояние <> Списан); при учёте по подразделениям добавляется условиеСтруктурноеПодразделение = &СтруктурноеПодразделение. 2.РегистрСведений.СчетаУчетаНМА.СрезПоследних— даёт по каждому НМАСчетУчетаБУиСчетНачисленияАмортизацииБУ. То есть счета НМА программа не «зашивает», а читает из регистра настроек. 3.РегистрБухгалтерии.Типовой.ОстаткипоСчетУчетаБУи виду субконтоНематериальныеАктивы→ВосстановительнаяСтоимость(СуммаОстаток), которая ложится вСтоимостьПоДаннымУчета. - Режим
ПоОстаткамдобавляет строки заново (форма перед этим очищает ТЧ) и сразу помечает каждую как недостачу (НедостачаСумма/НедостачаКоличество) — пока пользователь не подтвердил факт. - Режим
ПоДаннымУчетастроки не создаёт: дотягивает учётные данные к уже введённым НМА, а отсутствующие в остатках помечаетНаличиеПоДаннымУчета = Ложьсо стоимостью 0.
СчетаУчетаНМА: для Казахстана это НМА 2730 (СчетУчетаБУ) и амортизация НМА 2740 (СчетНачисленияАмортизацииБУ). Российские 04/05 здесь неприменимы. Дальнейшее списание недостачи в СписаниеНМА уйдёт в расходы (по плану КЗ — 7210/7480, остаточная стоимость) с одновременным закрытием 2740 и 2730 — но это уже логика документа списания, см. spisanie-nma.Команды формы (клиент) — что реально вызывается
Источник: ФормаДокумента/Ext/Form/Module.bsl.
| Команда формы | Поведение |
|---|---|
ЗаполнитьПоОстаткам |
проверяет Организация (иначе «Не выбрана организация»), предупреждает «существующие данные были пересчитаны!», Объект.НМА.Очистить(), замер производительности, затем серверный вызов ЗаполнитьТабличнуюЧастьНМА(…, "ПоОстаткам") |
ЗаполнитьДанныеУчета |
то же требование к организации; серверный вызов с режимом "ПоДаннымУчета" (ТЧ не очищается) |
ЗаполнитьФактическиеДанные |
по всем строкам СтоимостьФактическая = СтоимостьПоДаннымУчета, НаличиеФактическое = НаличиеПоДаннымУчета, обнуляет Недостача*, затем ОбновитьСписокНМАКСписанию() |
СоздатьНаОснованииСписаниеНМА |
если СписокНМАКСписанию.Количество() = 0 → «В документе нет НМА, подлежащих списанию.»; если документ не записан — вопрос с записью (ПослеВопросаОЗаписиПередСписаниеНМА), иначе сразу ОткрытьФормуВыбораНМА() |
НМАПриИзменении |
сбрасывает учётные данные строки при смене актива (требуется повторное «Заполнить данные учёта») |
ПроверитьФлагиПредседателя |
поддерживает единственность председателя в ТЧ ИнвентаризационнаяКомиссия |
Печать (Инв-8 / Инв-16) — ManagerModule
ДобавитьКомандыПечатирегистрирует две команды:ПечатьИНВ8иПечатьИНВ16.ПечатьИНВ8(≈505 строк) строит опись: шапку из реквизитов документа, перечень НМА, блок комиссии с председателем (берётся строка ТЧ сПредседатель = ИстиначерезТаблицаИнвентаризационнаяКомиссия.Найти(Истина, "Председатель")), итогиИтогИзлишекКоличество/СтоимостьиИтогНедостачаКоличество/Стоимость.ПечатьИНВ16(≈354 строки) — детальный реестр НМА (наименование, стоимость по учёту и фактическая).- Обе печати работают в привилегированном режиме (доступ к регистрам), маршрутизация — через
Печать(...).
Валидации
Единственная программная проверка записи — в ОбработкаПроверкиЗаполнения:
УправлениеВнеоборотнымиАктивамиСервер.ПроверитьОтсутствиеДублейВТабличнойЧасти(
ЭтотОбъект, "НМА", Новый Структура("НематериальныйАктив"), Отказ);
То есть один и тот же НМА нельзя добавить в таблицу дважды. Плюс обязательность Организация на уровне метаданных. Прочие «проверки» — это контекстные сообщения команд формы (нет организации; нет НМА к списанию; данные не записаны перед списанием), а не блокировки записи документа. Контроль логичности дат начала/окончания, единственности председателя сверх формы, наличия комиссии — отсутствует.
Зависимости (общие модули)
УправлениеВнеоборотнымиАктивамиСервер (проверка дублей ТЧ), ЗаполнениеДокументов + ОбщегоНазначенияБКВызовСервераПовтИсп (заполнение шапки, валюта регл. учёта), ОбщегоНазначения (текущая дата при копировании), РаботаСДиалогами* (структурное подразделение), ПроцедурыУправленияПерсоналомВызовСервера (данные физлиц для печати), УправлениеПечатью, стандартные подсистемы ВерсионированиеОбъектов и УправлениеДоступом (заглушки ПриОпределенииНастроекВерсионированияОбъектов, ПриЗаполненииОграниченияДоступа в ManagerModule).
- Нет проведения — нет движений. Не ищите
ОбработкаПроведения: её нет. Любые «движения по регистрам НМА» из старых заметокobjects/(поляregister_records: []) подтверждаются как пустые.Состояние <> Списан— фильтр зашит в запрос: списанные НМА в инвентаризацию не попадают. Если клиенту «не хватает» актива в списке — проверьте регистрСостоянияНМАОрганизацийна дату документа.- Дата = граница среза. Все три источника читаются на
Граница(Объект.Дата, Включая). Сменили дату после заполнения — данные устарели, нужно повторить «Заполнить по остаткам».- Стоимость —
ВосстановительнаяСтоимостьизРегистрБухгалтерии.Типовой.ОстаткипоСчетУчетаБУи субконтоНематериальныеАктивы. Это балансовая стоимость по счёту НМА (КЗ: 2730), не остаточная за вычетом амортизации.- Списание — только записанного документа и только по строкам-недостачам (
НаличиеПоДаннымУчета = Истина И НаличиеФактическое = Ложь), накопленным вСписокНМАКСписанию; выбор уточняется воФормаВыбораНМА.
🔗 Связанные разделы
- spisanie-nma — оформление недостач НМА (создаётся на основании инвентаризации; здесь формируются реальные проводки)
- prinyatie-k-uchetu-nma — оприходование излишков НМА, выявленных при сверке
- inventarizaciya-os — парный документ инвентаризации основных средств (та же логика, без проводок)
- peredacha-nma — передача (выбытие) НМА — смежная операция раздела
- inventarizaciya-tovarov-na-sklade — аналогичная сверка по складским ТМЗ
🆕 Что нового
| Версия | Изменение | Тип |
|---|---|---|
| 3.0.72.1 | Первичное описание (на релизе 3.0.72.1) | 🆕 |