Добрый день! В этой статье рассмотрим вариант по автоматизированной проверке расчетов в 1С с использованием инструмента Vanessa automation.
Думаю, что автоматизация проверки расчетов - довольно интересная тема для рассмотрения. Потому-что, в учетных системах (таких как 1С: Предприятие) довольно много разнообразных расчетов - таких как налоги, зарплата, страховые взносы и прочие. Для этого используются различные формулы и результаты округляются по определенным правилам. Также существуют различные граничные значения - к примеру прогрессивная шкала НДФЛ. Поэтому эти проверки очень хочется автоматизировать - чтобы написанный вами сценарий работал за вас.
В чем сложность?
Для того чтобы понять проблему с расчетами - нужно иметь представление о том, что может произойти. Возьмем сотрудника на окладе и попробуем рассчитать ему зарплату.
В самом простом случае получится такая формула:
Единственное, что нужно для расчета - это число рабочих дней в месяце и число отработанных дней сотрудником за месяц. И мы сможем получить результат. Вроде бы все довольно просто?
Но, сотрудник может работать на не полную ставку. Или-же получить исполнительный лист - по которому будет вычитаться определенная сумма. Или-же иметь какие-то вычеты по НДФЛ.
Все эти моменты должны учитываться при расчете зарплаты в конфигурации 1С ЗУП. Для этого используется один документ Начисление зарплаты и взносов. Но, для автоматизированной проверки этого документа стоит подготовить несколько сценариев - каждый заточенный под определенный жизненный случай. Самый простой из них - это, что сотрудник отработал все положенные по табелю дни за месяц.
Ошибка же в расчете в документе Начисление зарплаты и взносов приведет к тому, что пользователям придется вручную пересчитывать все суммы. Это довольно объемная работа, которая масштабируется на количество сотрудников в организации. Поэтому такие ошибки лучше не пропускать при тестировании.
Также думаю, все расчет лучше производить на тестовых сотрудниках, т.е. принятых на работу в этом же сценарии. Если мы возьмем существующего в базе сотрудника может случится, что он ушел в Отпуск и поэтому число его рабочих дней будет отличаться от числа рабочих дней по производственному календарю. И наш сценарий выдаст неправильную ошибку, в которой нужно будет разбираться и тратить на это время.
В итоге получается — что для проверки расчета зарплаты в документе Начисление зарплаты и взносов необходимо знать формулу для расчета, и знать данные для расчета. Тогда получится написать сценарий который будет производить расчет и выдавать результат проверки — соответствует ли фактическая сумма ожидаемой?
Решение
Начнем с приема на работу нового сотрудника. Для этого необходимо создать новое физическое лицо и штатную единицу, т.к. для расчета зарплаты по окладу в Приеме на работу должно быть указан Вид занятости - Основное место работы. Также в документе указываем Оклад сотрудника - именно это число должно быть указано в табличной части документа Начисление зарплаты и взносов. И чтобы быть уверенными, что он отработал все рабочие дни за месяц его необходимо принять на работу 1 числом месяца. Не важно будет ли этот день рабочим или выходным. А количество рабочих дней в месяце можно получить из запроса к данным производственного календаря.
Также будет лучше, если сотрудник принимается в новое тестовое подразделение — чтобы заранее знать, что в табличной части документа Начисление зарплаты и взносов должен быть всего 1 сотрудник.
Далее создаем новый документ Начисление зарплаты и взносов по нашему подразделению. Нажимаем кнопку Заполнить — и в табличной части документа должна быть 1 запись по нашему сотруднику.
Для раскрытия в табличной части всех колонок — используется следующее условие
Далее в переменные мы сохраняем данные по расчету из табличной части.
Далее проверки расчета используется следующаякоманда — само вычисление происходит на сервере.
Надеюсь, что тут ничего сложного для вас нет. Сохраненные переменные преобразуются в числа для расчета. Далее в строке 914 и 915 производим расчет зарплаты и НДФЛ. В строке 917 проверяем есть ли какая то разница между суммой, что рассчитано в документе Начисление зарплаты и суммой при расчете в тестовом сценарии.
Функция Окр() — нужно для округления расчетов, т.к. зарплата рассчитывается до копеек — поэтому нужно оставить 2 знака после запятой. А НДФЛ рассчитывается до рубля, поэтому нужно оставить 0 знаков после запятой.
И дальше, в условии проверяем, что если разница равно 0 по в переменную Разница расчета сохраняем строку Верно. Иначе сохраняем значение Разницы.
Дальше в самом сценарии выполняется следующее условие которое выполняется, если переменная КорректностьРасчета неравна значению «Верно». И если это так вызывается исключение с нужным нам сообщением.
Далее, в сценарий можно добавить проверки на значения рассчитанного НДФЛ в документе Начисление ЗП и Взносов. И еще если от зарплаты отнять НДФЛ — то получим сумму к выплате, которая должна быть в Ведомости на выплату.
Вывод
Вот, таким способом можно автоматизировать проверки расчетов в документе Начисление зарплаты и взносов. Для расширения проверок в сценария можно добавить исполнительные листы, вычеты и прочие варианты, которые могут произойти в реальной жизни.
На этом все — спасибо за внимание!