Документ «Инвентаризация ОС»

Документ фиксирует результаты инвентаризации (сверки) основных средств: подгружает перечень ОС по данным учёта, позволяет отметить фактическое наличие и стоимость (вручную или по штрихкодам с ТСД), сам считает излишки и недостачи по каждому объекту и печатает описи Инв-8 и Инв-16. Это информационный документ — он НЕ формирует бухгалтерских проводок и не делает движений по регистрам; выявленные расхождения вы затем оформляете отдельными документами (принятие к учёту излишков, списание недостач). Раздел «ОС и НМА».

Бухгалтерия для Казахстана, ред. 3.0 · v3.0.72.1 · обновлено 2026-06-04

🎯 Что это и зачем

Раз в год (а также при смене МОЛ, ревизии, перед годовой отчётностью) нужно сверить, что числится на балансе по ОС, с тем, что реально стоит в цехах и кабинетах. «Инвентаризация ОС» автоматизирует эту сверку:

Кто работает: бухгалтер по ОС и члены инвентаризационной комиссии. Периодичность — по графику инвентаризаций организации.

💡 Главное, что нужно понять про этот документ: он ничего не проводит в учёте. Его задача — зафиксировать и оформить результат сверки. Само исправление баланса (оприходовать излишек, списать недостачу) делается потом другими документами раздела «ОС и НМА». Подробности — в [Части 2](#-часть-2-для-программиста).

🧭 Где найти в программе

Раздел «ОС и НМА» → пункт «Инвентаризация ОС». Откроется журнал документов; новый создаём кнопкой «Создать».

📷 СКРИН 01
СКРИН 01 — раздел «ОС и НМА», открытый журнал «Инвентаризация ОС». (AccountingKZ30 во Fresh; маршрут уточняется — см. пробел [KZ30-OS-INV-001] ниже.)
⚠️ Пробел [KZ30-OS-INV-001]. В navigation-map.json (релиз 3.0.72.1) объект Документ.ИнвентаризацияОС отсутствует — карта маршрутов содержит только блоки «Продажа / Покупка / Банк и касса». Раздел «ОС и НМА» определён по подсистеме и метаданным объекта (печатные формы Инв-8/Инв-16, работа с регистром МестонахождениеОСБухгалтерскийУчет), но точная подпись пункта в левом меню Fresh может отличаться («Инвентаризация ОС», «Инвентаризация основных средств» и т. п.). Сверьте по своей базе и при необходимости поправьте fresh_nav. Несостыковка занесена в issues.

👤 Часть 1. Для пользователя

Проходим по шагам, как в курсе: от пустого документа до оформленной описи с подсчитанными излишками и недостачами.

Урок 1. Инвентаризация по данным учёта (основной сценарий)

Когда: плановая инвентаризация ОС по организации или по подразделению.

Шаг 1. Создаём документ и заполняем шапку

«Создать». Заполняем шапку: - Организация — обязательно (без неё не сработает заполнение по остаткам). - Структурное подразделение — если инвентаризуем не всю организацию, а конкретное подразделение (цех, склад, офис). Можно оставить пустым — тогда берутся все. - Дата начала / Дата окончания инвентаризации — период фактического обследования (попадают в шапку печатных форм). - Документ-основание (вид / номер / дата) и причина проведения — реквизиты приказа о проведении инвентаризации (текстовые, для печатных форм).

📷 СКРИН 02
СКРИН 02 — заполненная шапка документа «Инвентаризация ОС».
💡 Подсказка. Дата документа важна. По ней система определяет инвентарные номера и МОЛ каждого ОС, а также остаток по данным учёта. Поставите дату не ту — подтянутся не те данные. При смене даты документ пересчитает строки автоматически.
⚠️ Важно. Поле Организация — обязательное. Если оно не заполнено, при попытке «Заполнить по остаткам» система выдаст «Не выбрана организация» и ничего не подгрузит.

Шаг 2. Заполняем перечень ОС по учёту

Встаём в табличную часть «ОС» и нажимаем «Заполнить по остаткам» (кнопка в командной панели табличной части). Система: - очистит уже введённые строки (предупредив об этом); - запросит ОС из регистра местонахождения ОС на дату документа (с учётом подразделения); - заполнит строки с флагом «Наличие по данным учёта» = Да, балансовой стоимостью, инвентарным номером и МОЛ.

📷 СКРИН 03
СКРИН 03 — табличная часть «ОС», заполненная по остаткам (видны инвентарный номер, стоимость по учёту, МОЛ).
💡 Кнопка «Заполнить данные учёта» — мягкий вариант: не очищает таблицу целиком, а перезаполняет учётные данные по уже набранным строкам (полезно, если ОС вы добавляли вручную через «Подбор»).

Шаг 3. Указываем фактическое наличие

После физического обхода для каждой строки проставляем результат: - Наличие фактическое — Да (ОС на месте) или Нет (не найдено); - Стоимость фактическая — обычно равна учётной; отличается только при переоценке.

Система сразу пересчитает служебные колонки Излишек и Недостача (по количеству и по сумме).

📷 СКРИН 04
СКРИН 04 — ввод фактических данных, видны рассчитанные излишки/недостачи по строкам.
💡 Ускорение. Если по итогам сверки всё совпало с учётом — нажмите «Заполнить фактические данные»: команда массово скопирует «по учёту» → «фактически» (наличие и стоимость) и обнулит недостачи. Дальше правите только реально расходящиеся строки.

Шаг 4. Заполняем комиссию

В табличной части «Инвентаризационная комиссия» добавляем членов комиссии (кнопка «Подбор комиссии» открывает выбор из справочника физических лиц) и отмечаем Председателя — флаг ставится только у одного человека.

📷 СКРИН 05
СКРИН 05 — табличная часть «Инвентаризационная комиссия» с отмеченным председателем.
⚠️ Если поставить флаг «Председатель» второй строке, с предыдущей он снимется автоматически — председатель в комиссии один.

Шаг 5. Записываем и печатаем

«Записать». Затем из меню «Печать» формируем Инв-8 (инвентаризационная опись) или Инв-16.

📷 СКРИН 06
СКРИН 06 — меню «Печать» с командами «Инв-8» и «Инв-16».
📷 СКРИН 07
СКРИН 07 — сформированная печатная форма Инв-8.
💡 Важное отличие от складских и денежных документов. У «Инвентаризации ОС» нет кнопки «Провести» в смысле формирования проводок, и нет отчёта «Дт/Кт» — документ только хранит результат сверки. Что делать с излишками и недостачами — см. Урок 3.

Урок 2. Инвентаризация по штрихкодам (ТСД)

Когда: ОС промаркированы штрихкодами и есть терминал сбора данных — это кратно ускоряет обход.

  1. Создаём и заполняем документ по остаткам (Урок 1, шаги 1–2).
  2. Записываем документ — без записи загрузка с ТСД не выполнится (система спросит «Документ был изменён, записать изменения?»).
  3. Нажимаем «Загрузить данные из ТСД», выбираем подключённый терминал.
  4. Система считает штрихкоды и сопоставит их со справочником ОС: - нашёлся штрихкод среди строк документа → ставит «Наличие фактическое = Да», стоимость фактическую = учётной; - штрихкод есть в справочнике ОС, но строки в документе нет → добавит новую строку как излишек (наличие по учёту = Нет, фактическое = Да); - строка была, но её штрихкод с ТСД не пришёл → снимет «Наличие фактическое» (потенциальная недостача); - штрихкод не найден в справочнике → выдаст сообщение «Основное средство со штрихкодом … не найдено».
  5. Проверяем результат загрузки, при необходимости правим вручную, записываем и печатаем.
📷 СКРИН 08
СКРИН 08 — окно выбора ТСД / результат загрузки штрихкодов с сообщениями о найденных и ненайденных ОС.
💡 Есть и обратная команда «Выгрузить данные в ТСД» — она отправляет на терминал список ОС (по учёту) с штрихкодами и наименованиями, чтобы кладовщик обходил помещения уже со «справочником» в руках. ОС без заполненного штрихкода в выгрузку не попадут (будет предупреждение).

Урок 3. Что делать с излишками и недостачами

Документ инвентаризации только фиксирует расхождения — он не исправляет баланс сам. По результатам:

💡 То есть «Инвентаризация ОС» — это рабочий лист сверки и пакет печатных форм. Реальные проводки по излишкам/недостачам появятся только после ввода соответствующих документов оприходования/списания.
⚠️ В типовой конфигурации 3.0.72.1 автоматическое создание «Принятия к учёту ОС» / «Списания ОС» на основании документа инвентаризации не предусмотрено (см. [Часть 2 → Связи](#связи-и-источники-данных)). Эти документы создаются отдельно; перенос строк выполняется вручную.

🛠 Часть 2. Для программиста

Источник: реальный код релиза 3.0.72.1 (Documents/ИнвентаризацияОС/Ext/ObjectModule.bsl и …/Forms/ФормаДокумента/Ext/Form/Module.bsl), плюс разбор objects/ и business-logic/.

Структура объекта

Реквизиты шапки. Обязательный (платформенный ShowError) — только Организация. Остальные — DontCheck: ДатаНачалаИнвентаризации, ДатаОкончанияИнвентаризации, СтруктурноеПодразделение, ПодразделениеОрганизации, МОЛОрганизации, Ответственный, Автор, ДокументОснованиеВид/Номер/Дата, ПричинаПроведенияИнвентаризации, Комментарий.

Табличные части: - ОС — рабочая таблица: ОсновноеСредство, НаличиеПоДаннымУчета (Булево), СтоимостьПоДаннымУчета (Число 15,2), НаличиеФактическое (Булево), СтоимостьФактическая (Число 15,2). Колонки ИнвентарныйНомер, Штрихкод, МОЛ, ИзлишекКоличество/Сумма, НедостачаКоличество/Сумма — служебные реквизиты формы (вычисляемые), в составе документа на уровне БД не хранятся. - ИнвентаризационнаяКомиссия — ФизЛицо, Председатель (Булево).

Жизненный цикл обработчиков

Перечень реальных обработчиков ObjectModule (релиз 3.0.72.1). ОбработкаПроведения в модуле отсутствует — документ не проводится в учётном смысле.

Обработчик Что делает (по реальному коду)
ОбработкаЗаполнения Если данные заполнения — Структура, удаляет из неё ключ Автор и присваивает свойства объекту; затем ЗаполнениеДокументов.ЗаполнитьШапкуДокумента(...) с валютой регл. учёта
ОбработкаПроверкиЗаполнения Единственная проверка: отсутствие дублей по ОсновноеСредство в ТЧ ОС через УправлениеВнеоборотнымиАктивамиСервер.ПроверитьОтсутствиеДублейВТабличнойЧасти(...)
ПередЗаписью Только ранний выход при ОбменДанными.Загрузка — собственной логики нет
ПриКопировании Ставит Дата = НачалоДня(ОбщегоНазначения.ТекущаяДатаПользователя())

Обработчиков ОбработкаПроведения, ОбработкаУдаленияПроведения, ПриЗаписи в ObjectModule нет. Это прямое подтверждение, что документ не формирует движений.

Со стороны формы (ФормаДокумента) ключевое: ПриСозданииНаСервере/ПриЧтенииНаСервере (подключаемые команды, версионирование, функциональные опции, доступ), ПриОткрытии/ПриЗакрытии (подключение/отключение ТСД через МенеджерОборудованияКлиент), ПослеЗаписи (оповещение "Запись_ИнвентаризацияОС").

Ключевой код — расчёт излишков и недостач (3.0.72.1)

Вся «арифметика» инвентаризации — в одной процедуре формы. Она вызывается при любом изменении строки ОС, при заполнении и при загрузке с ТСД. Источник: ФормаДокумента/Ext/Form/Module.bsl, стр. 996:

&НаКлиенте
Процедура РассчитатьВычисляемыеПоляПоСтроке(Строка)

    РазницаПоНаличию   = Число(Строка.НаличиеФактическое) - Число(Строка.НаличиеПоДаннымУчета);
    РазницаПоСтоимости = Строка.СтоимостьФактическая - Строка.СтоимостьПоДаннымУчета;

    Строка.ИзлишекКоличество   = ?(РазницаПоНаличию > 0,   РазницаПоНаличию,   0);
    Строка.НедостачаКоличество = ?(РазницаПоНаличию < 0,  -РазницаПоНаличию,   0);
    Строка.ИзлишекСумма        = ?(РазницаПоСтоимости > 0, РазницаПоСтоимости, 0);
    Строка.НедостачаСумма      = ?(РазницаПоСтоимости < 0, -РазницаПоСтоимости, 0);

КонецПроцедуры

Разбор: - Булево приводится к числу (Истина → 1, Ложь → 0); разница наличия даёт +1 (излишек), 0 (совпало) или −1 (недостача). - Разница стоимости отдельно раскладывается на положительную (ИзлишекСумма) и отрицательную по модулю (НедостачаСумма). - Никаких счетов, регистров и проводок — это чистый расчёт отображаемых колонок в форме. Результат не пишется ни в один регистр; он живёт только в реквизитах строки формы (и идёт в печать).

Заполнение таблицы ОС — делегирование в модуль менеджера

Команды формы тонкие — они проверяют организацию, запускают замер производительности и вызывают экспортный метод модуля менеджера. Источник: Form/Module.bsl, стр. 364, 386, 845, 852:

&НаКлиенте
Процедура ЗаполнитьПоОстаткам(Команда)
    Если (НЕ ЗначениеЗаполнено(Объект.Организация)) Тогда
        ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru='Не выбрана организация'"),, "Организация", "Объект");
        Возврат;
    КонецЕсли;
    ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru='При заполнении существующие данные были пересчитаны!'"));
    Объект.ОС.Очистить();
    // … замер производительности …
    ЗаполнитьПоОстаткамНаСервере();
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьПоОстаткамНаСервере()
    Документы.ИнвентаризацияОС.ЗаполнитьТабличнуюЧастьОС(Объект, ПоддержкаРаботыСоСтруктурнымиПодразделениями, "ПоОстаткам");
    ЗаполнитьИнвентарныеНомераОС();   // + ЗаполнитьМОЛОС() и т.д.
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьДанныеУчетаНаСервере()
    Документы.ИнвентаризацияОС.ЗаполнитьТабличнуюЧастьОС(Объект, ПоддержкаРаботыСоСтруктурнымиПодразделениями, "ПоДаннымУчета");
КонецПроцедуры

То есть оба режима ("ПоОстаткам" и "ПоДаннымУчета") ведут в один экспортный метод ЗаполнитьТабличнуюЧастьОС модуля менеджера документа (≈145 строк), который и читает остатки из регистра МестонахождениеОСБухгалтерскийУчет. Команда «Заполнить фактические данные» (ЗаполнитьФактическиеДанные, стр. 402) — целиком клиентская: в цикле копирует СтоимостьПоДаннымУчета → СтоимостьФактическая, НаличиеПоДаннымУчета → НаличиеФактическое и обнуляет недостачи.

Загрузка с ТСД — сопоставление по штрихкодам

ОбработатьШтрихкодыСервер (стр. 605) полным соединением сводит таблицу штрихкодов с ТСД, строки документа (Документ.ИнвентаризацияОС.ОС) и справочник ОсновныеСредства, формируя три массива — найденные / ненайденные / добавляемые. Клиентские ОбработатьНайденыеОС, ОбработатьНеНайденыеОС, ОбработатьДобавлениеОС (стр. 547–583) затем правят строки ТЧ и после каждой правки зовут РассчитатьВычисляемыеПоляПоСтроке. Это объясняет авто-появление излишков и снятие наличия по непришедшим штрихкодам, описанные в Уроке 2.

Движения по регистрам

Нет. Документ ИнвентаризацияОС не имеет регистраторов — массив register_records в метаданных пуст, ОбработкаПроведения отсутствует во всех модулях (ObjectModule, ManagerModule, ФормаДокумента — проверено по реальному коду 3.0.72.1, вхождений ОбработкаПроведения/Движения. ноль).

Регистр Движение Комментарий
— — Документ не пишет ни в один регистр
МестонахождениеОСБухгалтерскийУчет только чтение Источник данных для заполнения ТЧ и печатных форм Инв-8/Инв-16; запись в регистр не выполняется

Проводки (Дт/Кт) — документ их НЕ формирует

Этот документ не создаёт бухгалтерских проводок. Поэтому никаких Дт/Кт у него нет, и отчёт «Движения документа: Дт/Кт» для него пуст/недоступен.

Проводки появляются позже, когда по результатам инвентаризации вы вводите профильные документы ОС. Ниже — иллюстрация того, как в плане счетов Казахстана выглядят такие операции (формируют их документы «Принятие к учёту ОС» / «Списание ОС», не «Инвентаризация ОС»):

Событие по итогам инвентаризации Документ-оформитель Иллюстративная проводка (план счетов КЗ)
Оприходование излишка ОС Принятие к учёту ОС Дт 2410 «Основные средства» — Кт счёта прочих доходов (напр. 6280)
Списание недостачи ОС (остаточная стоимость) Списание ОС Дт счёта расходов/недостач (напр. 7470/1280) и Дт 2420 «Амортизация ОС» — Кт 2410 «Основные средства»
⚠️ Несостыковка [KZ30-OS-INV-002]. Авто-разбор objects/ мог подавать «плоские» проводки как свойство самого документа инвентаризации. По реальному коду 3.0.72.1 это неверно: Документ.ИнвентаризацияОС не проводит ничего. Счета 2410/2420/6280/7470 и конкретные корреспонденции в таблице выше — иллюстрация для смежных документов и подбираются их логикой и учётной политикой; точные Дт/Кт сверяйте по отчёту «Дт/Кт» уже на проведённом «Принятии к учёту ОС» / «Списании ОС». Несостыковка занесена в issues.

Валидации

Что проверяется Где Как
Дубли ОсновноеСредство в ТЧ ОС ObjectModule.ОбработкаПроверкиЗаполнения УправлениеВнеоборотнымиАктивамиСервер.ПроверитьОтсутствиеДублейВТабличнойЧасти(ЭтотОбъект, "ОС", Новый Структура("ОсновноеСредство"), Отказ)
Заполненность Организация Платформа (ShowError) + клиент перед заполнением Команды ЗаполнитьПоОстаткам/ЗаполнитьДанныеУчета прерываются с «Не выбрана организация»
Единственный председатель комиссии Клиент, обработчик флага Председатель При установке нового флага предыдущий снимается
Штрихкод найден при загрузке с ТСД Клиент/сервер, ОбработатьШтрихкоды* Ненайденные штрихкоды — в сообщения пользователю

Обратите внимание: нет проверок на обязательность дат, основания, комиссии или непустоту ТЧ. Документ можно записать почти пустым — он информационный.

Зависимости (общие модули)

УправлениеВнеоборотнымиАктивамиСервер (проверка дублей, инвентарные номера и МОЛ на дату, заполнение ТЧ), МенеджерОборудованияКлиент (ТСД — подключение, загрузка/выгрузка), РаботаСДиалогами(Клиент/КлиентСервер) (выбор структурного подразделения и организации), ЗаполнениеДокументов (заполнение шапки), ПодключаемыеКоманды(Клиент/Сервер), ВерсионированиеОбъектов, ОбщегоНазначения(Клиент/БК). Печатные формы Инв-8/Инв-16 — в ManagerModule (ПечатьИНВ8 ≈547 стр., ПечатьИНВ16 ≈421 стр.), работают в привилегированном режиме и читают МестонахождениеОСБухгалтерскийУчет.

Связи и источники данных

💼 Партнёру / внедренцу. Три вещи, которые экономят часы на внедрении:
  1. «Документ ничего не проводит» — это by design, а не баг. Если клиент ждёт, что инвентаризация сама оприходует излишки или спишет недостачи, — объясните маршрут: инвентаризация → ручной ввод «Принятия к учёту ОС» (излишки) и «Списания ОС» (недостачи). Сами проводки и счета КЗ (2410/2420/6280/7470) определяются уже этими документами и учётной политикой.
  2. Данные подтягиваются на дату документа из МестонахождениеОСБухгалтерскийУчет. «Не те ОС / не тот МОЛ» в описи почти всегда = неверная дата документа или незакрытое местонахождение, а не ошибка инвентаризации.
  3. ТСД требует записанного документа и заполненных штрихкодов в карточках ОС. Нет штрихкода — ОС не выгрузится на терминал и не сопоставится при загрузке.
🧩 Заметки для разработчика.
  1. Расширяя документ, не пытайтесь искать движения — их нет. Если в проекте нужно, чтобы инвентаризация ОС влияла на учёт, это отдельная доработка (свой регистр или авто-формирование документов-следствий), а не правка существующего ОбработкаПроведения.
  2. ОбработкаЗаполнения намеренно вычищает Автор из входной структуры — при программном создании через Структура передавать автора бесполезно, ставьте реквизит отдельно после заполнения.
  3. Перед загрузкой/выгрузкой ТСД проверяйте Модифицированность и Параметры.Ключ.Пустая() — код сам инициирует запись через вопрос пользователю; в фоновом сценарии документ нужно записать заранее.
  4. Уникальность ОС — единственная жёсткая валидация. При массовом программном наполнении ТЧ контролируйте дубли ОсновноеСредство сами, иначе запись упадёт на ОбработкаПроверкиЗаполнения.

🔗 Связанные разделы

🆕 Что нового

Версия Изменение Тип
3.0.72.1 Первичное описание (на релизе 3.0.72.1) 🆕