#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ПрограммныйИнтерфейс
Процедура ПриОпределенииНастроекВерсионированияОбъектов(Настройки) Экспорт
КонецПроцедуры
Процедура ПровестиПоУчетам(ДокументСсылка, РежимПроведения, Отказ, ВидыУчетов = Неопределено, Движения = Неопределено, Объект = Неопределено, ДополнительныеПараметры = Неопределено) Экспорт
СтруктураВидовУчета = ПроведениеСервер.СтруктураВидовУчета();
ПроведениеСервер.ПодготовитьНаборыЗаписейКРегистрацииДвиженийПоВидамУчета(РежимПроведения, ДокументСсылка, СтруктураВидовУчета, ВидыУчетов, Движения, Объект, Отказ);
РеквизитыДляПроведения = РеквизитыДляПроведения(ДокументСсылка);
ДанныеДляПроведения = ДанныеДляПроведения(РеквизитыДляПроведения, СтруктураВидовУчета);
ИсправлениеДокументовЗарплатаКадры.ПриПроведенииИсправления(ДокументСсылка, Движения, РежимПроведения, Отказ, РеквизитыДляПроведения, СтруктураВидовУчета, Объект);
Если СтруктураВидовУчета.ОстальныеВидыУчета Тогда
ДатаОперацииПоНалогам = УчетНДФЛ.ДатаОперацииПоДокументу(РеквизитыДляПроведения.Дата, НачалоМесяца(РеквизитыДляПроведения.ПериодРегистрации));
УчетНДФЛ.СформироватьДоходыНДФЛПоКодамДоходовИзТаблицыЗначений(Движения, Отказ, РеквизитыДляПроведения.Организация, ДатаОперацииПоНалогам, ДанныеДляПроведения.ДанныеДляНДФЛ, Ложь, Ложь, ДокументСсылка);
УчетНДФЛ.СформироватьДокументыУчтенныеПриРасчетеДляМежрасчетногоДокументаПоВременнойТаблице(Движения, Отказ, РеквизитыДляПроведения.Организация, ДанныеДляПроведения.МенеджерВременныхТаблиц, РеквизитыДляПроведения.Ссылка);
УчетНДФЛ.СформироватьНалогиВычеты(Движения, Отказ, РеквизитыДляПроведения.Организация, ДатаОперацииПоНалогам, ДанныеДляПроведения.НДФЛ, Ложь, Ложь, РеквизитыДляПроведения.ДатаПолученияДохода);
Если ЗначениеЗаполнено(ДанныеДляПроведения.НДФЛСторно) Тогда
УчетНДФЛ.СформироватьНалогиВычеты(Движения, Отказ, РеквизитыДляПроведения.Организация, ДатаОперацииПоНалогам, ДанныеДляПроведения.НДФЛСторно, Ложь, Ложь, РеквизитыДляПроведения.ДатаПолученияДохода);
КонецЕсли;
УчетНДФЛРасширенный.ПереписатьМалыеНатуральныеДоходыВФактическиПолученныеДоходы(Движения, Отказ, РеквизитыДляПроведения.Организация, ДатаОперацииПоНалогам);
ДанныеДляПроведенияУчетЗарплаты = ОтражениеЗарплатыВУчете.ОписаниеДанныеДляПроведения();
ДанныеДляПроведенияУчетЗарплаты.Движения = Движения;
ДанныеДляПроведенияУчетЗарплаты.Организация = РеквизитыДляПроведения.Организация;
ДанныеДляПроведенияУчетЗарплаты.ПериодРегистрации = РеквизитыДляПроведения.ПериодРегистрации;
ДанныеДляПроведенияУчетЗарплаты.ПланируемаяДатаВыплаты = РеквизитыДляПроведения.ДатаПолученияДохода;
ДанныеДляПроведенияУчетЗарплаты.ПорядокВыплаты = Перечисления.ХарактерВыплатыЗарплаты.Межрасчет;
ДанныеДляПроведенияУчетЗарплаты.МенеджерВременныхТаблиц = ДанныеДляПроведения.МенеджерВременныхТаблиц;
Если Не РеквизитыДляПроведения.ИсчисленныйНалогПереданДляУдержанияВНалоговыеОрганы Тогда
ВключатьНДФЛВБлижайшуюВыплату = УчетНДФЛРасширенный.УдерживатьНДФЛСНатуральногоДоходаПриБлижайшейВыплате(РеквизитыДляПроведения.Организация);
Если ВключатьНДФЛВБлижайшуюВыплату Тогда
ДанныеДляПроведенияУчетЗарплаты.ВыплатитьКакАванс = Истина;
КонецЕсли;
КонецЕсли;
УчетНачисленнойЗарплаты.ЗарегистрироватьНачисления(ДанныеДляПроведенияУчетЗарплаты, Отказ, Неопределено, ДанныеДляПроведения.Начисления);
УчетНачисленнойЗарплаты.СоздатьВТРаспределениеНачисленийТекущегоДокумента(ДанныеДляПроведенияУчетЗарплаты);
УчетНачисленнойЗарплаты.ПодготовитьДанныеНДФЛКРегистрации(ДанныеДляПроведения.НДФЛПоСотрудникам, РеквизитыДляПроведения.Организация,ДатаОперацииПоНалогам);
УчетНачисленнойЗарплаты.ЗарегистрироватьНДФЛ(ДанныеДляПроведенияУчетЗарплаты, Отказ, ДанныеДляПроведения.НДФЛПоСотрудникам, Ложь);
Если РеквизитыДляПроведения.ИсчисленныйНалогПереданДляУдержанияВНалоговыеОрганы Тогда
УчетНДФЛ.СформироватьНалогиПереданныеВНалоговыйОрган(Движения, Отказ, РеквизитыДляПроведения.Организация, РеквизитыДляПроведения.Дата,
УчетНДФЛРасширенный.ИсчисленныйНалогСДоходами(Движения.РасчетыНалогоплательщиковСБюджетомПоНДФЛ.Выгрузить(), Движения.СведенияОДоходахНДФЛ.Выгрузить(), РеквизитыДляПроведения.ДатаПолученияДохода));
Если ПолучитьФункциональнуюОпцию("ИспользоватьСтатьиФинансированияЗарплата") Тогда
НалогПереданныйВНалоговыйОрган = ДанныеДляПроведения.НДФЛПоСотрудникам;
Иначе
ИсчиленныеНалоги = Перечисления.ВидыОсобыхНачисленийИУдержаний.СтрокиИсчисленныхНалогов();
НалогПереданныйВНалоговыйОрган = ОбщегоНазначенияБЗК.ТаблицаЗначенийПоИмениРегистраНакопления("НачисленияУдержанияПоСотрудникам");
Для каждого Строка Из Движения.НачисленияУдержанияПоСотрудникам Цикл
Если ИсчиленныеНалоги.Найти(Строка.НачислениеУдержание) <> Неопределено Тогда
ЗаполнитьЗначенияСвойств(НалогПереданныйВНалоговыйОрган.Добавить(), Строка);
КонецЕсли;
КонецЦикла;
НалогПереданныйВНалоговыйОрган.Колонки.Удалить("ДатаПолученияДохода");
НалогПереданныйВНалоговыйОрган.Колонки.Удалить("ДанныеМежрасчетногоПериода");
НалогПереданныйВНалоговыйОрган.Колонки.Удалить("ЗачетАвансаНДФЛ");
КонецЕсли;
УчетНачисленнойЗарплаты.ЗарегистрироватьНДФЛПереданныйВНалоговыйОрган(ДанныеДляПроведенияУчетЗарплаты, Отказ, НалогПереданныйВНалоговыйОрган, ДокументСсылка);
РезультатыРасчетаЗарплаты = ОтражениеЗарплатыВУчете.НоваяСтруктураРезультатыРасчетаЗарплаты();
ПараметрыОтбора = Новый Структура("НачислениеУдержание",
Перечисления.ВидыОсобыхНачисленийИУдержаний.НДФЛПередачаЗадолженностиВНалоговыйОрган);
РезультатыРасчетаЗарплаты.НачисленияУдержания = Движения.НачисленияУдержанияПоСотрудникам.Выгрузить().Скопировать(ПараметрыОтбора);
СтрокаСписокТаблиц = "НачисленныйНДФЛ";
ОтражениеЗарплатыВБухучете.СформироватьДвиженияПоДокументу(Движения, Отказ, РеквизитыДляПроведения.Организация,
НачалоМесяца(РеквизитыДляПроведения.ДатаПолученияДохода),РезультатыРасчетаЗарплаты, СтрокаСписокТаблиц);
КонецЕсли;
ОтражениеЗарплатыВБухучетеРасширенный.ЗарегистрироватьНачисленияУдержания(ДанныеДляПроведенияУчетЗарплаты, Отказ,
ДанныеДляПроведения.Начисления, Неопределено, ДанныеДляПроведения.НДФЛПоСотрудникам);
РасчетЗарплатыРасширенный.СформироватьДополнениеРасчетнойБазыУдержаний(Движения, ДанныеДляПроведения.ДополнениеРасчетнойБазыУдержаний);
КонецЕсли;
Если СтруктураВидовУчета.СтраховыеВзносы Тогда
УчетСтраховыхВзносов.СформироватьСведенияОДоходахСтраховыеВзносы(Движения, Отказ, РеквизитыДляПроведения.Организация,
РеквизитыДляПроведения.ПериодРегистрации, ДанныеДляПроведения.МенеджерВременныхТаблиц,,, РеквизитыДляПроведения.Ссылка);
ЗаписатьСведенияОДоходахСтраховыеВзносы(Движения, РеквизитыДляПроведения);
КонецЕсли;
Если СтруктураВидовУчета.ДанныеДляРасчетаСреднего Тогда
УчетПособийСоциальногоСтрахованияРасширенный.ЗарегистрироватьДанныеСреднегоЗаработкаФССРазовыхВыплат(Движения, Отказ, ДанныеДляПроведения.МенеджерВременныхТаблиц);
КонецЕсли;
ПроведениеСервер.ЗаписьДвиженийПоУчетам(Движения, СтруктураВидовУчета);
КонецПроцедуры
Функция СторнироватьПоУчетам(Движения, Регистратор, ИсправленныйДокумент, СтруктураВидовУчета, ДополнительныеПараметры) Экспорт
Если ДополнительныеПараметры.ОтменаДокумента Тогда
Если СтруктураВидовУчета.ДанныеДляРасчетаСреднего Тогда
УчетПособийСоциальногоСтрахованияРасширенный.СторнироватьДвиженияДокумента(Движения, ИсправленныйДокумент);
КонецЕсли;
Если СтруктураВидовУчета.СтраховыеВзносы Тогда
УчетСтраховыхВзносовРасширенный.СторнироватьДвиженияДокумента(Движения, ИсправленныйДокумент, ДополнительныеПараметры);
КонецЕсли;
Если СтруктураВидовУчета.ОстальныеВидыУчета Тогда
УчетНДФЛРасширенный.СторнироватьДвиженияДокумента(Движения, ИсправленныйДокумент, ДополнительныеПараметры);
ОтражениеЗарплатыВБухучетеРасширенный.СторнироватьДвиженияДокумента(Движения, ИсправленныйДокумент);
УчетНачисленнойЗарплатыРасширенный.СторнироватьДвиженияДокумента(Движения, ИсправленныйДокумент, ДополнительныеПараметры);
ИсправлениеДокументовЗарплатаКадры.СторнироватьДвиженияБезСпецификиУчетов(
Движения, ИсправленныйДокумент, ДополнительныеПараметры);
КонецЕсли;
КонецЕсли;
Возврат Истина;
КонецФункции
#Область ДляВызоваИзДругихПодсистем
Процедура ПриЗаполненииОграниченияДоступа(Ограничение) Экспорт
Ограничение.Текст =
"РазрешитьЧтениеИзменение
|ГДЕ
| ДляВсехСтрок( ЗначениеРазрешено(ФизическиеЛица.ФизическоеЛицо, NULL КАК ИСТИНА)
| ) И ЗначениеРазрешено(Организация)";
КонецПроцедуры
Функция ОписаниеРазделовДанных() Экспорт
ВсеРазделы = МногофункциональныеДокументыБЗККлиентСервер.РазделыДанных();
ОписаниеРазделовДанных = Новый Соответствие();
ОписаниеРаздела = МногофункциональныеДокументыБЗККлиентСервер.НовыйОписаниеРазделаДанных();
ОписаниеРазделовДанных.Вставить(ВсеРазделы.КадровыеДанные, ОписаниеРаздела);
ОписаниеРаздела.РеквизитСостояние = "Проведен";
ОписаниеРаздела.РеквизитОтветсвенный = "Ответственный";
ОписаниеРаздела = МногофункциональныеДокументыБЗККлиентСервер.НовыйОписаниеРазделаДанных();
ОписаниеРазделовДанных.Вставить(ВсеРазделы.НачисленнаяЗарплата, ОписаниеРаздела);
ОписаниеРаздела.РеквизитСостояние = "ДокументРассчитан";
ОписаниеРаздела.РеквизитОтветсвенный = "Рассчитал";
ОписаниеРаздела.ТребуетсяУтверждениеПриПроведении = Истина;
ОписаниеРаздела.СообщениеДокументНеУтвержден = НСтр("ru = '%1 - документ не рассчитан.'");
Возврат ОписаниеРазделовДанных;
КонецФункции
Функция ЗначенияДоступа(ДокументОбъект) Экспорт
Возврат МногофункциональныеДокументыБЗК.ЗначенияДоступаПоСоставуДокумента(
ДокументОбъект,
ДокументОбъект.Организация);
КонецФункции
#КонецОбласти
#КонецОбласти
#Область СлужебныйПрограммныйИнтерфейс
#Область ОбработчикиПравилРегистрации
Процедура ПриЗаполненииНастроекОбработчиковПравилРегистрации(Настройки) Экспорт
ЗарплатаКадрыРасширенныйСинхронизацияДанных.ДляОтбораПоОрганизации(Настройки);
ЗарплатаКадрыРасширенныйСинхронизацияДанных.ДляОбъектаСПрисоединеннымиФайлами(Настройки);
КонецПроцедуры
#КонецОбласти
Процедура ДобавитьКомандыПечати(КомандыПечати) Экспорт
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Обработчик = "УправлениеПечатьюБЗККлиент.ВыполнитьКомандуПечати";
КомандаПечати.МенеджерПечати = "Отчет.ПечатнаяФормаТ11";
КомандаПечати.Идентификатор = "ПФ_MXL_Т11а";
КомандаПечати.Представление = НСтр("ru = 'Приказ о поощрении сотрудников (Т-11а)'");
КомандаПечати = КомандыПечати.Добавить();
КомандаПечати.Обработчик = "УправлениеПечатьюБЗККлиент.ВыполнитьКомандуПечати";
КомандаПечати.МенеджерПечати = "Отчет.ПечатнаяФормаТ11";
КомандаПечати.Идентификатор = "ПФ_MXL_Т11";
КомандаПечати.ДополнительныеПараметры.Вставить("ПечатьВсехПриказов", Истина);
КомандаПечати.Представление = НСтр("ru = 'Приказы на каждого сотрудника в отдельности (Т-11)'");
КомандаПечати.ДополнительныеПараметры.Вставить("РеквизитыДетализации", "РаботаСотрудник");
КонецПроцедуры
Функция ДанныеДляБухучетаЗарплатыПервичныхДокументов(Объект) Экспорт
ДанныеДляБухучета = Новый Структура;
ДанныеДляБухучета.Вставить("ДокументОснование", Объект.Ссылка);
СтатьяРасходов = Объект.СтатьяРасходов;
Если ПолучитьФункциональнуюОпцию("РаботаВХозрасчетнойОрганизации") Тогда
СтатьяРасходов = ОтражениеЗарплатыВБухучетеРасширенный.СтатьяОплатаТруда();
КонецЕсли;
ТаблицаБухучетЗарплаты = ОтражениеЗарплатыВБухучетеРасширенный.НоваяТаблицаБухучетЗарплатыПервичныхДокументов();
НоваяСтрока = ТаблицаБухучетЗарплаты.Добавить();
НоваяСтрока.ДокументОснование = Объект.Ссылка;
НоваяСтрока.НачислениеУдержание = Перечисления.ВидыОсобыхНачисленийИУдержаний.СтоимостьПодарковПризов;
НоваяСтрока.СпособОтраженияЗарплатыВБухучете = Объект.СпособОтраженияЗарплатыВБухучете;
НоваяСтрока.ОтношениеКЕНВД = Объект.ОтношениеКЕНВД;
НоваяСтрока.СтатьяФинансирования = Объект.СтатьяФинансирования;
НоваяСтрока.СтатьяРасходов = СтатьяРасходов;
ДанныеДляБухучета.Вставить("ТаблицаБухучетЗарплаты", ТаблицаБухучетЗарплаты);
Возврат ДанныеДляБухучета;
КонецФункции
Функция ОписаниеСоставаОбъекта() Экспорт
МетаданныеДокумента = Метаданные.Документы.ПризПодарок;
Возврат ЗарплатаКадрыСоставДокументов.ОписаниеСоставаОбъектаПоМетаданнымФизическиеЛицаВТабличныхЧастях(МетаданныеДокумента);
КонецФункции
Функция СвойстваИсправляемогоДокумента(ДокументСсылка) Экспорт
Реквизиты = ИсправлениеДокументовЗарплатаКадры.РеквизитыИсправляемогоРасчетногоДокумента();
Возврат ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ДокументСсылка, Реквизиты);
КонецФункции
Функция ПараметрыИсправляемогоДокумента(ДокументСсылка) Экспорт
Возврат ИсправлениеДокументовЗарплатаКадры.ПараметрыИсправляемогоДокумента(ДокументСсылка,
СвойстваИсправляемогоДокумента(ДокументСсылка));
КонецФункции
Функция ПараметрыСторнируемогоДокумента(ДокументСсылка) Экспорт
Свойства = ПараметрыИсправляемогоДокумента(ДокументСсылка);
Параметры = ИсправлениеДокументовЗарплатаКадры.ПараметрыСторнируемогоДокумента(ДокументСсылка, Свойства);
Параметры.ЭтоПрочиеДоходы = Истина;
Параметры.НачисленияСДатойНачала = Ложь;
Параметры.РаспределениеНачисленийВТаблицах = Ложь;
ОписаниеТаблицы = ИсправлениеДокументовЗарплатаКадры.НовыйОписаниеТаблицыНачислений();
ОписаниеТаблицы.ИмяТаблицы = "Начисления";
ОписаниеТаблицы.ИмяПоляВидРасчета = Неопределено;
ОписаниеТаблицы.ВидРасчетаЗначение = "Перечисление.ВидыОсобыхНачисленийИУдержаний.СтоимостьПодарковПризов";
ОписаниеТаблицы.ИмяПоляИдентификаторСтрокиВидаРасчета = "ИдентификаторСтроки";
Параметры.ТаблицыНачислений.Добавить(ОписаниеТаблицы);
Возврат Параметры;
КонецФункции
Функция ОбъектЗаблокирован(СсылкаНаОбъект) Экспорт
Возврат Истина;
КонецФункции
Процедура ДополнитьСведенияОДоходахСтраховыеВзносы(Движения, РеквизитыДляПроведения) Экспорт
ВидДоходаСтраховыеВзносы = Неопределено;
Если Не РеквизитыДляПроведения.Свойство("ВидДоходаСтраховыеВзносы", ВидДоходаСтраховыеВзносы) Тогда
ВидДоходаСтраховыеВзносы = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(РеквизитыДляПроведения.СторнируемыйДокумент, "ВидДоходаСтраховыеВзносы");
КонецЕсли;
Для Каждого СтрокаДвижение Из Движения.СведенияОДоходахСтраховыеВзносы Цикл
СтрокаДвижение.ВидДохода = ВидДоходаСтраховыеВзносы;
КонецЦикла;
КонецПроцедуры
Функция ПолучитьРаспределениеНачислений(ДокументСсылка) Экспорт
РеквизитыДляПроведения = РеквизитыДляПроведения(ДокументСсылка);
Если ПолучитьФункциональнуюОпцию("ИспользоватьСтатьиФинансированияЗарплата") Тогда
МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("ДокументСсылка", ДокументСсылка);
Запрос.Текст =
"ВЫБРАТЬ
| Начисления.ИдентификаторСтроки КАК ИдентификаторСтроки,
| Начисления.Ссылка.Организация КАК Организация,
| Начисления.Сотрудник КАК Сотрудник,
| Начисления.Подразделение КАК Подразделение,
| Начисления.Ссылка.ДатаПолученияДохода КАК ДатаДействия,
| Начисления.Результат КАК Сумма
|ПОМЕСТИТЬ ВТДанныеДокумента
|ИЗ
| Документ.ПризПодарок.Начисления КАК Начисления
|ГДЕ
| Начисления.Ссылка = &ДокументСсылка";
Запрос.Выполнить();
ОписательВременныхТаблиц = КадровыйУчет.ОписательВременныхТаблицДляСоздатьВТКадровыеДанныеСотрудников(
Запрос.МенеджерВременныхТаблиц, "ВТДанныеДокумента", "Сотрудник,ДатаДействия");
ОписательВременныхТаблиц.ИмяВТКадровыеДанныеСотрудников = "ВТТерриторииСотрудников";
КадровыйУчет.СоздатьВТКадровыеДанныеСотрудников(ОписательВременныхТаблиц, Ложь, "Территория");
Запрос.УстановитьПараметр("ИспользоватьРаспределениеПоТерриториямУсловиямТруда",
ЗарплатаКадрыРасширенный.ИспользоватьРаспределениеПоТерриториямУсловиямТруда(РеквизитыДляПроведения.Организация));
Запрос.Текст =
"ВЫБРАТЬ
| Начисления.ИдентификаторСтроки КАК ИдентификаторСтроки,
| Начисления.Организация КАК Организация,
| Начисления.Сотрудник КАК Сотрудник,
| Начисления.Подразделение КАК Подразделение,
| ВЫБОР
| КОГДА &ИспользоватьРаспределениеПоТерриториямУсловиямТруда = ЛОЖЬ
| ТОГДА Начисления.Подразделение
| КОГДА ТерриторииСотрудников.Территория ЕСТЬ NULL
| ИЛИ ТерриторииСотрудников.Территория = НЕОПРЕДЕЛЕНО
| ИЛИ ТерриторииСотрудников.Территория = ЗНАЧЕНИЕ(Справочник.ТерриторииВыполненияРабот.ПустаяСсылка)
| ТОГДА Начисления.Подразделение
| ИНАЧЕ ТерриторииСотрудников.Территория
| КОНЕЦ КАК ТерриторияВыполненияРаботВОрганизации,
| Начисления.Сумма КАК Сумма
|ПОМЕСТИТЬ ВТНачисленияДляРаспределения
|ИЗ
| ВТДанныеДокумента КАК Начисления
| ЛЕВОЕ СОЕДИНЕНИЕ ВТТерриторииСотрудников КАК ТерриторииСотрудников
| ПО Начисления.Сотрудник = ТерриторииСотрудников.Сотрудник
| И Начисления.ДатаДействия = ТерриторииСотрудников.Период";
Запрос.Выполнить();
ОтражениеЗарплатыВБухучетеРасширенный.СоздатьВТРаспределениеПризПодарокПоСтатьям(
МенеджерВременныхТаблиц,
ДанныеДляБухучетаЗарплатыПервичныхДокументов(РеквизитыДляПроведения).ТаблицаБухучетЗарплаты,
РеквизитыДляПроведения.Организация,
РеквизитыДляПроведения.ПериодРегистрации);
Запрос.Текст =
"ВЫБРАТЬ
| РаспределениеПоСтатьям.ИдентификаторСтроки КАК ИдентификаторСтроки,
| РаспределениеПоСтатьям.Сумма КАК Результат,
| РаспределениеПоСтатьям.СтатьяФинансирования КАК СтатьяФинансирования,
| РаспределениеПоСтатьям.СтатьяРасходов КАК СтатьяРасходов,
| РаспределениеПоСтатьям.СпособОтраженияЗарплатыВБухучете КАК СпособОтраженияЗарплатыВБухучете
|ИЗ
| ВТРаспределениеПризПодарокПоСтатьям КАК РаспределениеПоСтатьям";
Иначе
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("ДокументСсылка", ДокументСсылка);
Запрос.УстановитьПараметр("СпособОтраженияЗарплатыВБухучете", РеквизитыДляПроведения.СпособОтраженияЗарплатыВБухучете);
Запрос.Текст =
"ВЫБРАТЬ
| Начисления.ИдентификаторСтроки КАК ИдентификаторСтроки,
| Начисления.Результат КАК Результат,
| ЗНАЧЕНИЕ(Справочник.СтатьиФинансированияЗарплата.ПустаяСсылка) КАК СтатьяФинансирования,
| ЗНАЧЕНИЕ(Справочник.СтатьиРасходовЗарплата.ПустаяСсылка) КАК СтатьяРасходов,
| &СпособОтраженияЗарплатыВБухучете КАК СпособОтраженияЗарплатыВБухучете
|ИЗ
| Документ.ПризПодарок.Начисления КАК Начисления
|ГДЕ
| Начисления.Ссылка = &ДокументСсылка";
КонецЕсли;
Возврат Запрос.Выполнить().Выгрузить();
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Функция ДанныеДляПроведения(РеквизитыДляПроведения, СтруктураВидовУчета)
ДанныеДляПроведения = РасчетЗарплаты.СоздатьДанныеДляПроведенияНачисленияЗарплаты();
Запрос = Новый Запрос;
Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
ВидыДоходаИсполнительногоПроизводства = УчетНачисленнойЗарплаты.ВидыДоходовИсполнительногоПроизводстваНачислений(РеквизитыДляПроведения.ДатаПолученияДохода);
ВидыДохода = ВидыДоходаИсполнительногоПроизводства[Перечисления.ВидыОсобыхНачисленийИУдержаний.СтоимостьПодарковПризов];
УчетНДФЛ.СоздатьВТДанныеНДФЛПоДокументу(Запрос.МенеджерВременныхТаблиц, РеквизитыДляПроведения.Ссылка);
Запрос.УстановитьПараметр("Ссылка", РеквизитыДляПроведения.Ссылка);
Запрос.УстановитьПараметр("ИспользоватьШтатноеРасписание", ПолучитьФункциональнуюОпцию("ИспользоватьШтатноеРасписание"));
Запрос.УстановитьПараметр("ВидДоходаИсполнительногоПроизводства", ВидыДохода);
ТекстЗапроса =
"ВЫБРАТЬ
| ПризПодарок.Ссылка КАК Ссылка,
| ПризПодарок.Ссылка.Дата КАК Дата,
| ПризПодарок.Ссылка.ДатаПолученияДохода КАК ДатаДействия,
| ПризПодарок.Ссылка.КатегорияДохода КАК КатегорияДохода,
| НАЧАЛОПЕРИОДА(ПризПодарок.Ссылка.ДатаПолученияДохода, МЕСЯЦ) КАК ПериодДействия,
| ПризПодарок.Ссылка.Организация КАК Организация,
| ПризПодарок.Сотрудник КАК Сотрудник,
| ПризПодарок.Подразделение КАК Подразделение,
| ПризПодарок.МестоПолученияДохода КАК МестоПолученияДохода,
| ПризПодарок.Сотрудник.ФизическоеЛицо КАК ФизическоеЛицо,
| ПризПодарок.Ссылка.ДатаПолученияДохода КАК ПланируемаяДатаВыплаты,
| НАЧАЛОПЕРИОДА(ПризПодарок.Ссылка.ДатаПолученияДохода, МЕСЯЦ) КАК МесяцНалоговогоПериода,
| НАЧАЛОПЕРИОДА(ПризПодарок.Ссылка.ДатаПолученияДохода, МЕСЯЦ) КАК ПериодРегистрации,
| ЗНАЧЕНИЕ(Перечисление.ВидыОсобыхНачисленийИУдержаний.СтоимостьПодарковПризов) КАК Начисление,
| &ВидДоходаИсполнительногоПроизводства КАК ВидДоходаИсполнительногоПроизводства,
| ПризПодарок.Результат КАК Сумма,
| ПризПодарок.Ссылка.КодДоходаНДФЛ КАК КодДохода,
| ПризПодарок.Ссылка.КодДоходаНДФЛ.СтавкаНалогообложенияРезидента КАК СтавкаНалогообложенияРезидента,
| ПризПодарок.Ссылка.ВидДоходаСтраховыеВзносы КАК ВидДохода,
| ПризПодарок.КодВычета КАК КодВычета,
| ПризПодарок.НДФЛ - &ВычитаемыеНалоги КАК НДФЛ,
| 0 КАК Налог,
| ПризПодарок.СуммаВычета КАК СуммаВычета,
| ПризПодарок.Ссылка.СтатьяФинансирования КАК СтатьяФинансирования,
| ПризПодарок.Ссылка.СтатьяРасходов КАК СтатьяРасходов,
| ПризПодарок.Ссылка.СпособОтраженияЗарплатыВБухучете КАК СпособОтраженияЗарплатыВБухучете,
| ПризПодарок.Ссылка.ОтношениеКЕНВД КАК ОтношениеКЕНВД,
| ПризПодарок.Ссылка.ПериодРегистрации КАК ПериодРегистрацииДокумента,
| ПризПодарок.Ссылка.ИсключаетсяИзРасчетнойБазыИсполнительныхЛистов КАК ИсключаетсяИзРасчетнойБазыИсполнительныхЛистов,
| ЛОЖЬ КАК Сторно,
| НЕОПРЕДЕЛЕНО КАК СторнируемыйДокумент,
| ПризПодарок.НомерСтроки КАК НомерСтроки
|ПОМЕСТИТЬ ВТДанныеДокументаПредварительно
|ИЗ
| Документ.ПризПодарок.Начисления КАК ПризПодарок
|ГДЕ
| ПризПодарок.Ссылка = &Ссылка
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ПризПодарок.Ссылка,
| ПризПодарок.Ссылка.Дата,
| ПризПодарок.Ссылка.ДатаПолученияДохода,
| ПризПодарок.Ссылка.КатегорияДохода КАК КатегорияДохода,
| НАЧАЛОПЕРИОДА(ПризПодарок.Ссылка.ДатаПолученияДохода, МЕСЯЦ),
| ПризПодарок.Ссылка.Организация,
| ПризПодарок.Сотрудник,
| ПризПодарок.Подразделение,
| ПризПодарок.МестоПолученияДохода,
| ПризПодарок.Сотрудник.ФизическоеЛицо,
| ПризПодарок.Ссылка.ДатаПолученияДохода,
| НАЧАЛОПЕРИОДА(ПризПодарок.Ссылка.ДатаПолученияДохода, МЕСЯЦ),
| НАЧАЛОПЕРИОДА(ПризПодарок.Ссылка.ДатаПолученияДохода, МЕСЯЦ),
| ЗНАЧЕНИЕ(Перечисление.ВидыОсобыхНачисленийИУдержаний.СтоимостьПодарковПризов),
| &ВидДоходаИсполнительногоПроизводства,
| ВЫБОР
| КОГДА ПризПодарок.Сторно
| ТОГДА -ПризПодарок.Результат
| ИНАЧЕ ПризПодарок.Результат
| КОНЕЦ,
| ПризПодарок.Ссылка.КодДоходаНДФЛ,
| ПризПодарок.Ссылка.КодДоходаНДФЛ.СтавкаНалогообложенияРезидента,
| ПризПодарок.Ссылка.ВидДоходаСтраховыеВзносы,
| ПризПодарок.КодВычета,
| ВЫБОР
| КОГДА ПризПодарок.Сторно
| ТОГДА -ПризПодарок.НДФЛ
| ИНАЧЕ ПризПодарок.НДФЛ
| КОНЕЦ,
| &СторноНалогов,
| ВЫБОР
| КОГДА ПризПодарок.Сторно
| ТОГДА -ПризПодарок.СуммаВычета
| ИНАЧЕ ПризПодарок.СуммаВычета
| КОНЕЦ,
| ПризПодарок.Ссылка.СтатьяФинансирования,
| ПризПодарок.Ссылка.СтатьяРасходов,
| ПризПодарок.Ссылка.СпособОтраженияЗарплатыВБухучете,
| ПризПодарок.Ссылка.ОтношениеКЕНВД,
| ПризПодарок.Ссылка.ПериодРегистрации,
| ПризПодарок.Ссылка.ИсключаетсяИзРасчетнойБазыИсполнительныхЛистов,
| ПризПодарок.Сторно,
| ПризПодарок.СторнируемыйДокумент,
| ПризПодарок.НомерСтроки
|ИЗ
| Документ.ПризПодарок.НачисленияПерерасчет КАК ПризПодарок
|ГДЕ
| ПризПодарок.Ссылка = &Ссылка
|;
|
|
|ВЫБРАТЬ РАЗЛИЧНЫЕ
| ДанныеДокумента.ФизическоеЛицо КАК ФизическоеЛицо
|ПОМЕСТИТЬ ВТФизическиеЛица
|ИЗ
| ВТДанныеДокументаПредварительно КАК ДанныеДокумента
|;
|
|
|ВЫБРАТЬ
| ДанныеДокумента.ФизическоеЛицо КАК ФизическоеЛицо,
| ДанныеДокумента.КодДохода КАК КодДохода,
| ДанныеДокумента.КатегорияДохода КАК КатегорияДохода,
| ДанныеДокумента.СтавкаНалогообложенияРезидента КАК СтавкаНалогообложенияРезидента,
| ДанныеДокумента.ПланируемаяДатаВыплаты КАК Период
|ПОМЕСТИТЬ ВТДоходыФизическихЛиц
|ИЗ
| ВТДанныеДокументаПредварительно КАК ДанныеДокумента";
ИменаРесурсовНалога = УчетНДФЛ.РесурсыИсчисленногоНалогаВМассиве("НДФЛ", Истина);
ТекстНалогов = "";
ТекстСторноНалогов = "";
ТекстВычитаемыхНалогов = "";
Для каждого ИмяРесурса Из ИменаРесурсовНалога Цикл
ТекстСторноНалогов = ТекстСторноНалогов + "
| ВЫБОР
| КОГДА ПризПодарок.Сторно
| ТОГДА -ПризПодарок." + ИмяРесурса + "
| ИНАЧЕ ПризПодарок." + ИмяРесурса + "
| КОНЕЦ," + Символы.ПС;
ТекстНалогов = ТекстНалогов + "ПризПодарок." + ИмяРесурса + " КАК " + ИмяРесурса + "," + Символы.ПС;
ТекстВычитаемыхНалогов = ТекстВычитаемыхНалогов + " - ПризПодарок." + ИмяРесурса;
КонецЦикла;
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&СторноНалогов,", ТекстСторноНалогов);
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "- &ВычитаемыеНалоги", ТекстВычитаемыхНалогов);
Запрос.Текст = СтрЗаменить(ТекстЗапроса, "0 КАК Налог,", ТекстНалогов);
Запрос.Выполнить();
Запрос.УстановитьПараметр("ИспользоватьРаспределениеПоТерриториямУсловиямТруда", ЗарплатаКадрыРасширенный.ИспользоватьРаспределениеПоТерриториямУсловиямТруда(РеквизитыДляПроведения.Организация));
ОписательВременныхТаблиц = КадровыйУчет.ОписательВременныхТаблицДляСоздатьВТКадровыеДанныеСотрудников(
Запрос.МенеджерВременныхТаблиц, "ВТДанныеДокументаПредварительно", "Сотрудник,ДатаДействия");
ОписательВременныхТаблиц.ИмяВТКадровыеДанныеСотрудников = "ВТТерриторииСотрудников";
КадровыйУчет.СоздатьВТКадровыеДанныеСотрудников(ОписательВременныхТаблиц, Ложь, "Территория");
ТекстЗапроса =
"ВЫБРАТЬ
| ДанныеДокумента.Ссылка КАК Ссылка,
| ДанныеДокумента.Дата КАК Дата,
| ДанныеДокумента.ДатаДействия КАК ДатаДействия,
| ДанныеДокумента.ПериодДействия КАК ПериодДействия,
| ДанныеДокумента.Организация КАК Организация,
| ДанныеДокумента.Сотрудник КАК Сотрудник,
| ДанныеДокумента.Подразделение КАК Подразделение,
| ДанныеДокумента.МестоПолученияДохода КАК МестоПолученияДохода,
| ВЫБОР
| КОГДА &ИспользоватьРаспределениеПоТерриториямУсловиямТруда = ЛОЖЬ
| ТОГДА ДанныеДокумента.Подразделение
| КОГДА ТерриторииСотрудников.Территория ЕСТЬ NULL
| ИЛИ ТерриторииСотрудников.Территория = НЕОПРЕДЕЛЕНО
| ИЛИ ТерриторииСотрудников.Территория = ЗНАЧЕНИЕ(Справочник.ТерриторииВыполненияРабот.ПустаяСсылка)
| ТОГДА ДанныеДокумента.Подразделение
| ИНАЧЕ ТерриторииСотрудников.Территория
| КОНЕЦ КАК ТерриторияВыполненияРаботВОрганизации,
| ДанныеДокумента.Подразделение КАК ПодразделениеСотрудника,
| ДанныеДокумента.ФизическоеЛицо КАК ФизическоеЛицо,
| ДанныеДокумента.ПланируемаяДатаВыплаты КАК ПланируемаяДатаВыплаты,
| ДанныеДокумента.МесяцНалоговогоПериода КАК МесяцНалоговогоПериода,
| ДанныеДокумента.ПериодРегистрации КАК ПериодРегистрации,
| ДанныеДокумента.Начисление КАК Начисление,
| ДанныеДокумента.ВидДоходаИсполнительногоПроизводства КАК ВидДоходаИсполнительногоПроизводства,
| ДанныеДокумента.Сумма КАК Сумма,
| ДанныеДокумента.КодДохода КАК КодДохода,
| ДанныеДокумента.СтавкаНалогообложенияРезидента КАК СтавкаНалогообложенияРезидента,
| ДанныеДокумента.ВидДохода КАК ВидДохода,
| ДанныеДокумента.КодВычета КАК КодВычета,
| 0 КАК Налог,
| ДанныеДокумента.КатегорияДохода КАК КатегорияДохода,
| ДанныеДокумента.СуммаВычета КАК СуммаВычета,
| ДанныеДокумента.СтатьяФинансирования КАК СтатьяФинансирования,
| ДанныеДокумента.СтатьяРасходов КАК СтатьяРасходов,
| ДанныеДокумента.СпособОтраженияЗарплатыВБухучете КАК СпособОтраженияЗарплатыВБухучете,
| ДанныеДокумента.ОтношениеКЕНВД КАК ОтношениеКЕНВД,
| ДанныеДокумента.ПериодРегистрацииДокумента КАК ПериодРегистрацииДокумента,
| ДанныеДокумента.ИсключаетсяИзРасчетнойБазыИсполнительныхЛистов КАК ИсключаетсяИзРасчетнойБазыИсполнительныхЛистов,
| ДанныеДокумента.Сторно КАК Сторно,
| ДанныеДокумента.СторнируемыйДокумент КАК СторнируемыйДокумент,
| ДанныеДокумента.НомерСтроки КАК НомерСтроки,
| АВТОНОМЕРЗАПИСИ() КАК ИдентификаторСтроки
|ПОМЕСТИТЬ ВТДанныеДокумента
|ИЗ
| ВТДанныеДокументаПредварительно КАК ДанныеДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ ВТТерриторииСотрудников КАК ТерриторииСотрудников
| ПО ДанныеДокумента.Сотрудник = ТерриторииСотрудников.Сотрудник
| И ДанныеДокумента.ДатаДействия = ТерриторииСотрудников.Период";
ИменаРесурсовНалога = УчетНДФЛ.РесурсыИсчисленногоНалогаВМассиве("НДФЛ");
ТекстНалогов = "";
Для каждого ИмяРесурса Из ИменаРесурсовНалога Цикл
ТекстНалогов = ТекстНалогов + "ДанныеДокумента." + ИмяРесурса + " КАК " + ИмяРесурса + "," + Символы.ПС;
КонецЦикла;
Запрос.Текст = СтрЗаменить(ТекстЗапроса, "0 КАК Налог,", ТекстНалогов);
Запрос.Выполнить();
Если ПолучитьФункциональнуюОпцию("ИспользоватьСтатьиФинансированияЗарплата") Тогда
Запрос.Текст =
"ВЫБРАТЬ
| ДанныеДокумента.ПериодРегистрации КАК ПериодРегистрации,
| ДанныеДокумента.ДатаДействия КАК ДатаДействия,
| ДанныеДокумента.ПериодДействия КАК ПериодДействия,
| ДанныеДокумента.Организация КАК Организация,
| ДанныеДокумента.Сотрудник КАК Сотрудник,
| ДанныеДокумента.ФизическоеЛицо КАК ФизическоеЛицо,
| ДанныеДокумента.Подразделение КАК Подразделение,
| ДанныеДокумента.МестоПолученияДохода КАК МестоПолученияДохода,
| ДанныеДокумента.ПодразделениеСотрудника КАК ПодразделениеСотрудника,
| ДанныеДокумента.ТерриторияВыполненияРаботВОрганизации КАК ТерриторияВыполненияРаботВОрганизации,
| ДанныеДокумента.Начисление КАК Начисление,
| ДанныеДокумента.ВидДоходаИсполнительногоПроизводства КАК ВидДоходаИсполнительногоПроизводства,
| ДанныеДокумента.ВидДохода КАК ВидДохода,
| ДанныеДокумента.ПериодРегистрацииДокумента КАК ПериодРегистрацииДокумента,
| ДанныеДокумента.ИсключаетсяИзРасчетнойБазыИсполнительныхЛистов КАК ИсключаетсяИзРасчетнойБазыИсполнительныхЛистов,
| ЗНАЧЕНИЕ(Перечисление.ВидыОперацийПоЗарплате.ПустаяСсылка) КАК ВидОперации,
| НАЧАЛОПЕРИОДА(ДанныеДокумента.ПериодРегистрации, МЕСЯЦ) КАК ДатаНачала,
| КОНЕЦПЕРИОДА(ДанныеДокумента.ПериодРегистрации, МЕСЯЦ) КАК ДатаОкончания,
| ДанныеДокумента.ИдентификаторСтроки КАК ИдентификаторСтроки,
| ДанныеДокумента.Сумма КАК Сумма,
| ДанныеДокумента.СуммаВычета КАК СуммаВычета,
| ДанныеДокумента.Ссылка КАК ДокументОснование,
| ЛОЖЬ КАК РассчитыватьПоРазовымНачислениямДокумента,
| ДанныеДокумента.Сторно КАК Сторно,
| ДанныеДокумента.СторнируемыйДокумент КАК СторнируемыйДокумент
|ПОМЕСТИТЬ ВТНачисленияДляРаспределения
|ИЗ
| ВТДанныеДокумента КАК ДанныеДокумента";
Запрос.Выполнить();
ОтражениеЗарплатыВБухучетеРасширенный.СоздатьВТРаспределениеПризПодарокПоСтатьям(
Запрос.МенеджерВременныхТаблиц,
Документы.ПризПодарок.ДанныеДляБухучетаЗарплатыПервичныхДокументов(РеквизитыДляПроведения).ТаблицаБухучетЗарплаты,
РеквизитыДляПроведения.Организация,
РеквизитыДляПроведения.ПериодРегистрации);
ИспользоватьБюджетныйТарифНСиПЗ = ОтражениеЗарплатыВБухучетеРасширенный.ИспользоватьБюджетныйТарифНСиПЗ(РеквизитыДляПроведения.ПериодРегистрации);
Если ИспользоватьБюджетныйТарифНСиПЗ Тогда
МодульУчетБюджетныхУчреждений = ОбщегоНазначения.ОбщийМодуль("УчетБюджетныхУчреждений");
МодульУчетБюджетныхУчреждений.СоздатьВТСтатьиБюджетныйТарифНСиПЗ(Запрос.МенеджерВременныхТаблиц);
КонецЕсли;
Запрос.Текст =
"ВЫБРАТЬ
| Начисления.ПериодРегистрации КАК ПериодРегистрации,
| Начисления.ПериодРегистрации КАК МесяцНачисления,
| Начисления.ДатаДействия КАК ДатаДействия,
| Начисления.ДатаДействия КАК ДатаДохода,
| Начисления.ПериодДействия КАК ПериодДействия,
| Начисления.Организация КАК Организация,
| Начисления.Сотрудник КАК Сотрудник,
| Начисления.ФизическоеЛицо КАК ФизическоеЛицо,
| Начисления.Подразделение КАК Подразделение,
| Начисления.МестоПолученияДохода КАК МестоПолученияДохода,
| Начисления.ПодразделениеСотрудника КАК ПодразделениеСотрудника,
| Начисления.ТерриторияВыполненияРаботВОрганизации КАК ТерриторияВыполненияРаботВОрганизации,
| Начисления.Начисление КАК Начисление,
| Начисления.ВидДоходаИсполнительногоПроизводства КАК ВидДоходаИсполнительногоПроизводства,
| Начисления.ВидДохода КАК ВидДохода,
| Начисления.ПериодРегистрацииДокумента КАК ПериодРегистрацииДокумента,
| Начисления.ИсключаетсяИзРасчетнойБазыИсполнительныхЛистов КАК ИсключаетсяИзРасчетнойБазыИсполнительныхЛистов,
| Начисления.ДатаНачала КАК ДатаНачала,
| Начисления.ДатаОкончания КАК ДатаОкончания,
| Начисления.ДокументОснование КАК ДокументОснование,
| Начисления.ДокументОснование КАК ДокументСсылка,
| ЗНАЧЕНИЕ(Справочник.УсловияТруда.ПустаяСсылка) КАК УсловияТруда,
| Начисления.Подразделение КАК ПодразделениеОрганизации,
| БухучетНачислений.Сумма КАК СуммаДохода,
| ВЫБОР
| КОГДА Начисления.Сумма = 0
| ТОГДА Начисления.СуммаВычета
| КОГДА БухучетНачислений.ОблагаетсяЕНВД
| ТОГДА ВЫРАЗИТЬ(Начисления.СуммаВычета * БухучетНачислений.Сумма / Начисления.Сумма КАК ЧИСЛО(15, 2))
| ИНАЧЕ Начисления.СуммаВычета - (ВЫРАЗИТЬ(Начисления.СуммаВычета * (Начисления.Сумма - БухучетНачислений.Сумма) / Начисления.Сумма КАК ЧИСЛО(15, 2)))
| КОНЕЦ КАК СуммаВычетаВзносы,
| БухучетНачислений.СтатьяФинансирования КАК СтатьяФинансирования,
| БухучетНачислений.СтатьяРасходов КАК СтатьяРасходов,
| БухучетНачислений.СпособОтраженияЗарплатыВБухучете КАК СпособОтраженияЗарплатыВБухучете,
| БухучетНачислений.ОблагаетсяЕНВД КАК ОблагаетсяЕНВД,
| БухучетНачислений.Сумма КАК Сумма,
| ВЫБОР
| КОГДА Начисления.Сумма = 0
| ТОГДА Начисления.СуммаВычета
| КОГДА БухучетНачислений.ОблагаетсяЕНВД
| ТОГДА ВЫРАЗИТЬ(Начисления.СуммаВычета * БухучетНачислений.Сумма / Начисления.Сумма КАК ЧИСЛО(15, 2))
| ИНАЧЕ Начисления.СуммаВычета - (ВЫРАЗИТЬ(Начисления.СуммаВычета * (Начисления.Сумма - БухучетНачислений.Сумма) / Начисления.Сумма КАК ЧИСЛО(15, 2)))
| КОНЕЦ КАК СуммаВычета,
| Начисления.Сторно КАК Сторно,
| Начисления.СторнируемыйДокумент КАК СторнируемыйДокумент,
| Начисления.ИдентификаторСтроки КАК ИдентификаторСтроки
|ПОМЕСТИТЬ ВТНачисления
|ИЗ
| ВТНачисленияДляРаспределения КАК Начисления
| ЛЕВОЕ СОЕДИНЕНИЕ ВТРаспределениеПризПодарокПоСтатьям КАК БухучетНачислений
| ПО Начисления.ИдентификаторСтроки = БухучетНачислений.ИдентификаторСтроки
|;
|
|
|УНИЧТОЖИТЬ ВТНачисленияДляРаспределения
|;
|
|
|УНИЧТОЖИТЬ ВТРаспределениеПризПодарокПоСтатьям";
Если ИспользоватьБюджетныйТарифНСиПЗ Тогда
СхемаЗапроса = Новый СхемаЗапроса;
СхемаЗапроса.УстановитьТекстЗапроса(Запрос.Текст);
ЗапросВыбора = СхемаЗапроса.ПакетЗапросов[0];
ОписаниеВТ = ЗапросВыбора.Операторы[0].Источники.Добавить(Тип("ОписаниеВременнойТаблицыСхемыЗапроса"), "ВТСтатьиБюджетныйТарифНСиПЗ", "СтатьиБюджетныйТарифНСиПЗ");
ИменаПолейВТ = ОбщегоНазначения.ВыгрузитьКолонку(Запрос.МенеджерВременныхТаблиц.Таблицы["ВТСтатьиБюджетныйТарифНСиПЗ"].Колонки, "Имя");
Для Каждого ИмяПоля Из ИменаПолейВТ Цикл
ОписаниеВТ.Источник.ДоступныеПоля.Добавить(ИмяПоля);
КонецЦикла;
УсловиеСоединения = "БухучетНачислений.СтатьяФинансирования = СтатьиБюджетныйТарифНСиПЗ.СтатьяФинансирования";
ОписаниеВТ.Соединения.Добавить("БухучетНачислений", УсловиеСоединения);
ОписаниеВТ.Соединения[0].ТипСоединения = ТипСоединенияСхемыЗапроса.ПравоеВнешнее;
ОписаниеПоля =
" ВЫБОР
| КОГДА ЕстьNULL(СтатьиБюджетныйТарифНСиПЗ.БюджетныйТарифНСиПЗ, ЛОЖЬ)
| ТОГДА БухучетНачислений.Сумма
| ИНАЧЕ 0
| КОНЕЦ";
ЗапросВыбора.Операторы[0].ВыбираемыеПоля.Добавить(ОписаниеПоля);
ЗапросВыбора.Колонки[ЗапросВыбора.Колонки.Количество()-1].Псевдоним = "СуммаПоБюджетномуТарифуНСиПЗ";
Запрос.Текст = СхемаЗапроса.ПолучитьТекстЗапроса();
КонецЕсли;
Запрос.Выполнить();
Если ИспользоватьБюджетныйТарифНСиПЗ Тогда
ЗарплатаКадры.УничтожитьВТ(Запрос.МенеджерВременныхТаблиц, "ВТСтатьиБюджетныйТарифНСиПЗ");
КонецЕсли;
Иначе
Запрос.Текст =
"ВЫБРАТЬ
| Начисления.ПериодРегистрации КАК ПериодРегистрации,
| Начисления.ПериодРегистрации КАК МесяцНачисления,
| Начисления.ДатаДействия КАК ДатаДействия,
| Начисления.ДатаДействия КАК ДатаДохода,
| Начисления.ПериодДействия КАК ПериодДействия,
| Начисления.Организация КАК Организация,
| Начисления.Сотрудник КАК Сотрудник,
| Начисления.ФизическоеЛицо КАК ФизическоеЛицо,
| Начисления.Подразделение КАК Подразделение,
| Начисления.МестоПолученияДохода КАК МестоПолученияДохода,
| Начисления.ПодразделениеСотрудника КАК ПодразделениеСотрудника,
| Начисления.ТерриторияВыполненияРаботВОрганизации КАК ТерриторияВыполненияРаботВОрганизации,
| Начисления.Начисление КАК Начисление,
| Начисления.ВидДоходаИсполнительногоПроизводства КАК ВидДоходаИсполнительногоПроизводства,
| Начисления.ВидДохода КАК ВидДохода,
| Начисления.ПериодРегистрацииДокумента КАК ПериодРегистрацииДокумента,
| Начисления.ИсключаетсяИзРасчетнойБазыИсполнительныхЛистов КАК ИсключаетсяИзРасчетнойБазыИсполнительныхЛистов,
| НАЧАЛОПЕРИОДА(Начисления.ПериодРегистрации, МЕСЯЦ) КАК ДатаНачала,
| КОНЕЦПЕРИОДА(Начисления.ПериодРегистрации, МЕСЯЦ) КАК ДатаОкончания,
| Начисления.Ссылка КАК ДокументОснование,
| Начисления.Ссылка КАК ДокументСсылка,
| ЗНАЧЕНИЕ(Справочник.УсловияТруда.ПустаяСсылка) КАК УсловияТруда,
| Начисления.Подразделение КАК ПодразделениеОрганизации,
| Начисления.Сумма КАК СуммаДохода,
| Начисления.СуммаВычета КАК СуммаВычетаВзносы,
| ЗНАЧЕНИЕ(Справочник.СтатьиФинансированияЗарплата.ПустаяСсылка) КАК СтатьяФинансирования,
| ЗНАЧЕНИЕ(Справочник.СтатьиРасходовЗарплата.ПустаяСсылка) КАК СтатьяРасходов,
| Начисления.СпособОтраженияЗарплатыВБухучете КАК СпособОтраженияЗарплатыВБухучете,
| ЛОЖЬ КАК ОблагаетсяЕНВД,
| Начисления.Сумма КАК Сумма,
| Начисления.СуммаВычета КАК СуммаВычета,
| Начисления.Сторно КАК Сторно,
| Начисления.СторнируемыйДокумент КАК СторнируемыйДокумент,
| Начисления.ИдентификаторСтроки КАК ИдентификаторСтроки
|ПОМЕСТИТЬ ВТНачисления
|ИЗ
| ВТДанныеДокумента КАК Начисления";
Запрос.Выполнить();
КонецЕсли;
УчетНДФЛ.СоздатьВТСтавкаНДФЛПоСтавкеРезидента(Запрос.МенеджерВременныхТаблиц,"ВТДоходыФизическихЛиц");
ТекстЗапроса =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| НачисленияДокумента.ФизическоеЛицо КАК ФизическоеЛицо,
| НачисленияДокумента.СтатьяФинансирования КАК СтатьяФинансирования,
| НачисленияДокумента.СтатьяРасходов КАК СтатьяРасходов,
| НачисленияДокумента.ВидДоходаИсполнительногоПроизводства КАК ВидДоходаИсполнительногоПроизводства,
| НачисленияДокумента.ИдентификаторСтроки КАК ИдентификаторСтроки
|ПОМЕСТИТЬ ВТБухучетФизическихЛиц
|ИЗ
| ВТНачисления КАК НачисленияДокумента
|;
|";
Если РеквизитыДляПроведения.НалогРассчитанВТабличнойЧасти Тогда
ТекстЗапроса = ТекстЗапроса +
"////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВЫБОР
| КОГДА ДанныеДокумента.СтавкаНалогообложенияРезидента = ЗНАЧЕНИЕ(Перечисление.НДФЛСтавкиНалогообложенияРезидента.Ставка13)
| ТОГДА ДанныеДокумента.НДФЛ
| ИНАЧЕ 0
| КОНЕЦ КАК НалогПоСтавке13,
| 0 КАК Сумма,
| ВЫБОР
| КОГДА ДанныеДокумента.СтавкаНалогообложенияРезидента = ЗНАЧЕНИЕ(Перечисление.НДФЛСтавкиНалогообложенияРезидента.Ставка09)
| ТОГДА ДанныеДокумента.НДФЛ
| ИНАЧЕ 0
| КОНЕЦ КАК НалогПоСтавке09,
| ВЫБОР
| КОГДА ДанныеДокумента.СтавкаНалогообложенияРезидента = ЗНАЧЕНИЕ(Перечисление.НДФЛСтавкиНалогообложенияРезидента.Ставка35)
| ТОГДА ДанныеДокумента.НДФЛ
| ИНАЧЕ 0
| КОНЕЦ КАК НалогПоСтавке35,
| ДанныеДокумента.ФизическоеЛицо КАК ФизическоеЛицо,
| ДанныеДокумента.ПланируемаяДатаВыплаты КАК МесяцНалоговогоПериода,
| ВЫБОР
| КОГДА ДанныеДокумента.МестоПолученияДохода ЕСТЬ НЕ NULL
| И ДанныеДокумента.МестоПолученияДохода <> НЕОПРЕДЕЛЕНО
| И ДанныеДокумента.МестоПолученияДохода <> ЗНАЧЕНИЕ(Справочник.ТерриторииВыполненияРабот.ПустаяСсылка)
| И ДанныеДокумента.МестоПолученияДохода <> ЗНАЧЕНИЕ(Справочник.ПодразделенияОрганизаций.ПустаяСсылка)
| ТОГДА ДанныеДокумента.МестоПолученияДохода
| ИНАЧЕ ДанныеДокумента.ТерриторияВыполненияРаботВОрганизации
| КОНЕЦ КАК Подразделение,
| ДанныеДокумента.КатегорияДохода КАК КатегорияДохода,
| ЕСТЬNULL(ДанныеДокумента.КодДохода, ЗНАЧЕНИЕ(Перечисление.КатегорииДоходовНДФЛ.ПустаяСсылка)) КАК КодДохода
|ИЗ
| ВТДанныеДокумента КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.Сторно = Истина
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| 0 КАК Налог,
| НДФЛ.*
|ИЗ
| ВТДанныеНДФЛ КАК НДФЛ
|
|;";
Иначе
ТекстЗапроса = ТекстЗапроса +
"////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВЫБОР
| КОГДА ДанныеДокумента.СтавкаНалогообложенияРезидента = ЗНАЧЕНИЕ(Перечисление.НДФЛСтавкиНалогообложенияРезидента.Ставка13)
| ТОГДА ДанныеДокумента.НДФЛ
| ИНАЧЕ 0
| КОНЕЦ КАК НалогПоСтавке13,
| 0 КАК Сумма,
| ВЫБОР
| КОГДА ДанныеДокумента.СтавкаНалогообложенияРезидента = ЗНАЧЕНИЕ(Перечисление.НДФЛСтавкиНалогообложенияРезидента.Ставка09)
| ТОГДА ДанныеДокумента.НДФЛ
| ИНАЧЕ 0
| КОНЕЦ КАК НалогПоСтавке09,
| ВЫБОР
| КОГДА ДанныеДокумента.СтавкаНалогообложенияРезидента = ЗНАЧЕНИЕ(Перечисление.НДФЛСтавкиНалогообложенияРезидента.Ставка35)
| ТОГДА ДанныеДокумента.НДФЛ
| ИНАЧЕ 0
| КОНЕЦ КАК НалогПоСтавке35,
| ДанныеДокумента.ФизическоеЛицо КАК ФизическоеЛицо,
| ДанныеДокумента.ПланируемаяДатаВыплаты КАК МесяцНалоговогоПериода,
| ВЫБОР
| КОГДА ДанныеДокумента.МестоПолученияДохода ЕСТЬ НЕ NULL
| И ДанныеДокумента.МестоПолученияДохода <> НЕОПРЕДЕЛЕНО
| И ДанныеДокумента.МестоПолученияДохода <> ЗНАЧЕНИЕ(Справочник.ТерриторииВыполненияРабот.ПустаяСсылка)
| И ДанныеДокумента.МестоПолученияДохода <> ЗНАЧЕНИЕ(Справочник.ПодразделенияОрганизаций.ПустаяСсылка)
| ТОГДА ДанныеДокумента.МестоПолученияДохода
| ИНАЧЕ ДанныеДокумента.ТерриторияВыполненияРаботВОрганизации
| КОНЕЦ КАК Подразделение,
| ДанныеДокумента.КатегорияДохода КАК КатегорияДохода,
| ЕСТЬNULL(ДанныеДокумента.КодДохода, ЗНАЧЕНИЕ(Перечисление.КатегорииДоходовНДФЛ.ПустаяСсылка)) КАК КодДохода
|ИЗ
| ВТДанныеДокумента КАК ДанныеДокумента
|
|;";
КонецЕсли;
ТекстЗапроса = ТекстЗапроса +
"////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ДанныеДокумента.ФизическоеЛицо КАК ФизическоеЛицо,
| ДанныеДокумента.Сотрудник КАК Сотрудник,
| ДанныеДокумента.Организация КАК Организация,
| СтавкаНДФЛПоСтавкеРезидента.КатегорияДохода КАК КатегорияДохода,
| ДанныеДокумента.КодДохода КАК КодДохода,
| ДанныеДокумента.КодВычета КАК КодВычета,
| ДанныеДокумента.ПланируемаяДатаВыплаты КАК ДатаПолученияДохода,
| ДанныеДокумента.Сумма КАК СуммаДохода,
| ДанныеДокумента.СуммаВычета КАК СуммаВычета,
| ВЫБОР
| КОГДА ДанныеДокумента.СтавкаНалогообложенияРезидента = ЗНАЧЕНИЕ(Перечисление.НДФЛСтавкиНалогообложенияРезидента.Ставка13)
| ТОГДА ДанныеДокумента.НДФЛ
| ИНАЧЕ 0
| КОНЕЦ КАК НалогПоСтавке13,
| 0 КАК Сумма,
| ВЫБОР
| КОГДА ДанныеДокумента.СтавкаНалогообложенияРезидента = ЗНАЧЕНИЕ(Перечисление.НДФЛСтавкиНалогообложенияРезидента.Ставка09)
| ТОГДА ДанныеДокумента.НДФЛ
| ИНАЧЕ 0
| КОНЕЦ КАК НалогПоСтавке09,
| ВЫБОР
| КОГДА ДанныеДокумента.СтавкаНалогообложенияРезидента = ЗНАЧЕНИЕ(Перечисление.НДФЛСтавкиНалогообложенияРезидента.Ставка35)
| ТОГДА ДанныеДокумента.НДФЛ
| ИНАЧЕ 0
| КОНЕЦ КАК НалогПоСтавке35,
| ДанныеДокумента.НДФЛ КАК Сумма,
| ДанныеДокумента.МесяцНалоговогоПериода КАК МесяцНалоговогоПериода,
| ВЫБОР
| КОГДА ДанныеДокумента.МестоПолученияДохода ЕСТЬ НЕ NULL
| И ДанныеДокумента.МестоПолученияДохода <> НЕОПРЕДЕЛЕНО
| И ДанныеДокумента.МестоПолученияДохода <> ЗНАЧЕНИЕ(Справочник.ТерриторииВыполненияРабот.ПустаяСсылка)
| И ДанныеДокумента.МестоПолученияДохода <> ЗНАЧЕНИЕ(Справочник.ПодразделенияОрганизаций.ПустаяСсылка)
| ТОГДА ДанныеДокумента.МестоПолученияДохода
| ИНАЧЕ ДанныеДокумента.ТерриторияВыполненияРаботВОрганизации
| КОНЕЦ КАК Подразделение,
| ДанныеДокумента.МестоПолученияДохода КАК МестоПолученияДохода,
| ДанныеДокумента.ПодразделениеСотрудника КАК ПодразделениеСотрудника,
| ДанныеДокумента.Начисление КАК Начисление,
| ДанныеДокумента.ИсключаетсяИзРасчетнойБазыИсполнительныхЛистов КАК ИсключаетсяИзРасчетнойБазыИсполнительныхЛистов,
| ДанныеДокумента.СтавкаНалогообложенияРезидента КАК СтавкаНалогообложенияРезидента,
| СтавкаНДФЛПоСтавкеРезидента.СтавкаНДФЛ КАК Ставка
|ИЗ
| ВТДанныеДокумента КАК ДанныеДокумента
| ЛЕВОЕ СОЕДИНЕНИЕ ВТСтавкаНДФЛПоСтавкеРезидента КАК СтавкаНДФЛПоСтавкеРезидента
| ПО ДанныеДокумента.ФизическоеЛицо = СтавкаНДФЛПоСтавкеРезидента.ФизическоеЛицо
| И ДанныеДокумента.ПланируемаяДатаВыплаты = СтавкаНДФЛПоСтавкеРезидента.Период
|ГДЕ
| ДанныеДокумента.КодДохода <> ЗНАЧЕНИЕ(Справочник.ВидыДоходовНДФЛ.ПустаяСсылка)
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ДанныеДокумента.ФизическоеЛицо КАК ФизическоеЛицо,
| ДанныеДокумента.Сотрудник КАК Сотрудник,
| ДанныеДокумента.Организация КАК Организация,
| ДанныеДокумента.КодДохода КАК КодДохода,
| ДанныеДокумента.КодВычета КАК КодВычета,
| ДанныеДокумента.КатегорияДохода КАК КатегорияДохода,
| ДанныеДокумента.ПланируемаяДатаВыплаты КАК МесяцНалоговогоПериода,
| ДанныеДокумента.НДФЛ КАК Сумма,
| &СуммаСПревышения КАК СуммаСПревышения,
| ДанныеДокумента.ТерриторияВыполненияРаботВОрганизации КАК Подразделение,
| ДанныеДокумента.МестоПолученияДохода КАК МестоПолученияДохода,
| ДанныеДокумента.ПодразделениеСотрудника КАК ПодразделениеСотрудника,
| ДанныеДокумента.СтавкаНалогообложенияРезидента КАК СтавкаНалогообложенияРезидента
|ИЗ
| ВТДанныеДокумента КАК ДанныеДокумента
|ГДЕ
| ДанныеДокумента.КодДохода <> ЗНАЧЕНИЕ(Справочник.ВидыДоходовНДФЛ.ПустаяСсылка)
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ДанныеДокумента.Организация КАК Организация,
| ДанныеДокумента.Сотрудник КАК Сотрудник,
| ДанныеДокумента.ФизическоеЛицо КАК ФизическоеЛицо,
| ДанныеДокумента.ПодразделениеСотрудника КАК Подразделение,
| ДанныеДокумента.МестоПолученияДохода КАК МестоПолученияДохода,
| ДанныеДокумента.ТерриторияВыполненияРаботВОрганизации КАК ТерриторияВыполненияРаботВОрганизации,
| ДанныеДокумента.Сумма КАК Сумма,
| ДанныеДокумента.Начисление КАК Начисление,
| ДанныеДокумента.УсловияТруда КАК УсловияТруда,
| ДанныеДокумента.ПодразделениеОрганизации КАК ПодразделениеОрганизации,
| ДанныеДокумента.СуммаДохода КАК СуммаДохода,
| ДанныеДокумента.СуммаВычетаВзносы КАК СуммаВычетаВзносы,
| ДанныеДокумента.ДатаНачала КАК ДатаНачала,
| ДанныеДокумента.ДатаОкончания КАК ДатаОкончания,
| ДанныеДокумента.ДокументОснование КАК ДокументОснование,
| ДанныеДокумента.ОблагаетсяЕНВД КАК ОблагаетсяЕНВД,
| ДанныеДокумента.СтатьяФинансирования КАК СтатьяФинансирования,
| ДанныеДокумента.СтатьяРасходов КАК СтатьяРасходов,
| ДанныеДокумента.СпособОтраженияЗарплатыВБухучете КАК СпособОтраженияЗарплатыВБухучете
|ИЗ
| ВТНачисления КАК ДанныеДокумента
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ДанныеДокументаБезПревышения.Организация КАК Организация,
| ДанныеДокументаБезПревышения.Сотрудник КАК Сотрудник,
| ДанныеДокументаБезПревышения.ФизическоеЛицо КАК ФизическоеЛицо,
| ДанныеДокументаБезПревышения.ТерриторияВыполненияРаботВОрганизации КАК Подразделение,
| ДанныеДокументаБезПревышения.МестоПолученияДохода КАК МестоПолученияДохода,
| ДанныеДокументаБезПревышения.Подразделение КАК ПодразделениеСотрудника,
| ДанныеДокументаБезПревышения.НДФЛ КАК Сумма,
| ЗНАЧЕНИЕ(Перечисление.ВидыОсобыхНачисленийИУдержаний.НДФЛ) КАК ВидУдержания,
| ДанныеДокументаБезПревышения.Ссылка КАК ДокументОснование,
| БухучетФизическихЛиц.СтатьяФинансирования КАК СтатьяФинансирования,
| БухучетФизическихЛиц.СтатьяРасходов КАК СтатьяРасходов,
| БухучетФизическихЛиц.ВидДоходаИсполнительногоПроизводства КАК ВидДоходаИсполнительногоПроизводства,
| ДанныеДокументаБезПревышения.ПланируемаяДатаВыплаты КАК МесяцНалоговогоПериода,
| ДанныеДокументаБезПревышения.КатегорияДохода КАК КатегорияДохода,
| ДанныеДокументаБезПревышения.КодДохода КАК КодДохода
|ИЗ
| ВТДанныеДокумента КАК ДанныеДокументаБезПревышения
| ЛЕВОЕ СОЕДИНЕНИЕ ВТБухучетФизическихЛиц КАК БухучетФизическихЛиц
| ПО ДанныеДокументаБезПревышения.ИдентификаторСтроки = БухучетФизическихЛиц.ИдентификаторСтроки
|ГДЕ
| ДанныеДокументаБезПревышения.НДФЛ <> 0
|";
ШаблонЗапроса = "
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ДанныеДокументаСПревышения.Организация,
| ДанныеДокументаСПревышения.Сотрудник,
| ДанныеДокументаСПревышения.ФизическоеЛицо,
| ДанныеДокументаСПревышения.ТерриторияВыполненияРаботВОрганизации,
| ДанныеДокументаСПревышения.МестоПолученияДохода,
| ДанныеДокументаСПревышения.Подразделение,
| &НДФЛСПревышения,
| ЗНАЧЕНИЕ(Перечисление.ВидыОсобыхНачисленийИУдержаний.ПустаяСсылка),
| ДанныеДокументаСПревышения.Ссылка,
| БухучетФизическихЛиц.СтатьяФинансирования,
| БухучетФизическихЛиц.СтатьяРасходов,
| БухучетФизическихЛиц.ВидДоходаИсполнительногоПроизводства,
| ДанныеДокументаСПревышения.ПланируемаяДатаВыплаты,
| ДанныеДокументаСПревышения.КатегорияДохода,
| ДанныеДокументаСПревышения.КодДохода
|ИЗ
| ВТДанныеДокумента КАК ДанныеДокументаСПревышения
| ЛЕВОЕ СОЕДИНЕНИЕ ВТБухучетФизическихЛиц КАК БухучетФизическихЛиц
| ПО ДанныеДокументаСПревышения.ИдентификаторСтроки = БухучетФизическихЛиц.ИдентификаторСтроки
|ГДЕ
| &НДФЛСПревышения <> 0";
ИменаРесурсовНалога = УчетНДФЛ.РесурсыИсчисленногоНалогаВМассиве("НДФЛ", Истина);
ТекстНалогов = "";
Для каждого ИмяРесурса Из ИменаРесурсовНалога Цикл
ТекстНалогов = ТекстНалогов + "
| ВЫБОР
| КОГДА ДанныеДокумента.СтавкаНалогообложенияРезидента = ЗНАЧЕНИЕ(Перечисление.НДФЛСтавкиНалогообложенияРезидента.Ставка13)
| ТОГДА ДанныеДокумента." + ИмяРесурса + "
| ИНАЧЕ 0
| КОНЕЦ КАК " + СтрЗаменить(ИмяРесурса, "НДФЛ", "Налог") + "," + Символы.ПС;
ТекстЗапроса = ТекстЗапроса + СтрЗаменить(СтрЗаменить(ШаблонЗапроса, "&НДФЛСПревышения", "ДанныеДокументаСПревышения." + ИмяРесурса), "ПустаяСсылка", ИмяРесурса);
КонецЦикла;
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "0 КАК Сумма,", ТекстНалогов);
ТекстНалогов = "";
ТекстСумм = "";
Для каждого ИмяРесурса Из ИменаРесурсовНалога Цикл
ТекстНалогов = ТекстНалогов + "НДФЛ." + СтрЗаменить(ИмяРесурса, "НДФЛ", "Налог") +" КАК " + СтрЗаменить(ИмяРесурса, "НДФЛ", "Налог") + "," + Символы.ПС;
ТекстСумм = ТекстСумм + "ДанныеДокумента." + ИмяРесурса + " КАК " + СтрЗаменить(ИмяРесурса, "НДФЛ", "Сумма") + "," + Символы.ПС;
КонецЦикла;
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, "&СуммаСПревышения КАК СуммаСПревышения,", ТекстСумм);
Запрос.Текст = СтрЗаменить(ТекстЗапроса, "0 КАК Налог,", ТекстНалогов);
Результат = Запрос.ВыполнитьПакет();
КоличествоРезультатов = Результат.ВГраница();
Если РеквизитыДляПроведения.НалогРассчитанВТабличнойЧасти Тогда
НДФЛСторно = Результат[КоличествоРезультатов-5].Выгрузить();
Если НДФЛСторно.Количество() = 0 Тогда
НДФЛСторно = Неопределено;
КонецЕсли;
Иначе
НДФЛСторно = Неопределено;
КонецЕсли;
Если СтруктураВидовУчета.ОстальныеВидыУчета Или СтруктураВидовУчета.СтраховыеВзносы Тогда
ДанныеДляПроведения.Вставить("Начисления", Результат[КоличествоРезультатов-1].Выгрузить());
ДанныеДляПроведения.Вставить("МенеджерВременныхТаблиц", Запрос.МенеджерВременныхТаблиц);
ОтражениеЗарплатыВБухучете.СоздатьВТНачисленияСДаннымиЕНВД(РеквизитыДляПроведения.Организация, РеквизитыДляПроведения.ПериодРегистрации, ДанныеДляПроведения.МенеджерВременныхТаблиц, ДанныеДляПроведения.Начисления);
КонецЕсли;
Если СтруктураВидовУчета.ОстальныеВидыУчета Тогда
ДанныеДляПроведения.Вставить("НДФЛСторно", НДФЛСторно);
ДанныеДляПроведения.Вставить("НДФЛ", Результат[КоличествоРезультатов-4].Выгрузить());
ДанныеДляПроведения.Вставить("ДанныеДляНДФЛ", Результат[КоличествоРезультатов-3].Выгрузить());
ДанныеДляПроведения.Вставить("ДанныеДляРасчетовСБюджетомПоНДФЛ", Результат[КоличествоРезультатов-2].Выгрузить());
ДанныеДляПроведения.Вставить("НДФЛПоСотрудникам", Результат[КоличествоРезультатов].Выгрузить());
Если ПолучитьФункциональнуюОпцию("РаботаВХозрасчетнойОрганизации") Тогда
СтатьяРасходов = ОтражениеЗарплатыВБухучетеРасширенный.СтатьяОплатаТруда();
ДанныеДляПроведения.НДФЛПоСотрудникам.ЗаполнитьЗначения(СтатьяРасходов, "СтатьяРасходов");
КонецЕсли;
Запрос.Текст = "ВЫБРАТЬ
| Организации.ГоловнаяОрганизация КАК ГоловнаяОрганизация,
| ДанныеДокумента.ПериодРегистрацииДокумента КАК Период,
| ДанныеДокумента.Организация КАК Организация,
| ДанныеДокумента.Сотрудник КАК Сотрудник,
| ДанныеДокумента.ФизическоеЛицо КАК ФизическоеЛицо,
| ДанныеДокумента.Начисление КАК Начисление,
| СУММА(ДанныеДокумента.Сумма) КАК Сумма
|ИЗ
| ВТНачисления КАК ДанныеДокумента
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Организации КАК Организации
| ПО ДанныеДокумента.Организация = Организации.Ссылка
| И (НЕ ДанныеДокумента.ИсключаетсяИзРасчетнойБазыИсполнительныхЛистов)
|
|СГРУППИРОВАТЬ ПО
| Организации.ГоловнаяОрганизация,
| ДанныеДокумента.ПериодРегистрацииДокумента,
| ДанныеДокумента.Организация,
| ДанныеДокумента.Сотрудник,
| ДанныеДокумента.ФизическоеЛицо,
| ДанныеДокумента.Начисление";
РезультатЗапроса = Запрос.Выполнить();
ДанныеДляПроведения.Вставить("ДополнениеРасчетнойБазыУдержаний", РезультатЗапроса.Выгрузить());
КонецЕсли;
Возврат ДанныеДляПроведения;
КонецФункции
Функция РеквизитыДляПроведения(ДокументСсылка)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПризПодарок.Ссылка КАК Ссылка,
| ПризПодарок.Организация КАК Организация,
| ПризПодарок.ПериодРегистрации КАК ПериодРегистрации,
| ПризПодарок.ДатаПолученияДохода КАК ДатаПолученияДохода,
| ПризПодарок.ИсправленныйДокумент КАК ИсправленныйДокумент,
| ПризПодарок.Дата КАК Дата,
| ПризПодарок.СтатьяФинансирования КАК СтатьяФинансирования,
| ПризПодарок.СтатьяРасходов КАК СтатьяРасходов,
| ПризПодарок.СпособОтраженияЗарплатыВБухучете КАК СпособОтраженияЗарплатыВБухучете,
| ПризПодарок.ОтношениеКЕНВД КАК ОтношениеКЕНВД,
| ПризПодарок.ВидДоходаСтраховыеВзносы КАК ВидДоходаСтраховыеВзносы,
| ПризПодарок.КодДоходаНДФЛ КАК КодДоходаНДФЛ,
| ПризПодарок.ИсчисленныйНалогПереданДляУдержанияВНалоговыеОрганы КАК ИсчисленныйНалогПереданДляУдержанияВНалоговыеОрганы,
| ПризПодарок.ВидПризаПодарка = ЗНАЧЕНИЕ(Перечисление.ВидыПризовПодарков.Подарок) КАК НалогРассчитанВТабличнойЧасти
|ИЗ
| Документ.ПризПодарок КАК ПризПодарок
|ГДЕ
| ПризПодарок.Ссылка = &Ссылка";
Запрос.УстановитьПараметр("Ссылка", ДокументСсылка);
Результаты = Запрос.ВыполнитьПакет();
РеквизитыДляПроведения = РеквизитыДляПроведенияПустаяСтруктура();
ВыборкаРеквизиты = Результаты[0].Выбрать();
Пока ВыборкаРеквизиты.Следующий() Цикл
ЗаполнитьЗначенияСвойств(РеквизитыДляПроведения, ВыборкаРеквизиты);
КонецЦикла;
Возврат РеквизитыДляПроведения;
КонецФункции
Функция РеквизитыДляПроведенияПустаяСтруктура()
РеквизитыДляПроведенияПустаяСтруктура = Новый Структура(
"Ссылка,
|Организация,
|ПериодРегистрации,
|ДатаПолученияДохода,
|ИсправленныйДокумент,
|Дата,
|СтатьяФинансирования,
|СтатьяРасходов,
|СпособОтраженияЗарплатыВБухучете,
|ОтношениеКЕНВД,
|ВидДоходаСтраховыеВзносы,
|КодДоходаНДФЛ,
|ИсчисленныйНалогПереданДляУдержанияВНалоговыеОрганы,
|НалогРассчитанВТабличнойЧасти");
Возврат РеквизитыДляПроведенияПустаяСтруктура;
КонецФункции
Процедура ЗаписатьСведенияОДоходахСтраховыеВзносы(Движения, РеквизитыДляПроведения)
ДополнитьСведенияОДоходахСтраховыеВзносы(Движения, РеквизитыДляПроведения);
Движения.СведенияОДоходахСтраховыеВзносы.Записать();
Движения.СведенияОДоходахСтраховыеВзносы.Записывать = Ложь;
КонецПроцедуры
#Область ПервоначальноеЗаполнениеИОбновлениеИнформационнойБазы
Процедура ПроставитьКатегориюДохода(ПараметрыОбновления) Экспорт
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1000
| ПризПодарок.Ссылка КАК Ссылка,
| ПризПодарок.КодДоходаНДФЛ КАК КодДоходаНДФЛ
|ИЗ
| Документ.ПризПодарок КАК ПризПодарок
|ГДЕ
| ПризПодарок.КатегорияДохода = ЗНАЧЕНИЕ(Перечисление.КатегорииДоходовНДФЛ.ПустаяСсылка)
|
|УПОРЯДОЧИТЬ ПО
| ПризПодарок.ПериодРегистрации УБЫВ";
Результат = Запрос.Выполнить();
Если Результат.Пустой() Тогда
ОбновлениеИнформационнойБазыЗарплатаКадрыБазовый.УстановитьПараметрОбновления(ПараметрыОбновления, "ОбработкаЗавершена", Истина);
Иначе
ОбновлениеИнформационнойБазыЗарплатаКадрыБазовый.УстановитьПараметрОбновления(ПараметрыОбновления, "ОбработкаЗавершена", Ложь);
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
Если Не ОбновлениеИнформационнойБазыЗарплатаКадрыБазовый.ПодготовитьОбновлениеДанных(ПараметрыОбновления, "Документ.ПризПодарок", "Ссылка", Выборка.Ссылка) Тогда
Продолжить;
КонецЕсли;
ДокументОбъект = Выборка.Ссылка.ПолучитьОбъект();
ДокументОбъект.КатегорияДохода = УчетНДФЛПовтИсп.КатегорияДоходаПоЕгоКоду(Выборка.КодДоходаНДФЛ);
ДокументОбъект.ОбменДанными.Загрузка = Истина;
ДокументОбъект.Записать();
ОбновлениеИнформационнойБазыЗарплатаКадрыБазовый.ЗавершитьОбновлениеДанных(ПараметрыОбновления);
КонецЦикла;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
Функция УстановитьКодДохода(ВидПризаПодарка) Экспорт
Если ВидПризаПодарка = Перечисления.ВидыПризовПодарков.Подарок Тогда
КодДоходаНДФЛ = Справочники.ВидыДоходовНДФЛ.Код2720;
Иначе
КодДоходаНДФЛ = Справочники.ВидыДоходовНДФЛ.Код2740;
КонецЕсли;
Возврат КодДоходаНДФЛ;
КонецФункции
Процедура УстановитьКатегориюДоходаНДФЛ(ТаблицаНДФЛ, КатегорияДохода) Экспорт
Для Каждого ДанныеСотрудника Из ТаблицаНДФЛ Цикл
ДанныеСотрудника.КатегорияДохода = КатегорияДохода;
КонецЦикла;
КонецПроцедуры
Процедура УстановитьКодВычетаСотрудников(ТаблицаНачисления, КодВычетаНДФЛ) Экспорт
Для Каждого ДанныеСотрудника Из ТаблицаНачисления Цикл
ДанныеСотрудника.КодВычета = КодВычетаНДФЛ;
КонецЦикла;
КонецПроцедуры
Функция УстановитьВидДоходаСтраховыхВзносов(ПредусмотреноКолдоговором) Экспорт
ВидДоходаСтраховыеВзносы = Справочники.ВидыДоходовПоСтраховымВзносам.ПустаяСсылка();
Если ПредусмотреноКолдоговором Тогда
ВидДоходаСтраховыеВзносы = Справочники.ВидыДоходовПоСтраховымВзносам.ОблагаетсяЦеликом;
Иначе
ВидДоходаСтраховыеВзносы = Справочники.ВидыДоходовПоСтраховымВзносам.НеЯвляетсяОбъектом;
КонецЕсли;
Возврат ВидДоходаСтраховыеВзносы;
КонецФункции
Функция ОписаниеДокумента() Экспорт
Описание = РасчетЗарплатыРасширенныйКлиентСервер.ОписаниеРасчетногоДокумента();
Описание.МесяцНачисленияИмя = "ПериодРегистрации";
Описание.ИменаПолейНачисления = "ВидПризаПодарка";
Описание.ВидНачисленияВШапке = Истина;
Описание.ВидНачисленияИмя = "ВидПризаПодарка";
Описание.ПериодДействияВШапке = Истина;
Описание.ПланируемаяДатаВыплатыИмя = "ДатаПолученияДохода";
Описание.ПорядокВыплатыИмя = Неопределено;
Описание.НачисленияИмя = "Начисления";
Описание.НачисленияКоманднаяПанельИмя = "КомандыНачисления";
Описание.НДФЛИмя = "НДФЛ";
Описание.ПримененныеВычетыИмя = "ПримененныеВычетыНаДетейИИмущественные";
Описание.УстанавливатьФиксРасчет = Ложь;
Описание.ОбязательныеПоля.Добавить(РасчетЗарплатыРасширенныйКлиентСервер.ОписаниеОбязательногоПоляДокумента("Месяц", "МесяцНачисленияСтрокой"));
Описание.ОбязательныеПоля.Добавить(РасчетЗарплатыРасширенныйКлиентСервер.ОписаниеОбязательногоПоляДокумента("Дата получения дохода", "Объект.ДатаПолученияДохода"));
Возврат Описание;
КонецФункции
Функция ОписаниеТаблицыНачислений() Экспорт
ОписаниеТаблицы = РасчетЗарплатыРасширенныйКлиентСервер.ОписаниеТаблицыРасчета();
ОписаниеТаблицы.СодержитПолеСотрудник = Истина;
ОписаниеТаблицы.ИмяРеквизитаСотрудник = "Сотрудник";
ОписаниеТаблицы.ИмяРеквизитаВидРасчета = "ВидПризаПодарка";
ОписаниеТаблицы.СодержитПолеВидРасчета = Ложь;
ОписаниеТаблицы.ИмяРеквизитаДатаНачала = Неопределено;
ОписаниеТаблицы.ИмяРеквизитаДатаОкончания = Неопределено;
ОписаниеТаблицы.ИмяРеквизитаПериод = "ДатаПолученияДохода";
ОписаниеТаблицы.СодержитПолеКодВычета = Истина;
ОписаниеТаблицы.ИмяРеквизитаИдентификаторСтроки = "ИдентификаторСтроки";
ОписаниеТаблицы.ОтменятьВсеИсправления = Истина;
Возврат ОписаниеТаблицы;
КонецФункции
Функция ОписаниеТаблицыПерерасчетов() Экспорт
ОписаниеТаблицы = РасчетЗарплатыРасширенныйКлиентСервер.ОписаниеТаблицыРасчета();
ОписаниеТаблицы.ЭтоПерерасчеты = Истина;
ОписаниеТаблицы.СодержитПолеСотрудник = Истина;
ОписаниеТаблицы.ИмяРеквизитаСотрудник = "Сотрудник";
ОписаниеТаблицы.ИмяРеквизитаВидРасчета = "ВидПризаПодарка";
ОписаниеТаблицы.СодержитПолеВидРасчета = Ложь;
ОписаниеТаблицы.ИмяРеквизитаДатаНачала = Неопределено;
ОписаниеТаблицы.ИмяРеквизитаДатаОкончания = Неопределено;
ОписаниеТаблицы.ИмяРеквизитаПериод = "ДатаПолученияДохода";
ОписаниеТаблицы.СодержитПолеКодВычета = Истина;
ОписаниеТаблицы.СодержитПолеМестоПолученияДохода = Истина;
ОписаниеТаблицы.СодержитРегистраторРазовогоНачисления = Истина;
ОписаниеТаблицы.ОтменятьВсеИсправления = Истина;
Возврат ОписаниеТаблицы;
КонецФункции
Функция НовыйИдентификаторСтроки(НомерТаблицы) Экспорт
Возврат НомерТаблицы * 1000000 + 1;
КонецФункции
#Область СозданиеНовогоДокумента
Функция ДанныеНовогоДокумента() Экспорт
ДанныеДокумента = Новый Структура();
ДанныеДокумента.Вставить("ПериодРегистрации", НачалоМесяца(ТекущаяДатаСеанса()));
ДанныеДокумента.Вставить("Дата", ТекущаяДатаСеанса());
ДанныеДокумента.Вставить("ДатаПолученияДохода", ТекущаяДатаСеанса());
ДанныеДокумента.Вставить("Организация", Справочники.Организации.ПустаяСсылка());
ДанныеДокумента.Вставить("ВидПризаПодарка", Перечисления.ВидыПризовПодарков.Подарок);
ДанныеДокумента.Вставить("ПредусмотреноКолдоговором", Ложь);
ДанныеДокумента.Вставить("ДанныеСотрудников", Неопределено);
ДанныеДокумента.Вставить("СтатьяФинансирования", Справочники.СтатьиФинансированияЗарплата.ПустаяСсылка());
ДанныеДокумента.Вставить("СтатьяРасходов", Справочники.СтатьиРасходовЗарплата.ПустаяСсылка());
ДанныеДокумента.Вставить("СпособОтраженияЗарплатыВБухучете", Справочники.СпособыОтраженияЗарплатыВБухУчете.ПустаяСсылка());
ДанныеДокумента.Вставить("Комментарий", "");
ДанныеДокумента.Вставить("МотивПоощрения", "");
ДанныеДокумента.Вставить("Действие", "Заполнить");
Начисления = Новый ТаблицаЗначений();
Начисления.Колонки.Добавить("Сотрудник", Новый ОписаниеТипов("СправочникСсылка.Сотрудники"));
Начисления.Колонки.Добавить("Подразделение", Новый ОписаниеТипов("СправочникСсылка.ПодразделенияОрганизаций"));
Начисления.Колонки.Добавить("Результат", Новый ОписаниеТипов("Число"));
ДанныеДокумента.Вставить("Начисления", Начисления);
Возврат ДанныеДокумента;
КонецФункции
#КонецОбласти
#КонецОбласти
#КонецЕсли