Документ «Инвентаризация НЗП»

Документ фиксирует результаты инвентаризации незавершённого производства: вручную записывает фактические суммы остатков НЗП по номенклатурным группам в разрезе бухгалтерского и (опционально) налогового учёта на дату инвентаризации. Это документ-опись: он НЕ проводится и НЕ формирует проводок и движений по регистрам (Posting = Deny, RegisterRecords пуст в релизе 3.0.72.1). Служит источником данных для закрытия месяца и сверки фактических остатков НЗП с учётными.

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

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

В производстве часть затрат на конец периода «висит» в незавершённом производстве (НЗП) — это продукция, работа над которой начата, но не закончена. Перед закрытием месяца, перед годовой отчётностью, при смене материально-ответственных лиц или по требованию проверяющих предприятие проводит инвентаризацию НЗП: комиссия определяет фактический объём незавершёнки и оценивает её сумму.

Документ «Инвентаризация НЗП» — это электронная опись результатов такой инвентаризации. В него вручную заносят суммы фактических остатков НЗП по каждой номенклатурной группе (например, «Полуфабрикаты стальные», «Заготовки алюминиевые») отдельно для бухгалтерского учёта и, если ведётся учёт КПН, для налогового учёта.

⚠️ Важно с самого начала. В типовой поставке релиза 3.0.72.1 этот документ не делает проводок и не пишет движения ни в один регистр. У него в метаданных Posting = Deny — то есть кнопки «Провести» у него нет в принципе, документ только записывается. Он не уменьшает и не корректирует остатки НЗП на счетах автоматически. Его роль — зарегистрировать факт и суммы инвентаризации, чтобы эти данные можно было сверить с учётными остатками и использовать при закрытии месяца / ручных корректировках. Подробности и «куда же тогда деваются суммы» — в [Части 2](#-часть-2-для-программиста).

Кто работает: бухгалтер по производству / по затратам, реже — экономист или ответственный за инвентаризацию. Периодичность — по регламенту инвентаризаций (как правило, на конец месяца/года).

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

Документ относится к подсистеме «Производство» (по разбору метаданных объекта). Открывается через журнал документов инвентаризации НЗП в этом разделе; новый документ создаётся кнопкой «Создать».

📷 СКРИН 01
СКРИН 01 — раздел «Производство», открытый журнал «Инвентаризация НЗП». (AccountingKZ30 во Fresh; предполагаемый маршрут: Производство → Инвентаризация НЗП)
⚠️ Пробел в данных [KZ30-NZP-01]. В карте навигации Fresh (navigation-map.json) для Документ.ИнвентаризацияНЗП маршрут не задан — объекта там нет (в карте присутствуют только 26 «ходовых» объектов: реализация, поступление, банк, касса, закрытие месяца и т.д.). Точные названия раздела и пункта меню как они выглядят в левом сайдбаре Fresh нужно подтвердить на живой базе. Раздел «Производство» указан по разбору objects/ и логике конфигурации, но не сверен с картой навигации. До сверки считайте маршрут ориентировочным.

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

Проходим по шагам: от пустого документа до записанной описи НЗП. Помним: документ записывается, а не проводится — кнопки «Провести» здесь нет.

Урок 1. Регистрация инвентаризации НЗП

Когда: комиссия определила фактические суммы незавершённого производства, и эти данные нужно занести в программу (обычно на конец месяца).

Шаг 1. Создаём документ

В журнале «Инвентаризация НЗП» нажимаем «Создать» — откроется форма документа.

📷 СКРИН 02
СКРИН 02 — журнал документов и кнопка «Создать».

Шаг 2. Заполняем шапку

📷 СКРИН 03
СКРИН 03 — заполненная шапка документа (Организация, Дата, Подразделение).
⚠️ Важно. Обязателен только реквизит Организация. Если меняете Структурное подразделение / Организацию так, что подразделение не принадлежит выбранной организации, программа спросит, очистить ли некорректные значения — ответьте по ситуации (см. Урок 3).

Шаг 3. Указываем счёт затрат

💡 Подсказка. Счёт затрат в этом документе — справочный ориентир (какой счёт инвентаризируем). Документ его никак не двигает: проводок нет. Не ждите, что после записи на этом счёте что-то изменится.
📷 СКРИН 04
СКРИН 04 — выбор счёта затрат (БУ).

Шаг 4. Включаем налоговый учёт (если нужно)

Если ведёте учёт КПН и хотите зафиксировать суммы НЗП и для налогового учёта: - ставим флаг «Учитывать КПН» — программа сама подставит Вид учёта НУ и откроет поле Счёт затрат (НУ) и колонку Сумма (НУ) в таблице; - Счёт затрат (НУ) заполнится автоматически из счёта БУ (его можно поправить).

📷 СКРИН 05
СКРИН 05 — флаг «Учитывать КПН» включён, появились поля НУ.
💡 Подсказка. Если флаг «Учитывать КПН» выключен — колонки и поля налогового учёта скрыты, заполнять их не нужно.

Шаг 5. Заполняем состав (таблицу НЗП)

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

📷 СКРИН 06
СКРИН 06 — табличная часть «Состав» с номенклатурными группами и суммами.
💡 Подсказка. Суммы вводятся вручную — программа их не рассчитывает. Источник — инвентаризационная ведомость / расчёт оценки НЗП, подготовленные комиссией.

Шаг 6. Записываем

Нажимаем «Записать» или «Записать и закрыть». Кнопки «Провести» у документа нет — он только сохраняется в базе.

📷 СКРИН 07
СКРИН 07 — документ записан (статус в шапке формы).
⚠️ Важно. После записи документ не меняет остатки на счетах НЗП и не появляется в отчётах по проводкам (Дт/Кт), потому что проводок не формирует. Это нормально для документа-описи. Чтобы фактические данные инвентаризации повлияли на учёт, их используют дальше — при закрытии месяца или вручную (см. Часть 2).

Урок 2. Копирование предыдущей инвентаризации

Чтобы не набивать состав заново каждый месяц, удобно копировать прошлый документ: 1. В журнале выделяем документ-источник. 2. Контекстное меню → «Скопировать» (или F9). 3. Программа создаст новый документ: новые Номер и Дата (текущая), а Организация, подразделения, счета затрат и вся таблица «Состав» скопируются из источника. Поле Автор очистится и заполнится текущим пользователем. 4. Меняем Дату на дату новой инвентаризации и актуализируем суммы (БУ/НУ) в таблице по свежим данным. 5. «Записать».

💡 По сути это обычное копирование — состав переносится «как есть», поэтому проверьте и перебейте суммы под новый период.

Урок 3. Проверка связки «Организация — Подразделение»

При смене подразделения (через связанное поле «Структурное подразделение / Организация») программа проверяет, принадлежит ли подразделение выбранной организации: 1. Если не принадлежит — откроется вопрос вида «Выбранное подразделение не соответствует организации. Очистить некорректные значения?». 2. «Да» — программа очистит несоответствующее значение; «Нет» — вернёт прежнее.

⚠️ Эта проверка не даёт записать документ с несовместимой парой «Организация — Подразделение». Отвечайте осознанно, чтобы не потерять введённое подразделение.

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

Источник: реальный код релиза 3.0.72.1 (Documents/ИнвентаризацияНЗП/Ext/ObjectModule.bsl, 60 строк) и метаданные Documents/ИнвентаризацияНЗП.xml, плюс разбор objects/ и business-logic/.

Главное: документ НЕ проводится и НЕ формирует движений

Это подтверждено метаданными документа (ИнвентаризацияНЗП.xml):

<Posting>Deny</Posting>
<RealTimePosting>Allow</RealTimePosting>
<RegisterRecordsDeletion>AutoDelete</RegisterRecordsDeletion>
<RegisterRecordsWritingOnPost>WriteModified</RegisterRecordsWritingOnPost>
<RegisterRecords/>          <!-- ПУСТО: ни одного регистра -->

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

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

Реквизиты шапки (имя → подпись на форме):

Реквизит Тип Обяз. Подпись на форме
Организация СправочникСсылка.Организации ShowError Организация
ПодразделениеОрганизации СправочникСсылка.ПодразделенияОрганизаций DontCheck Подразделение
СтруктурноеПодразделение СправочникСсылка.ПодразделенияОрганизаций DontCheck Структурное подразделение
СчетЗатратБУ ПланСчетовСсылка.Типовой DontCheck Счет затрат (БУ)
СчетЗатратНУ ПланСчетовСсылка.Налоговый DontCheck Счет затрат (НУ)
УчитыватьКПН Булево DontCheck Учитывать КПН
ВидУчетаНУ СправочникСсылка.ВидыУчетаНУ DontCheck Вид учета НУ
Автор СправочникСсылка.Пользователи DontCheck Автор
Ответственный СправочникСсылка.Пользователи DontCheck Ответственный
Комментарий Строка DontCheck Комментарий

Табличная часть Состав (имя → подпись):

Реквизит ТЧ Тип Подпись
НоменклатурнаяГруппа СправочникСсылка.НоменклатурныеГруппы Номенклатурная группа
СуммаБУ Число Сумма (БУ)
СуммаНУ Число Сумма (НУ)

(Все подписи взяты из синонимов ИнвентаризацияНЗП.xml, локаль ru.)

Нумерация: NumberLength = 11, NumberPeriodicity = Year.

Формы: ФормаДокумента (основная), ФормаСписка (журнал), ФормаВыбора (выбор как основания в других объектах).

Жизненный цикл — обработчики ObjectModule (3.0.72.1)

Весь модуль состоит из 4 обработчиков событий и не содержит проведения:

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

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

Реальный код: ОбработкаПроверкиЗаполнения и ПередЗаписью

Это два самых содержательных обработчика. Привожу дословно из релиза 3.0.72.1:

Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)

    МассивНепроверяемыхРеквизитов = Новый Массив();
    ПараметрыПострочнойПроверки   = Новый Структура();

    Если Состав.Количество() > 0 Тогда
        МассивНепроверяемыхРеквизитов.Добавить("Состав");
    КонецЕсли;

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

Разбор ОбработкаПроверкиЗаполнения: - Обязательность реквизита Организация обеспечивается свойством метаданных ЗаполнениеПроверки = ВыдаватьОшибку (ShowError), а не этим кодом. - Логика тут обратная интуиции: если в Состав есть строки, то «Состав» добавляется в массив НЕпроверяемых реквизитов (то есть стандартная проверка заполнения по нему отключается). Когда строк нет — массив пуст, и поведение определяется метаданными реквизита Состав. - ⚠️ Локальные переменные МассивНепроверяемыхРеквизитов и ПараметрыПострочнойПроверки в этой процедуре создаются, но никуда не передаются (нет вызова типовой ОбщегоНазначения.УдалитьНепроверяемыеРеквизиты(...) или построчной проверки). Фактически процедура не влияет на состав проверяемых реквизитов — выглядит как заготовка/недоработанный шаблон. См. issues.

Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)

    Если ПроцедурыБухгалтерскогоУчетаВызовСервераПовтИсп.ИспользоватьОднуНоменклатурнуюГруппу() Тогда
        ПараметрыОтбора = Новый Структура;
        ПараметрыОтбора.Вставить("НоменклатурнаяГруппа", Справочники.НоменклатурныеГруппы.ПустаяСсылка());
        НайденныеСтроки = Состав.НайтиСтроки(ПараметрыОтбора);
        Если НайденныеСтроки.Количество() > 0 Тогда
            НоменклатурнаяГруппа = ПроцедурыБухгалтерскогоУчетаВызовСервераПовтИсп.ОсновнаяНоменклатурнаяГруппа();
            Для Каждого СтрокаТаблицы Из НайденныеСтроки Цикл
                СтрокаТаблицы.НоменклатурнаяГруппа = НоменклатурнаяГруппа;
            КонецЦикла;
        КонецЕсли;
    КонецЕсли;

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

Разбор ПередЗаписью: - Срабатывает только когда в учётной политике включён режим «использовать одну номенклатурную группу» (ИспользоватьОднуНоменклатурнуюГруппу()). - Находит в Состав строки с пустой НоменклатурнаяГруппа и подставляет в них основную номенклатурную группу (ОсновнаяНоменклатурнаяГруппа()). - ⚠️ Это заполнение пустых значений, а НЕ удаление/фильтрация строк. Разбор objects/ описывает это как «отфильтрует/удалит несоответствующие строки» — по реальному коду строки не удаляются, у них лишь проставляется группа по умолчанию. См. issues.

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

Их нет. В таблице ниже — то, что обычно ожидают увидеть, и реальность:

Ожидание (из общих представлений) Реальность в 3.0.72.1
Проводки Дт/Кт по счетам НЗП (1340/1350) Не формируются. Posting = Deny, ОбработкаПроведения отсутствует
Движения в регистре сведений «остатки НЗП» Нет. <RegisterRecords/> пуст — документ не регистратор
Списание/корректировка затрат Нет. Документ только хранит введённые суммы
⚠️ Несостыковка [KZ30-NZP-02]. Раздел «Проводки» в objects/ и business-logic/ честно помечает register_records как пустой, но местами допускает формулировки «при проведении данные переносятся в учётные регистры» / «движения реализованы в ObjectModule (не раскрыты)». По факту проведение запрещено метаданными, а ОбработкаПроведения в модуле нет. Никаких Дт/Кт у этого документа нет и быть не может без доработки. Не выдавайте «плоские» проводки по НЗП за поведение документа.

Куда тогда деваются суммы инвентаризации

Поскольку документ — опись, фактические остатки НЗП влияют на учёт не через него, а через смежные механизмы (это типовая для КЗ-конфигурации схема; точная привязка требует сверки на базе): - Закрытие месяца (zakrytie-mesyaca) — регламентные операции расчёта себестоимости и закрытия счетов производства могут учитывать оценку НЗП; именно там формируются проводки по счетам подразделов 1340/1350 (НЗП) и счетам затрат. - Ручные операции/корректировки — разницу между фактическим (по инвентаризации) и учётным НЗП при необходимости отражают «Операцией, введённой вручную». - Отчёты-сверки — данные документа сопоставляют с учётными остатками НЗП.

💡 План счетов КЗ для контекста: НЗП — подразделы 1340 «Незавершённое производство» (и при необходимости 1350), готовая продукция — 1320, запасы/материалы — 1330. Российские счета (20/43/91) здесь не применяются. Но ещё раз: сам документ ни один из этих счетов не трогает.

Валидации

Что Где реализовано Поведение
Организация обязательна Метаданные реквизита (ShowError) Без организации документ не записать
«Состав» непустой НЕ enforced в реальном коде ОбработкаПроверкиЗаполнения НЕ требует строк; см. [KZ30-NZP-03]
Связка «Организация — Подразделение» ФормаДокумента (диалог) Вопрос об очистке некорректных значений при смене подразделения
Дата запрета изменения Платформенный механизм Нельзя записать в закрытый период
Пустая группа в строке ПередЗаписью Подстановка основной номенклатурной группы (только в режиме «одна номенклатурная группа»)
⚠️ Несостыковка [KZ30-NZP-03]. objects/ утверждает: «Табличная часть "Состав" должна содержать хотя бы одну строку — пустая ТЧ блокирует запись (ShowError)». В реальном ObjectModule этой проверки нет: ОбработкаПроверкиЗаполнения не выдаёт ошибку при пустом Состав (и вообще не передаёт массив непроверяемых дальше). Блокировка пустой ТЧ может задаваться свойством метаданных реквизита Состав (ПроверкаЗаполнения = ВыдаватьОшибку) — это нужно подтвердить по ИнвентаризацияНЗП.xml. До подтверждения не утверждайте, что пустой документ точно не запишется.

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

Модуль Зачем
ЗаполнениеДокументов ЗаполнитьШапкуДокумента при создании/копировании; валюта регламентированного учёта
ОбщегоНазначенияБКВызовСервераПовтИсп ПолучитьВалютуРегламентированногоУчета()
ПроцедурыБухгалтерскогоУчетаВызовСервераПовтИсп ИспользоватьОднуНоменклатурнуюГруппу(), ОсновнаяНоменклатурнаяГруппа()
ПроцедурыНалоговогоУчета (через формы) Заполнение ВидУчетаНУ, конвертация СчетЗатратБУ → СчетЗатратНУ, функциональные опции по дате
РаботаСДиалогами / РаботаСДиалогамиКлиент (формы) Диалоги «Организация — Подразделение»
ВерсионированиеОбъектов, ПодключаемыеКоманды (ManagerModule/формы) Версионирование, команды печати, ограничения доступа
💼 Партнёру / внедренцу. Если клиент ждёт, что «Инвентаризация НЗП» сама сделает проводки или поправит остатки — это ожидание неверно для типовой 3.0.72.1: документ их не делает (Posting = Deny, регистров нет). Влияние на учёт идёт через закрытие месяца и ручные операции. Если по проекту нужны автоматические движения/корректировки от инвентаризации НЗП — это доработка (добавление регистратора и ОбработкаПроведения либо отдельный документ «Корректировка НЗП»), а не настройка. Проверяйте также режим «одна номенклатурная группа» в учётной политике — он молча перезаписывает пустые группы в строках при записи.
🧩 Заметки для разработчика.
  1. Нет ОбработкаПроведения и пустой RegisterRecords — не ищите движения в модуле, их нет; не пишите тесты «на проводки».
  2. ОбработкаПроверкиЗаполнения — фактически заготовка: создаёт МассивНепроверяемыхРеквизитов/ПараметрыПострочнойПроверки, но никуда их не передаёт. При доработке (например, обязательность сумм) реализуйте передачу через типовой API проверки и/или свойства метаданных.
  3. ПередЗаписью заполняет, а не фильтрует строки Состав — при доработке учитывайте, что пустые группы будут заменены основной, если включён соответствующий режим УП.
  4. Автор исключается из ДанныеЗаполнения в ОбработкаЗаполнения — при программном создании не полагайтесь на переданного автора.
  5. Обязательность Организация и (возможно) непустого Состав задаётся метаданными, а не модулем — правьте свойства реквизитов, а не только код.

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

🆕 Что нового

Версия Изменение Тип
3.0.72.1 Первичное описание (на релизе 3.0.72.1). Зафиксировано: документ не проводится (Posting = Deny) и не формирует движений (RegisterRecords пуст) 🆕