Документ «Инвентаризация ОС»
Документ фиксирует результаты инвентаризации (сверки) основных средств: подгружает перечень ОС по данным учёта, позволяет отметить фактическое наличие и стоимость (вручную или по штрихкодам с ТСД), сам считает излишки и недостачи по каждому объекту и печатает описи Инв-8 и Инв-16. Это информационный документ — он НЕ формирует бухгалтерских проводок и не делает движений по регистрам; выявленные расхождения вы затем оформляете отдельными документами (принятие к учёту излишков, списание недостач). Раздел «ОС и НМА».
🎯 Что это и зачем
Раз в год (а также при смене МОЛ, ревизии, перед годовой отчётностью) нужно сверить, что числится на балансе по ОС, с тем, что реально стоит в цехах и кабинетах. «Инвентаризация ОС» автоматизирует эту сверку:
- подтягивает список ОС по данным учёта из регистра местонахождения (с инвентарными номерами и МОЛ на дату документа);
- даёт отметить по каждому объекту фактическое наличие и фактическую стоимость — руками или загрузкой штрихкодов с терминала сбора данных (ТСД);
- автоматически считает излишки и недостачи (по наличию и по сумме) построчно;
- печатает официальные формы Инв-8 (инвентаризационная опись) и Инв-16 с составом комиссии, МОЛ и подразделениями.
Кто работает: бухгалтер по ОС и члены инвентаризационной комиссии. Периодичность — по графику инвентаризаций организации.
🧭 Где найти в программе
Раздел «ОС и НМА» → пункт «Инвентаризация ОС». Откроется журнал документов; новый создаём кнопкой «Создать».
navigation-map.json (релиз 3.0.72.1) объект Документ.ИнвентаризацияОС отсутствует — карта маршрутов содержит только блоки «Продажа / Покупка / Банк и касса». Раздел «ОС и НМА» определён по подсистеме и метаданным объекта (печатные формы Инв-8/Инв-16, работа с регистром МестонахождениеОСБухгалтерскийУчет), но точная подпись пункта в левом меню Fresh может отличаться («Инвентаризация ОС», «Инвентаризация основных средств» и т. п.). Сверьте по своей базе и при необходимости поправьте fresh_nav. Несостыковка занесена в issues.👤 Часть 1. Для пользователя
Проходим по шагам, как в курсе: от пустого документа до оформленной описи с подсчитанными излишками и недостачами.
Урок 1. Инвентаризация по данным учёта (основной сценарий)
Когда: плановая инвентаризация ОС по организации или по подразделению.
Шаг 1. Создаём документ и заполняем шапку
«Создать». Заполняем шапку: - Организация — обязательно (без неё не сработает заполнение по остаткам). - Структурное подразделение — если инвентаризуем не всю организацию, а конкретное подразделение (цех, склад, офис). Можно оставить пустым — тогда берутся все. - Дата начала / Дата окончания инвентаризации — период фактического обследования (попадают в шапку печатных форм). - Документ-основание (вид / номер / дата) и причина проведения — реквизиты приказа о проведении инвентаризации (текстовые, для печатных форм).
Шаг 2. Заполняем перечень ОС по учёту
Встаём в табличную часть «ОС» и нажимаем «Заполнить по остаткам» (кнопка в командной панели табличной части). Система: - очистит уже введённые строки (предупредив об этом); - запросит ОС из регистра местонахождения ОС на дату документа (с учётом подразделения); - заполнит строки с флагом «Наличие по данным учёта» = Да, балансовой стоимостью, инвентарным номером и МОЛ.
Шаг 3. Указываем фактическое наличие
После физического обхода для каждой строки проставляем результат: - Наличие фактическое — Да (ОС на месте) или Нет (не найдено); - Стоимость фактическая — обычно равна учётной; отличается только при переоценке.
Система сразу пересчитает служебные колонки Излишек и Недостача (по количеству и по сумме).
Шаг 4. Заполняем комиссию
В табличной части «Инвентаризационная комиссия» добавляем членов комиссии (кнопка «Подбор комиссии» открывает выбор из справочника физических лиц) и отмечаем Председателя — флаг ставится только у одного человека.
Шаг 5. Записываем и печатаем
«Записать». Затем из меню «Печать» формируем Инв-8 (инвентаризационная опись) или Инв-16.
Урок 2. Инвентаризация по штрихкодам (ТСД)
Когда: ОС промаркированы штрихкодами и есть терминал сбора данных — это кратно ускоряет обход.
- Создаём и заполняем документ по остаткам (Урок 1, шаги 1–2).
- Записываем документ — без записи загрузка с ТСД не выполнится (система спросит «Документ был изменён, записать изменения?»).
- Нажимаем «Загрузить данные из ТСД», выбираем подключённый терминал.
- Система считает штрихкоды и сопоставит их со справочником ОС: - нашёлся штрихкод среди строк документа → ставит «Наличие фактическое = Да», стоимость фактическую = учётной; - штрихкод есть в справочнике ОС, но строки в документе нет → добавит новую строку как излишек (наличие по учёту = Нет, фактическое = Да); - строка была, но её штрихкод с ТСД не пришёл → снимет «Наличие фактическое» (потенциальная недостача); - штрихкод не найден в справочнике → выдаст сообщение «Основное средство со штрихкодом … не найдено».
- Проверяем результат загрузки, при необходимости правим вручную, записываем и печатаем.
Урок 3. Что делать с излишками и недостачами
Документ инвентаризации только фиксирует расхождения — он не исправляет баланс сам. По результатам:
- излишки ОС (нашли то, чего нет на балансе) — оформляют документом «Принятие к учёту ОС» (вид операции «По результатам инвентаризации»);
- недостачи ОС (на балансе есть, фактически нет) — оформляют документом «Списание ОС».
🛠 Часть 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 «Основные средства» |
objects/ мог подавать «плоские» проводки как свойство самого документа инвентаризации. По реальному коду 3.0.72.1 это неверно: Документ.ИнвентаризацияОС не проводит ничего. Счета 2410/2420/6280/7470 и конкретные корреспонденции в таблице выше — иллюстрация для смежных документов и подбираются их логикой и учётной политикой; точные Дт/Кт сверяйте по отчёту «Дт/Кт» уже на проведённом «Принятии к учёту ОС» / «Списании ОС». Несостыковка занесена в issues.Валидации
| Что проверяется | Где | Как |
|---|---|---|
Дубли ОсновноеСредство в ТЧ ОС |
ObjectModule.ОбработкаПроверкиЗаполнения |
УправлениеВнеоборотнымиАктивамиСервер.ПроверитьОтсутствиеДублейВТабличнойЧасти(ЭтотОбъект, "ОС", Новый Структура("ОсновноеСредство"), Отказ) |
Заполненность Организация |
Платформа (ShowError) + клиент перед заполнением |
Команды ЗаполнитьПоОстаткам/ЗаполнитьДанныеУчета прерываются с «Не выбрана организация» |
| Единственный председатель комиссии | Клиент, обработчик флага Председатель |
При установке нового флага предыдущий снимается |
| Штрихкод найден при загрузке с ТСД | Клиент/сервер, ОбработатьШтрихкоды* |
Ненайденные штрихкоды — в сообщения пользователю |
Обратите внимание: нет проверок на обязательность дат, основания, комиссии или непустоту ТЧ. Документ можно записать почти пустым — он информационный.
Зависимости (общие модули)
УправлениеВнеоборотнымиАктивамиСервер (проверка дублей, инвентарные номера и МОЛ на дату, заполнение ТЧ), МенеджерОборудованияКлиент (ТСД — подключение, загрузка/выгрузка), РаботаСДиалогами(Клиент/КлиентСервер) (выбор структурного подразделения и организации), ЗаполнениеДокументов (заполнение шапки), ПодключаемыеКоманды(Клиент/Сервер), ВерсионированиеОбъектов, ОбщегоНазначения(Клиент/БК). Печатные формы Инв-8/Инв-16 — в ManagerModule (ПечатьИНВ8 ≈547 стр., ПечатьИНВ16 ≈421 стр.), работают в привилегированном режиме и читают МестонахождениеОСБухгалтерскийУчет.
Связи и источники данных
- Документы-основания (
based_on): не определено — документ создаётся независимо. Реквизиты «документ-основание» (вид/номер/дата) — текстовые, для печати, ссылкой на объект не являются. - Создаётся на основании этого (
inverse_based_on): не определено — типовое авто-создание «Принятия к учёту ОС» / «Списания ОС» из инвентаризации в 3.0.72.1 не предусмотрено. - Регистры (
register_records): пусто (см. выше).
- «Документ ничего не проводит» — это by design, а не баг. Если клиент ждёт, что инвентаризация сама оприходует излишки или спишет недостачи, — объясните маршрут: инвентаризация → ручной ввод «Принятия к учёту ОС» (излишки) и «Списания ОС» (недостачи). Сами проводки и счета КЗ (2410/2420/6280/7470) определяются уже этими документами и учётной политикой.
- Данные подтягиваются на дату документа из
МестонахождениеОСБухгалтерскийУчет. «Не те ОС / не тот МОЛ» в описи почти всегда = неверная дата документа или незакрытое местонахождение, а не ошибка инвентаризации.- ТСД требует записанного документа и заполненных штрихкодов в карточках ОС. Нет штрихкода — ОС не выгрузится на терминал и не сопоставится при загрузке.
- Расширяя документ, не пытайтесь искать движения — их нет. Если в проекте нужно, чтобы инвентаризация ОС влияла на учёт, это отдельная доработка (свой регистр или авто-формирование документов-следствий), а не правка существующего
ОбработкаПроведения.ОбработкаЗаполнениянамеренно вычищаетАвториз входной структуры — при программном создании черезСтруктурапередавать автора бесполезно, ставьте реквизит отдельно после заполнения.- Перед загрузкой/выгрузкой ТСД проверяйте
МодифицированностьиПараметры.Ключ.Пустая()— код сам инициирует запись через вопрос пользователю; в фоновом сценарии документ нужно записать заранее.- Уникальность ОС — единственная жёсткая валидация. При массовом программном наполнении ТЧ контролируйте дубли
ОсновноеСредствосами, иначе запись упадёт наОбработкаПроверкиЗаполнения.
🔗 Связанные разделы
- prinyatie-k-uchetu-os — оформление излишков ОС, выявленных при инвентаризации (вид операции «По результатам инвентаризации»)
- spisanie-os — оформление недостач ОС
- inventarizaciya-tovarov-na-sklade — аналогичная инвентаризация для ТМЗ (склад)
- prinyatie-k-uchetu-nma — учёт нематериальных активов (параллельный модуль)
🆕 Что нового
| Версия | Изменение | Тип |
|---|---|---|
| 3.0.72.1 | Первичное описание (на релизе 3.0.72.1) | 🆕 |