Немного предыстории. Совсем недавно мне поручили разобраться с новой системой вычетов по НДФЛ, которая начинает действовать с 2012 года. В процессе изучения выявилась одна интересная особенность. В документе "Начисление зарплаты сотрудникам организаций" есть вкладка НДФЛ. Так вот если она не заполнена. То при нажатии меню "Рассчитать" и выбора пункта "Рассчитать НДФЛ" ничего не произойдет.
Методом научного поиска (читать "методом тыка") выяснилось следующее.
В модуле документа НачислениеЗарплатыРаботникамОрганизаций есть процедура
Процедура РассчитатьНДФЛ(Физлицо = Неопределено, КомментироватьРасчет = Ложь, ВыборкаПоШапкеДокумента = Неопределено, ВыборкаПоНачислениям = Неопределено) Экспорт
В процедуре есть Параметр ФизЛицо , который в конечном итоге принмает параметр неопределено. Чуть ниже встречается вот такой код:
Если НЕ (Физлицо = Неопределено) Тогда
СписокФизлицТекст =
"ВЫБРАТЬ
| ФизическиеЛица.Ссылка КАК Физлицо
|ИЗ
| Справочник.ФизическиеЛица КАК ФизическиеЛица
|ГДЕ
| ФизическиеЛица.Ссылка = &парамФизлицо";
ДополнительныеПараметрыЗапросаНДФЛ = Новый Структура;
ДополнительныеПараметрыЗапросаНДФЛ.Вставить("парамФизлицо", Физлицо);
Иначе
СписокФизлицТекст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| Работники.Физлицо КАК Физлицо
|ИЗ
| Документ.НачислениеЗарплатыРаботникамОрганизаций.НДФЛ КАК Работники
|
|ГДЕ
| Работники.Ссылка = &парамРегистратор";
ДополнительныеПараметрыЗапросаНДФЛ = Неопределено;
КонецЕсли;
В конечном итоге поскольку Физлицо=Неопределено Запрос по списку физлиц формируется по табличной части НДФЛ.
Я нашел временное решение в следующем. В Общем модуле ПроведениеРасчетов ищем процедуру:
ПолучитьДанныеНДФЛПоРегистратору.
Запрос.Текст =
"ВЫБРАТЬ Физлицо
|ПОМЕСТИТЬ ВТСписокФизЛиц
|ИЗ (" + СписокФизЛицТекст + ") СписокФизЛиц
|ИНДЕКСИРОВАТЬ ПО Физлицо";
Запрос.УстановитьПараметр("парамРегистратор", Регистратор);
Запрос.Выполнить();
Перед Запрос.Выполнить() добавляем вот такую строчку:
Запрос.Текст= СтрЗаменить(Запрос.Текст,"НДФЛ","Начисления");
В этом случае список будет браться со вкладки начисления и НДФЛ будет рассчитываться.