Обновление программного обеспечения — это всегда ответственный шаг, который, помимо новых возможностей, порой преподносит неприятные сюрпризы. Многие пользователи конфигурации «Зарплата и управление персоналом», редакция 3.1 (ЗУП), столкнулись с крайне неприятной ситуацией после перехода на релизы ветки 3.1.9 (в частности, 3.1.9.107). Из расчетных листков, полных сводов начислений и других зарплатных отчетов бесследно исчезли суммы доходов в натуральной форме. При этом НДФЛ и страховые взносы с этих доходов продолжали рассчитываться корректно, что создавало серьезный перекос в учете.
В этой статье мы подробно разберем, почему возникла данная проблема, проанализируем техническую причину сбоя, выясним разницу в бизнес-логике начислений и рассмотрим эффективные способы обхода и устранения этой ошибки.
---
Давайте разберемся по шагам, что происходит в программе при регистрации дохода в натуральной форме. Когда бухгалтер создает и проводит документ, фиксирующий такой доход, программа должна сделать записи в несколько ключевых регистров накопления:
НачисленияУдержанияПоСотрудникам. Это ключевой регистр, на основании которого строятся все основные зарплатные отсчеты: «Расчетный листок», «Полный свод начислений, удержаний и выплат», «Анализ зарплаты по сотрудникам» и др.В релизе 3.1.9.107 разработчики допустили ошибку, из-за которой при проведении (или перепроведении ранее созданных) документов начисления с определенными настройками записи в регистр НачисленияУдержанияПоСотрудникам просто перестали формироваться. Налог рассчитывался, попадал в отчеты, а сама сумма начисления — нет. Как результат, в расчетном листке сотрудника отражался удержанный НДФЛ, но не было самого дохода, что вызывало массу вопросов как у проверяющих органов, так и у самих работников.
---
Фирма «1С» зарегистрировала данное поведение системы как официальный баг под номером 30167116 со следующим описанием: «Оплата труда в натуральной форме перестала отражаться в отчетах». Данная ошибка была полностью локализована и исправлена в релизе 3.1.9.187.
Если вы столкнулись с подобным поведением системы, самым правильным и надежным решением является обновление вашей конфигурации до версии 3.1.9.187 или выше. После обновления потребуется перепровести документы, фиксирующие натуральные доходы, за проблемный период, чтобы движения по регистрам переформировались корректно.
---
В процессе разбора обращений служба технической поддержки «1С» обратила внимание пользователей на критически важный нюанс в настройке видов расчетов. Зачастую бухгалтеры путают два абсолютно разных по своей сути понятия:
Если ваши сотрудники получают бесплатное питание или компенсацию проезда (то есть они работают не «за еду»), то начисление должно иметь назначение Доход в натуральной форме, а не Оплата труда в натуральной форме. Начисления с назначением Доход в натуральной форме регистрируются специальным одноименным документом и в большинстве релизов ветки 3.1.9 проводились без ошибок.
---
Что делать, если обновиться прямо сейчас нет возможности (например, идет активный расчетный период или конфигурация сильно кастомизирована), а отчеты сдавать нужно? Рассмотрим несколько практических вариантов решения.
Если вы обнаружили, что для регистрации социального пакета (например, питания) у вас ошибочно использовалось назначение Оплата труда в натуральной форме, выполните следующие действия:
Доход в натуральной форме.Если вам действительно необходимо использовать именно Оплату труда в натуральной форме, и изменить настройки нельзя, можно прибегнуть к технической корректировке движений вручную:
НачисленияУдержанияПоСотрудникам.---
В процессе обсуждения данной проблемы на форумах разработчики также отметили, что обновление до 3.1.9 затронуло и другие механизмы. В частности, фирма «1С» провела масштабную оптимизацию кадрового учета, отказавшись от постоянной записи движений по ряду избыточных регистров, таких как РеестрКадровыхПриказов и ТекущиеКадровыеДанныеСотрудников. Теперь данные в этих таблицах формируются динамически.
Это привело к отказу работы многих кастомных отчетов, обработок выгрузки в банки (например, Промсвязьбанк) и других внешних модулей, написанных сторонними программистами. Если ваши обработки завязаны на эти регистры, их код необходимо переписать.
Вместо обращения к устаревшим регистрам сведений, данные следует получать запросом из среза актуальных кадровых таблиц. Рассмотрим пример правильного построения запроса для получения актуальных кадровых данных сотрудников:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| КадроваяИсторияСрез.Сотрудник КАК Сотрудник,
| КадроваяИсторияСрез.Подразделение КАК Подразделение,
| КадроваяИсторияСрез.Должность КАК Должность,
| КадроваяИсторияСрез.ВидСобытия КАК ВидСобытия
|ИЗ
| РегистрСведений.КадроваяИсторияСотрудников.СрезПоследних(&Период, ) КАК КадроваяИсторияСрез
|ГДЕ
| КадроваяИсторияСрез.Сотрудник В (&СписокСотрудников)";
Запрос.УстановитьПараметр("Период", РабочаяДата);
Запрос.УстановитьПараметр("СписокСотрудников", МассивСотрудников);
РезультатЗапроса = Запрос.Выполнить();
Использование актуальных регистров сведений, таких как КадроваяИсторияСотрудников (включая интервальные регистры), гарантирует стабильную работу ваших доработок на любых современных релизах 1С:ЗУП 3.1.