Бланк 2.1. - бюджетная версия

дилер
Регистрация: 13.07.2005

Обновление 01.10.2014

Есть сотрудник - иностранец.
Тип сотрудника ШТНР1.
Заходим Зарплата - Списки - Налоги сотрудников для типов.
Ни для какого налога тариф не ставлю, поскольку иностранцы взносами не облагаются

Считаю 2.1, получаю ошибку Переменная НалБазаТекСот не определена для индекса !ПЕНС/С
это zp_lib18.ibl
функция РАСЧЕТ_СОЦНАЛОГА_2012
Смотрю самое начало функции, вижу код

ЕСЛИ год_тек>=2013 ТО
выпзап=SQL_ЗАПРОС("SELECT CODE FROM '"+табСписокТарифов+"'")
ЕСЛИ выпзап.ВСЕГО<>0 ТО
выпзап.В_НАЧАЛО
ЦИКЛ ПОКА(выпзап.СЛЕДУЮЩАЯ)
тар=выпзап.ПОЛЕ("CODE")
ЦИКЛ ДЛЯ(ф = 1, колСтандФондовПред)
xxx=ф
f=ф
ЕСЛИ стандФондыПред!ф="ПЕНС/С/Д1" ТО f=13 КОНЕЦ_ЕСЛИ
ЕСЛИ стандФондыПред!ф="ПЕНС/С/Д2" ТО f=14 КОНЕЦ_ЕСЛИ
ЕСЛИ стандФондыПред!ф="ПЕНС/С1/Д01" ТО f=15 КОНЕЦ_ЕСЛИ
ЕСЛИ стандФондыПред!ф="ПЕНС/С1/Д02" ТО f=16 КОНЕЦ_ЕСЛИ
ЕСЛИ стандФондыПред!ф="ПЕНС/С1/Д31" ТО f=17 КОНЕЦ_ЕСЛИ
ЕСЛИ стандФондыПред!ф="ПЕНС/С1/Д32" ТО f=18 КОНЕЦ_ЕСЛИ
ЕСЛИ стандФондыПред!ф="ПЕНС/С1/Д33" ТО f=19 КОНЕЦ_ЕСЛИ
ЕСЛИ стандФондыПред!ф="ПЕНС/С1/Д34" ТО f=20 КОНЕЦ_ЕСЛИ
ЕСЛИ стандФондыПред!ф="ПЕНС/С1/Д04" ТО f=21 КОНЕЦ_ЕСЛИ
ЕСЛИ стандФондыПред!ф="ПЕНС/С2/Д01" ТО f=22 КОНЕЦ_ЕСЛИ
ЕСЛИ стандФондыПред!ф="ПЕНС/С2/Д02" ТО f=23 КОНЕЦ_ЕСЛИ
ЕСЛИ стандФондыПред!ф="ПЕНС/С2/Д31" ТО f=24 КОНЕЦ_ЕСЛИ
ЕСЛИ стандФондыПред!ф="ПЕНС/С2/Д32" ТО f=25 КОНЕЦ_ЕСЛИ
ЕСЛИ стандФондыПред!ф="ПЕНС/С2/Д33" ТО f=26 КОНЕЦ_ЕСЛИ
ЕСЛИ стандФондыПред!ф="ПЕНС/С2/Д34" ТО f=27 КОНЕЦ_ЕСЛИ
ЕСЛИ стандФондыПред!ф="ПЕНС/С2/Д04" ТО f=28 КОНЕЦ_ЕСЛИ
ф=f
инд = стандНалогиПред!ф
ин_тн=тар+"!"+инд
НалБазаСот!ин_тн=0
НалБазаТекСот!ин_тн=0
НалБазаПрев!ин_тн=0
НалБазаТекПрев!ин_тн=0
НалБазаТекСотСТ!ин_тн=0
НалБазаТекСотМЛ!ин_тн=0
НалБазаСотСТ!ин_тн=0
НалБазаСотМЛ!ин_тн=0
ф=xxx
КОНЕЦ_ЦИКЛА
КОНЕЦ_ЦИКЛА
КОНЕЦ_ЕСЛИ
выпзап.ЗАКРЫТЬ
КОНЕЦ_ЕСЛИ

Переменная тар никогда не примет значение "", а ведь именно оно выбрано в Зарплата - Списки - Налоги сотрудников для типов.
Вот поэтому и ошибка.

Решение:
после строки выпзап.ЗАКРЫТЬ
добавляю строки

тар=""
ЦИКЛ ДЛЯ(ф = 1, колСтандФондовПред)
xxx=ф
f=ф
ЕСЛИ стандФондыПред!ф="ПЕНС/С/Д1" ТО f=13 КОНЕЦ_ЕСЛИ
ЕСЛИ стандФондыПред!ф="ПЕНС/С/Д2" ТО f=14 КОНЕЦ_ЕСЛИ
ЕСЛИ стандФондыПред!ф="ПЕНС/С1/Д01" ТО f=15 КОНЕЦ_ЕСЛИ
ЕСЛИ стандФондыПред!ф="ПЕНС/С1/Д02" ТО f=16 КОНЕЦ_ЕСЛИ
ЕСЛИ стандФондыПред!ф="ПЕНС/С1/Д31" ТО f=17 КОНЕЦ_ЕСЛИ
ЕСЛИ стандФондыПред!ф="ПЕНС/С1/Д32" ТО f=18 КОНЕЦ_ЕСЛИ
ЕСЛИ стандФондыПред!ф="ПЕНС/С1/Д33" ТО f=19 КОНЕЦ_ЕСЛИ
ЕСЛИ стандФондыПред!ф="ПЕНС/С1/Д34" ТО f=20 КОНЕЦ_ЕСЛИ
ЕСЛИ стандФондыПред!ф="ПЕНС/С1/Д04" ТО f=21 КОНЕЦ_ЕСЛИ
ЕСЛИ стандФондыПред!ф="ПЕНС/С2/Д01" ТО f=22 КОНЕЦ_ЕСЛИ
ЕСЛИ стандФондыПред!ф="ПЕНС/С2/Д02" ТО f=23 КОНЕЦ_ЕСЛИ
ЕСЛИ стандФондыПред!ф="ПЕНС/С2/Д31" ТО f=24 КОНЕЦ_ЕСЛИ
ЕСЛИ стандФондыПред!ф="ПЕНС/С2/Д32" ТО f=25 КОНЕЦ_ЕСЛИ
ЕСЛИ стандФондыПред!ф="ПЕНС/С2/Д33" ТО f=26 КОНЕЦ_ЕСЛИ
ЕСЛИ стандФондыПред!ф="ПЕНС/С2/Д34" ТО f=27 КОНЕЦ_ЕСЛИ
ЕСЛИ стандФондыПред!ф="ПЕНС/С2/Д04" ТО f=28 КОНЕЦ_ЕСЛИ
ф=f
инд = стандНалогиПред!ф
ин_тн=тар+"!"+инд
НалБазаСот!ин_тн=0
НалБазаТекСот!ин_тн=0
НалБазаПрев!ин_тн=0
НалБазаТекПрев!ин_тн=0
НалБазаТекСотСТ!ин_тн=0
НалБазаТекСотМЛ!ин_тн=0
НалБазаСотСТ!ин_тн=0
НалБазаСотМЛ!ин_тн=0
ф=xxx
КОНЕЦ_ЦИКЛА

Считаю 2.1, получаю ошибку Не определено значение переменной СтавкаНалога для индекса ПЕНС/С/Д1ДА
Решение
находим цикл
ЦИКЛ ДЛЯ(жж=1,колСтандФондовПред)
в нем находим условие
ЕСЛИ ПОЗ("ПЕНС/С/Д",стандФондыПред!жж)=1 ИЛИ ПОЗ("ПЕНС/С1/Д",стандФондыПред!жж)=1 ИЛИ ПОЗ("ПЕНС/С2/Д",стандФондыПред!жж)=1 ТО
заменяем на условие
ЕСЛИ (ПОЗ("ПЕНС/С/Д",стандФондыПред!жж)=1 ИЛИ ПОЗ("ПЕНС/С1/Д",стандФондыПред!жж)=1 ИЛИ ПОЗ("ПЕНС/С2/Д",стандФондыПред!жж)=1) И номерТ <> "" ТО

Исправьте, пожалуйста.