Документ «Начисление зарплаты работникам организаций»
Документ рассчитывает заработную плату сотрудников за месяц: оклады, отпускные, больничные, компенсации. При проведении он не делает бухгалтерских проводок — он пишет данные в специализированные регистры зарплаты: задолженность перед работниками (ВзаиморасчетыСРаботникамиОрганизаций) и сведения о доходах для расчёта налогов и взносов (ИПН, ОПВ, СН, СО, ОСМС, ЕП и др.). Проводки в бухучёт делает отдельный документ «Отражение зарплаты в бухучёте / реглучёте». Центральный документ раздела «Зарплата».
🎯 Что это и зачем
Каждый месяц нужно начислить сотрудникам зарплату: посчитать оклады за отработанное время, отпускные и больничные по среднему заработку, компенсации при увольнении. От суммы начисленного дохода зависят все «зарплатные» налоги и взносы Казахстана — ИПН, ОПВ, социальный налог, социальные отчисления, ОСМС и единый платёж. Документ «Начисление зарплаты работникам организаций» считает эти начисления и формирует базу доходов для последующих расчётов.
Важно понимать роль документа. Это расчётный документ. Он не трогает бухгалтерские счета напрямую — он наполняет регистры зарплаты. Дальше по цепочке:
- Начисление зарплаты (этот документ) → база доходов и задолженность перед работниками.
- Отражение зарплаты в бухучёте / реглучёте → бухгалтерские проводки (счета 3350, 3120, 3210/3220/3230/3240, 7210/8410).
- Зарплата к выплате + ведомость / платёжный документ → выплата денег.
Кто работает: бухгалтеры по зарплате и кадровые специалисты, как правило один раз в месяц по итогам расчётного периода. Документ умеет заполняться массово (по всем сотрудникам подразделения или организации) и считать индивидуальные начисления (отпуск, больничный, компенсация).
🧭 Где найти в программе
Раздел «Зарплата» → пункт «Начисление зарплаты». Откроется журнал документов; новый создаём кнопкой «Создать».
👤 Часть 1. Для пользователя
Проходим по шагам, как в курсе: от пустого документа до проведённого начисления и проверки результата. Помним: «Дт/Кт» у этого документа нет — итог проверяем по движениям регистров и зарплатным отчётам.
Урок 1. Массовое начисление зарплаты за месяц
Когда: ежемесячный расчёт окладов и плановых начислений по всем сотрудникам организации или подразделения.
Шаг 1. Создаём документ
«Создать» в журнале «Начисление зарплаты». Откроется пустая форма документа.
Шаг 2. Заполняем шапку
- Период регистрации — месяц начисления (обязательно). От него зависит весь расчёт: подбор плановых начислений, регламентированный календарь, отработанные дни и часы. Поле работает как «месяц» — переключается стрелками.
- Организация — работодатель. Определяет учётную политику и параметры налогообложения; подставляется основная или выбираем вручную.
- Подразделение организации — необязательно; если заполнить, автозаполнение подберёт только сотрудников этого подразделения.
- Структурное подразделение и Способ отражения в бухучёте — задают аналитику и счета для будущего отражения в учёте (см. Часть 2).
Шаг 3. Заполняем сотрудников
Кнопка «По всем сотрудникам» — система автоматически заполнит табличную часть «Начисления» всеми сотрудниками с плановыми начислениями за период (с учётом фильтра по подразделению). Альтернатива — «Списком сотрудников» или добавить строки вручную.
Шаг 4. Рассчитываем
Кнопка «Рассчитать» — система посчитает суммы в колонке «Результат» для всех строк (по окладу — пропорционально отработанным дням периода).
Шаг 5. Проводим
«Провести» или «Записать и закрыть». Документ запишет движения в зарплатные регистры (задолженность перед работниками + сведения о доходах для всех налогов и взносов).
Урок 2. Начисление отпускных одному сотруднику
Когда: расчёт отпускных при уходе сотрудника в очередной отпуск.
- Создаём документ, заполняем Период регистрации и Организацию.
- Добавляем строку в табличной части «Начисления», выбираем Сотрудника — система подтянет Физлицо, Подразделение, Способ отражения и плановый вид расчёта.
- Меняем Вид расчёта на отпускной (вид расчёта со способом «По среднему заработку для отпуска»).
- Указываем ДатаНачала и ДатаОкончания — фактический период отпуска (не обязательно совпадает с границами месяца).
- Записываем документ (запись обязательна перед расчётом по среднему).
- Кнопка «Рассчитать отпуск» — откроется форма расчёта по среднему заработку; система посчитает средний, умножит на дни отпуска и вернёт сумму в «Результат».
- Проводим.
Урок 3. Больничный и компенсация при увольнении
Те же шаги, что для отпуска, но другой вид расчёта и своя кнопка расчёта:
- Больничный лист. Вид расчёта — пособие по временной нетрудоспособности; ДатаНачала/ДатаОкончания — период болезни; кнопка «Рассчитать больничный лист» (средний заработок и процент оплаты по стажу).
- Компенсация за неиспользованный отпуск (при увольнении). Вид расчёта — компенсация; даты обычно совпадают с датой увольнения; кнопка «Рассчитать компенсацию» (неиспользованные дни × средний заработок).
Урок 4. Ручная корректировка
Если нужно записать суммы «как есть», без автоматического пересчёта:
- Открываем документ, при необходимости отменяем проведение.
- Ставим флаг «Ручная корректировка».
- Правим суммы в колонке «Результат» (или строки) вручную.
- Проводим.
🛠 Часть 2. Для программиста
Источник: реальный код релиза 3.0.72.1 (Documents/НачислениеЗарплатыРаботникамОрганизаций/Ext/ObjectModule.bsl), плюс разбор objects/ и business-logic/.
Структура объекта
Ключевые реквизиты шапки: ПериодРегистрации (обязательный — ShowError; месяц начисления), Организация, ПодразделениеОрганизации, СтруктурноеПодразделение, СпособОтраженияВБухучете (тип Справочник.СпособыОтраженияЗарплатыВРеглУчете), РучнаяКорректировка (Булево), ВидРасчета (единый вид на документ — опционально). Служебные строковые реквизиты КраткийСоставДокумента и КраткийСоставВидовРасчетаДокумента заполняются в ПередЗаписью для отображения в списках.
Главная табличная часть Начисления: Сотрудник (Справочник.СотрудникиОрганизаций), Физлицо, ВидРасчета (ПланВидовРасчета.ОсновныеНачисленияОрганизаций), Размер, Результат, ПодразделениеОрганизации, СтруктурнаяЕдиница, ОтработаноДней, ОтработаноЧасов, ДатаНачала, ДатаОкончания, СпособОтраженияВБухучете.
business-logic/..._ManagerModule.md упоминается вторая табличная часть ДополнительныеНачисления. В реальном коде ObjectModule.bsl 3.0.72.1 проведение и проверки используют только Начисления (см. ОбработкаПроведения, ПередЗаписью, ДанныеПоПересечениюПериодов). Наличие/назначение ДополнительныеНачисления нужно сверить по метаданным объекта — в проведении она не участвует.Жизненный цикл проведения (обработчики ObjectModule)
| Обработчик | Что делает |
|---|---|
ОбработкаЗаполнения |
При заполнении из Структура удаляет Автор, копирует значения свойств; вызывает ЗаполнениеДокументов.ЗаполнитьШапкуДокумента |
ОбработкаПроверкиЗаполнения |
Проверяет пересечение периодов отпускных начислений по сотруднику (запрос ДанныеПоПересечениюПериодов), сообщает в поле Начисления[N].Сотрудник |
ПередЗаписью |
При ОбменДанными.Загрузка — выход; иначе заполняет КраткийСоставДокумента и КраткийСоставВидовРасчетаДокумента по ТЧ Начисления |
ОбработкаПроведения |
Готовит наборы записей, при РучнаяКорректировка — Возврат; контроль отпусков; собирает таблицы по каждому регистру и пишет движения через РасчетЗарплатыСервер.СформироватьДвижения |
ПриКопировании |
Перезаполняет шапку через ЗаполнениеДокументов.ЗаполнитьШапкуДокумента (с передачей ссылки копируемого) |
ЗаполнитьНаборыЗначенийДоступа |
RLS: наборы доступа по Организация + СтруктурноеПодразделение + списку физлиц из ТЧ |
Как формируется проведение — реальный код (3.0.72.1)
Главное: документ не делает проводок по счетам. ОбработкаПроведения собирает по табличной части Начисления отдельную таблицу под каждый регистр зарплаты и делегирует запись движений общему модулю РасчетЗарплатыСервер. Сами суммы налогов/взносов считаются внутри РасчетЗарплатыСервер.ПодготовитьТаблицуСведенияОДоходах по настройкам видов расчёта и учётной политики.
Источник: ObjectModule.bsl, процедура ОбработкаПроведения (стр. 84), сокращённо:
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
// ПОДГОТОВКА ПРОВЕДЕНИЯ ПО ДАННЫМ ДОКУМЕНТА
ПроведениеСервер.ПодготовитьНаборыЗаписейКПроведению(ЭтотОбъект);
Если РучнаяКорректировка Тогда
Возврат; // движения заполняет пользователь
КонецЕсли;
ОрганизацияЯвляетсяПлательщикомСН = УчетнаяПолитикаСервер.ОрганизацияЯвляетсяПлательщикомСН(
ЭтотОбъект.Организация, ЭтотОбъект.ПериодРегистрации);
ПараметрыПроведения = Документы.НачислениеЗарплатыРаботникамОрганизаций.ПодготовитьПараметрыПроведения(Ссылка, Отказ);
ВыполнитьКонтрольНачисленияОтпусков(ПараметрыПроведения.Реквизиты[0], ПараметрыПроведения.Начисления, Отказ);
Если Отказ Тогда
Возврат;
КонецЕсли;
Реквизиты = ПараметрыПроведения.Реквизиты[0];
ТаблицаНачисления = ПараметрыПроведения.Начисления;
// 1) Задолженность перед работниками (приход)
ТаблицаВзаиморасчетыСРаботниками = РасчетЗарплатыСервер.ПодготовитьТаблицуВзаиморасчеты(
Реквизиты, ТаблицаНачисления,
Движения.ВзаиморасчетыСРаботникамиОрганизаций.ВыгрузитьКолонки(),
ВидДвиженияНакопления.Приход, Отказ);
// 2) Сведения о доходах — отдельная таблица под каждый налог/взнос:
ТаблицаИПНСведенияОДоходах = РасчетЗарплатыСервер.ПодготовитьТаблицуСведенияОДоходах(Реквизиты, ТаблицаНачисления, "ИПН", …, Новый Структура("ИсчислятьЕП", Ложь));
ТаблицаОПВСведенияОДоходах = РасчетЗарплатыСервер.ПодготовитьТаблицуСведенияОДоходах(Реквизиты, ТаблицаНачисления, "ОПВ", …, Новый Структура("ИсчислятьЕП", Ложь));
Если ОрганизацияЯвляетсяПлательщикомСН Тогда
ТаблицаСНСведенияОДоходах = РасчетЗарплатыСервер.ПодготовитьТаблицуСведенияОДоходах(Реквизиты, ТаблицаНачисления, "СН", …, Новый Структура("ИсчислятьСН", Истина));
КонецЕсли;
ТаблицаСОСведенияОДоходах = РасчетЗарплатыСервер.ПодготовитьТаблицуСведенияОДоходах(Реквизиты, ТаблицаНачисления, "СО", …, Новый Структура("ИсчислятьЕП", Ложь));
ТаблицаООСМССведенияОДоходах = РасчетЗарплатыСервер.ПодготовитьТаблицуСведенияОДоходах(Реквизиты, ТаблицаНачисления, "ООСМС", …, Новый Структура("УчитыватьООСМС", Истина));
ТаблицаВОСМССведенияОДоходах = РасчетЗарплатыСервер.ПодготовитьТаблицуСведенияОДоходах(Реквизиты, ТаблицаНачисления, "ВОСМС", …, Новый Структура("УчитыватьВОСМС", Истина));
ТаблицаЕПСведенияОДоходах = РасчетЗарплатыСервер.ПодготовитьТаблицуСведенияОДоходах(Реквизиты, ТаблицаНачисления, "ЕП", …, Новый Структура("ИсчислятьЕП", Истина));
ТаблицаОППВСведенияОДоходах = РасчетЗарплатыСервер.ПодготовитьТаблицуСведенияОДоходах(Реквизиты, ТаблицаНачисления, "ОППВ", …, Новый Структура("ИсчислятьОППВ", Истина));
ТаблицаОПВРСведенияОДоходах = РасчетЗарплатыСервер.ПодготовитьТаблицуСведенияОДоходах(Реквизиты, ТаблицаНачисления, "ОПВР", …, Новый Структура("УчитыватьОПВР", Истина));
ТаблицаПериодыОплатыДляМедицинскогоСтрахования = РасчетЗарплатыСервер.ПодготовитьТаблицуПериодыОплатыДляМедицинскогоСтрахования(Реквизиты, ТаблицаНачисления, …, Отказ);
// 3) Запись движений по регистрам (порядок строгий):
РасчетЗарплатыСервер.СформироватьДвижения(ТаблицаОППВСведенияОДоходах, "ОППВСведенияОДоходах", Движения, Отказ);
РасчетЗарплатыСервер.СформироватьДвижения(ТаблицаВзаиморасчетыСРаботниками, "ВзаиморасчетыСРаботникамиОрганизаций", Движения, Отказ);
РасчетЗарплатыСервер.СформироватьДвижения(ТаблицаИПНСведенияОДоходах, "ИПНСведенияОДоходах", Движения, Отказ);
РасчетЗарплатыСервер.СформироватьДвижения(ТаблицаОПВСведенияОДоходах, "ОПВСведенияОДоходах", Движения, Отказ);
Если ОрганизацияЯвляетсяПлательщикомСН Тогда
РасчетЗарплатыСервер.СформироватьДвижения(ТаблицаСНСведенияОДоходах, "СНСведенияОДоходах", Движения, Отказ);
КонецЕсли;
РасчетЗарплатыСервер.СформироватьДвижения(ТаблицаСОСведенияОДоходах, "СОСведенияОДоходах", Движения, Отказ);
РасчетЗарплатыСервер.СформироватьДвижения(ТаблицаООСМССведенияОДоходах, "ООСМССведенияОДоходах", Движения, Отказ);
РасчетЗарплатыСервер.СформироватьДвижения(ТаблицаВОСМССведенияОДоходах, "ВОСМССведенияОДоходах", Движения, Отказ);
РасчетЗарплатыСервер.СформироватьДвижения(ТаблицаЕПСведенияОДоходах, "ЕПСведенияОДоходах", Движения, Отказ);
РасчетЗарплатыСервер.СформироватьДвижения(ТаблицаОПВРСведенияОДоходах, "ОПВРСведенияОДоходах", Движения, Отказ);
РасчетЗарплатыСервер.СформироватьДвижения(ТаблицаПериодыОплатыДляМедицинскогоСтрахования, "ПериодыОплатыДляМедицинскогоСтрахования", Движения, Отказ);
КонецПроцедуры
Важные детали из кода:
- РучнаяКорректировка = Истина → авто-формирование движений полностью пропускается (Возврат сразу после ПодготовитьНаборыЗаписейКПроведению). Движения остаются такими, какими их оставил пользователь.
- СН (социальный налог) считается и пишется только если организация — плательщик СН (УчетнаяПолитикаСервер.ОрганизацияЯвляетсяПлательщикомСН). У плательщиков ЕП/спецрежимов соцналог по этой ветке не формируется.
- Каждый налог/взнос — это отдельная таблица под одноимённый регистр; флаги (ИсчислятьЕП, ИсчислятьСН, ИсчислятьОППВ, УчитыватьООСМС/ВОСМС/ОПВР) включают конкретный вид расчёта внутри ПодготовитьТаблицуСведенияОДоходах.
- Перед записью движений выполняется ВыполнитьКонтрольНачисленияОтпусков — при ошибке проведение прерывается (Возврат).
Движения по регистрам
Документ — регистратор расчётных данных по зарплате, бухгалтерских проводок (регистр Хозрасчетный/Типовой) он не делает.
| Регистр | Тип / движение | Что пишет |
|---|---|---|
ВзаиморасчетыСРаботникамиОрганизаций |
Накопление / приход | Начисленная сумма — задолженность организации перед работником |
ИПНСведенияОДоходах |
Накопление | Доход и расчётная база ИПН |
ОПВСведенияОДоходах |
Накопление | Доход и обязательные пенсионные взносы |
СНСведенияОДоходах |
Накопление | Доход и социальный налог (только для плательщиков СН) |
СОСведенияОДоходах |
Накопление | Доход и социальные отчисления |
ООСМССведенияОДоходах |
Накопление | Отчисления на ОСМС (за счёт работодателя) |
ВОСМССведенияОДоходах |
Накопление | Взносы на ОСМС (удерживаемые с работника) |
ЕПСведенияОДоходах |
Накопление | Доход и единый платёж |
ОППВСведенияОДоходах |
Накопление | Обязательные профессиональные пенсионные взносы |
ОПВРСведенияОДоходах |
Накопление | Обязательные пенсионные взносы работодателя |
ПериодыОплатыДляМедицинскогоСтрахования |
Сведения | Периоды оплаты для медстрахования (распределение по месяцам) |
objects/ приводил для каждого регистра конкретные измерения/ресурсы (например, Организация, Физлицо, ПериодРегистрации / СуммаДохода, СуммаНалога). Эти структуры — реконструкция, в коду ObjectModule они не заданы явно (колонки берутся из Движения.<Регистр>.ВыгрузитьКолонки(), а суммы считает РасчетЗарплатыСервер). Точный состав измерений/ресурсов сверяем по метаданным регистров, а не по описанию объекта.Где же проводки (Дт/Кт)
Бухгалтерские проводки по этой зарплате формирует отдельный документ:
- ОтражениеЗарплатыВБухучете — движения в БУ (ПроцедурыБухгалтерскогоУчета), по сценариям «зарплата/взносы», «резервы оплаты труда», «ГПХ в целях НДС».
- ОтражениеЗарплатыВРеглУчете — отражение в БУ и НУ, включая временные/постоянные разницы (ПроцедурыБухгалтерскогоУчета, ПроцедурыНалоговогоУчета).
Ориентир по плану счетов КЗ (фактические счета определяются справочником СпособыОтраженияЗарплатыВРеглУчете / ...ВБухУчете и учётной политикой, не этим документом):
| Что | Счёт КЗ |
|---|---|
| Краткосрочная задолженность по оплате труда | 3350 |
| ИПН к перечислению | 3120 |
| ОПВ / соц. отчисления / ОСМС | 3210 / 3220 / 3230 / 3240 (конкретное соответствие — по настройке) |
| Расходы на оплату труда (произв. / адм.) | 7210 / 8410 |
НачислениеЗарплаты счетов нет вовсе — приведённые номера являются типовым ориентиром КЗ и подлежат сверке по ОтражениеЗарплаты* и плану счетов конкретной базы.Валидации
ОбработкаПроверкиЗаполнения — контроль пересечения периодов отпускных начислений по одному сотруднику (функция ДанныеПоПересечениюПериодов, реальный код):
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
ДанныеПоПересечениюПериодов = ДанныеПоПересечениюПериодов();
Пока ДанныеПоПересечениюПериодов.Следующий() Цикл
ТекстСообщения = НСтр("ru = 'Для сотрудника %1 в строке %2 найдено пересечение отпуска по периодам со строкой %3'");
// … подстановка параметров …
Поле = "Начисления[" + Формат(ДанныеПоПересечениюПериодов.СтрокаНомерПересечения - 1, "ЧН=0; ЧГ=") + "].Сотрудник";
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения, ЭтотОбъект, Поле, "Объект", Отказ);
КонецЦикла;
КонецПроцедуры
Запрос отбирает строки с видом расчёта «По среднему заработку для отпуска» (исключая компенсацию за неиспользованный отпуск) и ищет по сотруднику строки с перекрытием ДатаНачала…ДатаОкончания — сообщение привязывается к конкретной строке ТЧ.
Прочие проверки:
- Контроль повторного отпуска (ВыполнитьКонтрольНачисленияОтпусков / ДанныеПоНачислениямОтпуска, выполняется в проведении): для распределения по периодам оплаты (с даты изменения порядка перечисления ОСМС 2024 и при отражении не по периоду регистрации) проверяет, что по тому же сотруднику, периоду регистрации и месяцу события другим регистратором уже не зарегистрирован отпуск (регистр ПериодыОплатыДляМедицинскогоСтрахования). При нахождении — сообщение и Отказ.
- Дата начала ≤ дата окончания в строках — проверяется на форме (ФормаДокумента.ПриЗаписиНаСервере).
- Регламентированный календарь периода — проверяется при расчёте (модуль менеджера, процедура Рассчитать).
- Кадровые изменения (приём/увольнение внутри месяца) — ПроверитьНаличиеКадровыхИзмененийПоСотрудникам (модуль менеджера) корректирует даты и предупреждает.
- Не более одного расчёта «от обратного» на сотрудника — ПроверитьНаНаличиеНесколькихРассчетовОтОбратногоПоОдномуСотруднику (модуль менеджера).
Зависимости (общие модули)
РасчетЗарплатыСервер (ядро: подготовка таблиц доходов/взаиморасчётов, запись движений, наборы доступа, даты периодов), ПроведениеСервер (подготовка наборов записей), УчетнаяПолитикаСервер (плательщик СН, отражение по периоду регистрации), Документы.НачислениеЗарплатыРаботникамОрганизаций (ManagerModule: ПодготовитьПараметрыПроведения, автозаполнение, расчёт, кадровые проверки), ЗаполнениеДокументов, ПроцедурыУправленияПерсоналомСервер (краткий состав), ОбщегоНазначения, СтроковыеФункцииКлиентСервер.
- «Нет проводок / в ОСВ зарплата не видна» — это нормально:
НачислениеЗарплатыпроводок не делает. Нужен документ «Отражение зарплаты в бухучёте» (БУ) и/или «Отражение зарплаты в реглучёте» (БУ+НУ). Без него суммы стоят только в зарплатных регистрах.- «Неверные счета затрат» — счета определяет справочник
СпособыОтраженияЗарплатыВРеглУчете/...ВБухУчете(на сотруднике, в шапке/строке начисления и в учётной политике), а не сам документ. Настраивать там.- «Не считается соцналог» — проверьте признак плательщика СН в учётной политике: ветка
СНв проведении включается только для плательщиков СН (для ЕП/спецрежимов соцналога по этой ветке нет).
РучнаяКорректировка = Истина→Возвратв началеОбработкаПроведения— движения не пересобираются. Это же поведение у документовОтражениеЗарплаты*.- Состав движений зависит от учётной политики на дату: наличие ветки
СН(ОрганизацияЯвляетсяПлательщикомСН) и логика распределения отпусков по периодам оплаты (ДатаИзмененияПорядкаПеречисленияОСМС2024,ОтражениеПоПериодуРегистрации). При тестах фиксируйте период и настройки.- Суммы налогов считаются не в документе, а в
РасчетЗарплатыСервер.ПодготовитьТаблицуСведенияОДоходах— отлаживать расхождения по ИПН/ОПВ/ОСМС нужно там, а не вObjectModule.- RLS:
ЗаполнитьНаборыЗначенийДоступараздаёт доступ поОрганизация+СтруктурноеПодразделение+ списку физлиц из ТЧНачисления— при изменении состава сотрудников наборы доступа перестраиваются.
🔗 Связанные разделы
- otrazhenie-zarplaty-v-buhuchete — документ, который делает бухгалтерские проводки по этому начислению
- zarplata-k-vyplate — формирование сумм к выплате после начисления
- vvod-svedeniy-o-regl-uchete-planovyh-nachisleniy — плановые начисления (оклады, надбавки), которые подбирает автозаполнение
- vozvrat-zarplaty-rabotnikov — обратная операция по взаиморасчётам с работниками
🆕 Что нового
| Версия | Изменение | Тип |
|---|---|---|
| 3.0.72.1 | Первичное описание (на релизе 3.0.72.1) | 🆕 |
| 3.0.72.1 | Зафиксировано: документ пишет в зарплатные регистры (взаиморасчёты + сведения о доходах ИПН/ОПВ/СН/СО/ОСМС/ЕП/ОППВ/ОПВР), проводки — у ОтражениеЗарплаты* |
ℹ️ |