Документ «Удержание ИПН и ОПВ (налоговый учёт)»

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

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

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

После того как зарплата за месяц начислена, из доходов каждого сотрудника по законодательству РК нужно удержать: - ИПН — индивидуальный подоходный налог (перечисляется в бюджет); - ОПВ — обязательные пенсионные взносы (перечисляются в ЕНПФ / пенсионные фонды); - ВОСМС — взносы на обязательное социальное медицинское страхование (перечисляются в фонд медстрахования).

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

Важно про природу документа. Это расчётный зарплатный документ налогового учёта, а не документ бухгалтерских проводок. Он не формирует движений Дт/Кт по плану счетов — он пишет только в регистры накопления по расчётам с бюджетом и фондами. Бухгалтерские проводки (например, по счетам 3120 «ИПН», 3220 «ОПВ», 3210/3240 по соц. отчислениям и ВОСМС, 3350 «Краткосрочная задолженность по оплате труда») делает отдельный документ отражения зарплаты в регламентированном учёте, а не этот документ. (Подробности — в Части 2.)

Кто работает: бухгалтеры и расчётчики зарплаты, ежемесячно, после начисления зарплаты.

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

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

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

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

Проходим по шагам, как в курсе: от пустого документа до проведённого расчёта удержаний и проверки движений по регистрам.

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

Когда: каждый месяц, после того как проведены документы начисления зарплаты.

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

Раздел «Зарплата» → журнал документа → «Создать». Открывается пустая форма документа.

📷 СКРИН 02
СКРИН 02 — пустая форма нового документа удержаний.

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

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

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

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

Шаг 3. Рассчитываем удержания

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

📷 СКРИН 04
СКРИН 04 — результат расчёта — заполненные вкладки ИПН / ОПВ / ВОСМС.
💡 Подсказка. Перед расчётом система сама вызывает проверку заполнения. Если Организация или Месяц начисления не заполнены — расчёт молча не выполнится. Сначала заполняйте шапку.

Шаг 4. Проверяем суммы по сотрудникам

На каждой вкладке — строки «Сотрудник → Сумма → Месяц налогового периода». Проверяем, что суммы соответствуют начислениям.

📷 СКРИН 05
СКРИН 05 — вкладка «Удержанный ИПН» с детализацией по сотрудникам.
💡 Подсказка. Поле Месяц налогового периода в строке может отличаться от месяца документа — так оформляют ретроспективные корректировки (удержание за прошлый месяц из текущей зарплаты).

Шаг 5. Проводим

«Провести» или «Записать и закрыть». После проведения суммы попадут в регистры расчётов с бюджетом и фондами.

📷 СКРИН 06
СКРИН 06 — кнопка «Провести» и сообщение об успешном проведении.

Шаг 6. Проверяем движения по регистрам

В отличие от документов продажи/закупки, здесь нет бухгалтерских проводок Дт/Кт. Чтобы проверить результат — откройте «Движения документа» и посмотрите регистры ИПН расчёты с бюджетом, ОПВ подлежит перечислению в фонды, ВОСМС подлежит перечислению в фонды.

📷 СКРИН 07
СКРИН 07 — окно «Движения документа» — записи по трём регистрам накопления.
⚠️ Важно. Если в отчёте «Дт/Кт» пусто — это норма: данный документ проводок не делает. Проводки по удержаниям в бухучёт сформирует документ отражения зарплаты в регламентированном учёте.

Урок 2. Пересчитать только один вид удержания

Когда: нужно скорректировать, например, только ИПН, не трогая ОПВ и ВОСМС.

  1. Открываем документ, проверяем Организацию и Месяц начисления.
  2. Используем частную команду расчёта: «Рассчитать ИПН», «Рассчитать ОПВ» или «Рассчитать ВОСМС».
  3. Пересчитается только выбранная табличная часть; остальные две останутся как были.
  4. Записываем/проводим.
💡 Частные команды — это тот же расчётный движок, что и «Рассчитать», но с флагом только на нужный вид (см. Часть 2).

Урок 3. Ручная корректировка сумм

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

  1. Открываем документ, устанавливаем флаг «Ручная корректировка».
  2. Вручную правим суммы в нужной табличной части, при необходимости добавляем/удаляем строки сотрудников.
  3. Проводим документ.
⚠️ Важно (ключевая особенность). При установленном флаге «Ручная корректировка» автоматическое формирование движений пропускается — документ запишет ровно то, что вы ввели руками (точнее — наборы записей, подготовленные платформой). Если хотите, чтобы движения снова считались автоматически, снимите флаг перед проведением.

Урок 4. Полный пересчёт «с нуля»

Когда: после правки начислений зарплаты нужно пересобрать документ.

  1. Если документ проведён — отменяем проведение.
  2. Очищаем табличные части (команда очистки) — шапка остаётся.
  3. Проверяем Организацию и Месяц начисления.
  4. Снова жмём «Рассчитать».
  5. Проверяем и проводим.
⚠️ Важно. Пустой документ (все три таблицы очищены) провести нельзя — сработает проверка «должна быть хотя бы одна непустая таблица». Очистку используем только перед немедленным пересчётом.

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

Источник: реальный код релиза 3.0.72.1 (Documents/УдержаниеИПНиОПВНУ/Ext/ObjectModule.bsl, частично ManagerModule.bsl), плюс разбор objects/ и business-logic/. Несостыковки с авто-разбором вынесены в поле issues и помечены [KZ30-xxxx].

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

Реквизиты шапки. Обязательные (механизм платформы fill_value_required = ShowError): Организация, ПериодРегистрации («Месяц начисления»). Прочие: СтруктурноеПодразделение (фильтр сотрудников при расчёте), ПодразделениеОрганизации, РучнаяКорректировка (Булево — отключает автоформирование движений), Ответственный, Автор, Комментарий, КраткийСоставДокумента (служебная строка-представление, заполняется кодом).

Табличные части — три расчётные + одна служебная:

ТЧ Ключевые колонки Назначение
УдержанныйИПН ФизЛицо, Налог, МесяцНалоговогоПериода, СтруктурнаяЕдиница, ПодразделениеОрганизации удержанный ИПН по физлицу
УдержанныйОПВ ФизЛицо, Взнос, МесяцНалоговогоПериода, СтруктурнаяЕдиница, ПодразделениеОрганизации удержанные ОПВ
УдержанныеВОСМС ФизЛицо, Взнос, МесяцНалоговогоПериода, СтруктурнаяЕдиница, ПодразделениеОрганизации удержанные ВОСМС
ФизическиеЛица ФизическоеЛицо служебная — для механизма управления доступом (RLS)
🧩 Все три расчётные ТЧ симметричны и обрабатываются единообразно (один цикл подготовки + одна процедура формирования движений на каждую). Колонка суммы у ИПН называется Налог, у ОПВ/ВОСМС — Взнос.

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

Обработчик Что делает (по реальному коду 3.0.72.1)
ЗаполнитьНаборыЗначенийДоступа Заполняет наборы значений доступа по Организация / СтруктурноеПодразделение / списку физлиц из ТЧ ФизическиеЛица (вызов РасчетЗарплатыСервер.ЗаполнитьНаборыПоОрганизацииСтрутурномуПодразделениюСпискуФизЛиц). Это RLS, не бизнес-логика проведения.
ОбработкаЗаполнения При заполнении из Структура удаляет ключ Автор (чтобы не копировался) и переносит значения; затем ЗаполнениеДокументов.ЗаполнитьШапкуДокумента(ЭтотОбъект).
ОбработкаПроверкиЗаполнения Если хотя бы одна из трёх ТЧ (ИПН/ОПВ/ВОСМС) непуста — исключает все три из стандартной проверки заполнения (через массив непроверяемых реквизитов). Фактически гарантирует «нужна хотя бы одна непустая таблица».
ПередЗаписью При ОбменДанными.Загрузка — выходит. Иначе собирает массив трёх ТЧ и формирует КраткийСоставДокумента (ПроцедурыУправленияПерсоналомСервер.ЗаполнитьКраткийСоставДокумента(..., "ФизЛицо")). Других правок данных не делает.
ОбработкаПроведения Готовит наборы записей, при РучнаяКорректировка — выходит; иначе формирует движения по трём регистрам накопления (см. ниже).
ПриКопировании Ставит Дата = НачалоДня(ТекущаяДатаПользователя()).
⚠️ Несостыковка [KZ30-0008]. Авто-разбор (objects/, business-logic/) описывает ПередЗаписью как «контроль и исправление корректности данных всех трёх ТЧ», а сам документ — как формирующий «бухгалтерские проводки». Реальный код это не подтверждает: ПередЗаписью только строит КраткийСоставДокумента, а ОбработкаПроведения пишет исключительно в регистры накопления — никаких движений по плану счетов (Дт/Кт) документ не делает.

Как формируется проведение — реальный код (3.0.72.1)

Главное: документ — оркестратор. ОбработкаПроведения готовит параметры (временные таблицы из ТЧ) и делегирует формирование движений общему модулю РасчетЗарплатыСервер. Поэтому состав измерений/ресурсов регистра задаёт не документ, а профильный модуль зарплаты.

Источник: ObjectModule.bsl, процедура ОбработкаПроведения (стр. 88), целиком:

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

    // ПОДГОТОВКА ПРОВЕДЕНИЯ ПО ДАННЫМ ДОКУМЕНТА

    ПроведениеСервер.ПодготовитьНаборыЗаписейКПроведению(ЭтотОбъект);
    Если РучнаяКорректировка Тогда
        Возврат;                                   // ручное управление движениями
    КонецЕсли;

    ПараметрыПроведения = Документы.УдержаниеИПНиОПВНУ.ПодготовитьПараметрыПроведения(Ссылка, Отказ);
    Если Отказ Тогда
        Возврат;
    КонецЕсли;

    Реквизиты = ПараметрыПроведения.Реквизиты[0];

    // ИПН → регистр «ИПНРасчетыСБюджетом»
    ТаблицаУдержанныйИПН = РасчетЗарплатыСервер.ПодготовитьТаблицуИсчисленныхНалоговВзносовОтчислений(Реквизиты,
                                ПараметрыПроведения.УдержанныйИПН,
                                Движения.ИПНРасчетыСБюджетом.ВыгрузитьКолонки(),
                                Отказ);
    РасчетЗарплатыСервер.СформироватьДвижения(ТаблицаУдержанныйИПН, "ИПНРасчетыСБюджетом", Движения, Отказ);

    // ОПВ → регистр «ОПВПодлежитПеречислениюВФонды»
    ТаблицаУдержанныйОПВ = РасчетЗарплатыСервер.ПодготовитьТаблицуИсчисленныхНалоговВзносовОтчислений(Реквизиты,
                                ПараметрыПроведения.УдержанныйОПВ,
                                Движения.ОПВПодлежитПеречислениюВФонды.ВыгрузитьКолонки(),
                                Отказ);
    РасчетЗарплатыСервер.СформироватьДвижения(ТаблицаУдержанныйОПВ, "ОПВПодлежитПеречислениюВФонды", Движения, Отказ);

    // ВОСМС → регистр «ВОСМСПодлежитПеречислениюВФонды»
    ТаблицаУдержанныеВОСМС = РасчетЗарплатыСервер.ПодготовитьТаблицуИсчисленныхНалоговВзносовОтчислений(Реквизиты,
                                ПараметрыПроведения.УдержанныеВОСМС,
                                Движения.ВОСМСПодлежитПеречислениюВФонды.ВыгрузитьКолонки(),
                                Отказ);
    РасчетЗарплатыСервер.СформироватьДвижения(ТаблицаУдержанныеВОСМС, "ВОСМСПодлежитПеречислениюВФонды", Движения, Отказ);

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

Разбор по шагам:

  1. ПроведениеСервер.ПодготовитьНаборыЗаписейКПроведению(ЭтотОбъект) — стандартная инициализация наборов записей перед проведением (есть в каждом зарплатном документе).
  2. Если РучнаяКорректировка Тогда Возврат — при ручной корректировке весь авто-расчёт движений пропускается: запишется то, что подготовлено платформой/введено пользователем. Это поведение из Урока 3.
  3. ПодготовитьПараметрыПроведения(Ссылка, Отказ) — функция ManagerModule: пакетным запросом читает реквизиты документа (Организация, головную организацию, ПериодРегистрации и т.д.) и выгружает три табличные части в временные таблицы (ТекстЗапросаУдержанныйИПН/ОПВ/ВОСМС). Учитывает функциональную опцию ПоддержкаРаботыСоСтруктурнымиПодразделениями.
  4. На каждый вид удержания — пара вызовов: ПодготовитьТаблицуИсчисленныхНалоговВзносовОтчислений(...) приводит данные ТЧ к структуре колонок целевого регистра, а СформироватьДвижения(..., "ИмяРегистра", Движения, Отказ) записывает строки в нужный набор записей.
💡 Важно для отладки: СформироватьДвижения принимает имя регистра строкой — поэтому привязка «ТЧ → регистр» жёстко зафиксирована в этой процедуре, а не где-то в настройках.

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

Документ пишет в три регистра накопления (вид «Остатки»), бухгалтерских проводок не делает:

Регистр Источник (ТЧ → колонка) Что отражает
ИПНРасчетыСБюджетом УдержанныйИПН.Налог задолженность по ИПН перед бюджетом
ОПВПодлежитПеречислениюВФонды УдержанныйОПВ.Взнос обязательства по ОПВ перед пенсионными фондами (ЕНПФ)
ВОСМСПодлежитПеречислениюВФонды УдержанныеВОСМС.Взнос обязательства по ВОСМС перед фондом медстрахования

Состав измерений собирается модулем зарплаты по колонкам целевого регистра (Движения.<Регистр>.ВыгрузитьКолонки()). По запросам в ManagerModule (расчёт/остатки) видно, что регистр ИПНРасчетыСБюджетом оперирует, как минимум, измерениями ФизЛицо/Налогоплательщик, СтруктурнаяЕдиница, ПодразделениеОрганизации, МесяцНалоговогоПериода, а также служебными ВидДвижения (Приход) и ВидСтроки (Перечисление.РасчетыСБюджетомФондамиВидСтроки.Исчисление). Удержания документа отражаются как исчисление по виду движения Приход.

⚠️ Несостыковка [KZ30-0009]. Авто-разбор objects/ приводит «плоский» состав регистра ИПН (Организация, ФизическоеЛицо, МесяцНалоговогоПериода, СтруктурнаяЕдиница; ресурс «СуммаНалога») и местами называет движения «проводками». По реальным запросам ManagerModule измерений больше (есть Налогоплательщик, ВидСтроки, ПодразделениеОрганизации), а ресурс ИПН в коде называется Налог. Точный состав измерений/ресурсов сверяйте по метаданным регистров РегистрНакопления.ИПНРасчетыСБюджетом / ОПВПодлежитПеречислениюВФонды / ВОСМСПодлежитПеречислениюВФонды, а Дт/Кт — по документу отражения зарплаты.

Что про бухгалтерские проводки (план счетов КЗ)

Этот документ проводок не формирует. В регламентированный учёт удержания и обязательства попадают через отдельный документ отражения зарплаты в учёте, который сопоставляет суммы со счетами плана счетов РК. Ориентиры по счетам (формирует не этот документ): - 3350 — краткосрочная задолженность по оплате труда; - 3120 — ИПН (к перечислению в бюджет); - 3220 — ОПВ; 3210 — соц. отчисления (СО); 3240 — ВОСМС (счета группы 32хх по обязательным платежам — точное соответствие задаёт учётная политика и настройки отражения).

⚠️ Не используйте российские счета (70/68/69) — это конфигурация для Казахстана. И не доверяйте «плоским» проводкам из авто-разбора objects/: для этого документа их попросту нет.

Валидации

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

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

💼 Партнёру / внедренцу. Три типовые жалобы клиента и куда смотреть:
  1. «Провёл — а в Дт/Кт пусто» — это нормально. Документ пишет в регистры расчётов с бюджетом/фондами; проводки делает документ отражения зарплаты. Объясните пользователю разделение «расчёт → отражение».
  2. «Кнопка „Рассчитать“ ничего не делает» — почти всегда не заполнены Организация или Месяц начисления: расчёт прерывается на ПроверитьЗаполнение().
  3. «Суммы не совпадают / задвоились» — проверьте флаг «Ручная корректировка» (он отключает авто-движения) и МесяцНалоговогоПериода в строках (ретро-корректировки). Сами алгоритмы исчисления — в начислении зарплаты и модуле РасчетЗарплатыСервер, а не в этом документе.
🧩 Заметки для разработчика.
  1. Документ не делает проводок. Не ищите формирование Движения.Хозрасчетный/Движения.Налоговый — их нет. Только три регистра накопления через РасчетЗарплатыСервер.СформироватьДвижения.
  2. РучнаяКорректировка = Истина → ранний Возврат в ОбработкаПроведения. При автотестах/обработках, ожидающих движения, всегда сбрасывайте этот флаг.
  3. Привязка «ТЧ → регистр» жёстко в коде (имя регистра строкой в СформироватьДвижения). Менять состав движений — только согласованно с метаданными регистров.
  4. ОбработкаПроверкиЗаполнения работает «от обратного»: не добавляет ошибку при пустых ТЧ, а исключает ТЧ из проверки, когда хотя бы одна непуста. Пустой документ падает на стандартной проверке заполнения.
  5. ФизическиеЛица — служебная ТЧ для RLS, заполняется/используется механизмом управления доступом; в бизнес-расчётах не участвует.
  6. Налогоплательщик/ВидСтроки в регистрах — берите состав измерений из метаданных, а не из objects/ (см. [KZ30-0009]).

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

🆕 Что нового

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