#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
#Область ОбработчикиСобытий
Процедура ПередЗаписью(Отказ, РежимЗаписи, РежимПроведения)
Если ЗарплатаКадры.ОтключитьБизнесЛогикуПриЗаписи(ЭтотОбъект) Тогда
Возврат;
КонецЕсли;
ОтражениеЗарплатыВБухучетеРасширенный.ОбновитьДанныеБухучетаДокументаПередЗаписью(ЭтотОбъект);
КонецПроцедуры
Процедура ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка)
ОбъектОснование = ДанныеЗаполнения;
Если ТипЗнч(ОбъектОснование) = Тип("СправочникСсылка.Сотрудники") Тогда
ЗарплатаКадры.ЗаполнитьПоОснованиюСотрудником(ЭтотОбъект, ОбъектОснование, , Истина);
ДоговорГПХ = СотрудникиФормыРасширенный.ДоговорГПХНеЗакрытыйАктом(ОбъектОснование);
Если ЗначениеЗаполнено(ДоговорГПХ) Тогда
ОбъектОснование = ДоговорГПХ;
КонецЕсли;
КонецЕсли;
ЭтоДоговорРаботыУслуги = ТипЗнч(ОбъектОснование) = Тип("ДокументСсылка.ДоговорРаботыУслуги");
Если ТипЗнч(ОбъектОснование) = Тип("ДокументСсылка.ДоговорАвторскогоЗаказа") Или ЭтоДоговорРаботыУслуги Тогда
СвойстваЗаполнения = "Организация, Сотрудник, СтатьяФинансирования, СтатьяРасходов, ОтношениеКЕНВД,
|Подразделение, Территория, СпособОтраженияЗарплатыВБухучете,СпособРасчетовСФизическимиЛицами, СуммаВычета, СуммаЕНВД";
Если ЭтоДоговорРаботыУслуги Тогда
СвойстваЗаполнения = СвойстваЗаполнения + ",
|СпособОтраженияЗарплатыВФинансовомУчете, МестоВСтруктуреПредприятия";
КонецЕсли;
ИменаРеквизитов = "Ссылка, Сумма, Проведен, СпособОплаты, " + СвойстваЗаполнения;
РеквизитыОснования = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(ОбъектОснование, ИменаРеквизитов);
Если РеквизитыОснования.Проведен <> Истина Тогда
ВызватьИсключение НСтр("ru = 'Ввод на основании непроведенного документа невозможен.'");
КонецЕсли;
Если Не РеквизитыОснования.СпособОплаты = Перечисления.СпособыОплатыПоДоговоруГПХ.ПоАктамВыполненныхРабот Тогда
ВызватьИсключение НСтр("ru = 'По этому договору не предусмотрена оплата на основании акта выполненных работ.'");
КонецЕсли;
ЗаполнитьЗначенияСвойств(ЭтотОбъект, РеквизитыОснования, СвойстваЗаполнения);
Договор = ОбъектОснование;
Результат = РеквизитыОснования.Сумма;
ИначеЕсли ТипЗнч(ДанныеЗаполнения) = Тип("Структура") Тогда
Если ДанныеЗаполнения.Свойство("Действие") Тогда
Если ДанныеЗаполнения.Действие = "Заполнить" Тогда
ЗаполнитьПоДаннымЗаполнения(ДанныеЗаполнения);
ИначеЕсли ДанныеЗаполнения.Действие = "Исправить" Тогда
ИсправлениеДокументовЗарплатаКадры.СкопироватьДокумент(ЭтотОбъект, ДанныеЗаполнения.Ссылка);
ИсправленныйДокумент = ДанныеЗаполнения.Ссылка;
КонецЕсли;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
ПроведениеСервер.ПодготовитьНаборыЗаписейКРегистрацииДвижений(ЭтотОбъект);
ДанныеДляПроведения = ДанныеДляПроведения();
РеквизитыДляПроведения = Документы.АктПриемкиВыполненныхРаботОказанныхУслуг.РеквизитыДляПроведения(ЭтотОбъект);
ИсправлениеДокументовЗарплатаКадры.ПриПроведенииИсправления(ЭтотОбъект.Ссылка, ЭтотОбъект.Движения, РежимПроведения, Отказ, РеквизитыДляПроведения ,, ЭтотОбъект, "МесяцНачисления");
ЕстьФинансовыйУчет = ОбщегоНазначения.ПодсистемаСуществует("ЗарплатаКадрыКорпоративнаяПодсистемы.ФинансовыйУчет");
Если ЕстьФинансовыйУчет Тогда
МодульФинансовыйУчет = ОбщегоНазначения.ОбщийМодуль("ФинансовыйУчет");
КонецЕсли;
Для Каждого Строка Из ДанныеДляПроведения.ДанныеДоговора Цикл
Если Не Строка.ОплатаПоАктам Тогда
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'В документе %1 должен быть указан вариант оплаты ""по актам выполненных работ"".'"), Строка.Договор);
ВызватьИсключение ТекстОшибки;
ИначеЕсли Не Строка.ДоговорПроведен Тогда
ТекстОшибки = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = 'Документ %1 еще не проведен, акт выполненных работ можно вводить только на основании проведенного документа.'"), Строка.Договор);
ВызватьИсключение ТекстОшибки;
КонецЕсли;
НоваяСтрока = Движения.ПлановыеНачисленияПоДоговорам.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, Строка);
Если ЕстьФинансовыйУчет Тогда
МодульФинансовыйУчет.СформироватьДвиженияДокументовГПХ(Движения, Строка, НоваяСтрока.Период);
КонецЕсли;
КонецЦикла;
ОтражениеЗарплатыВБухучете.СформироватьДвиженияБухучетДоговоровГПХ(Движения, ДанныеДляПроведения.НастройкиБухучета);
Движения.ПлановыеНачисленияПоДоговорам.Записывать = Истина;
КонецПроцедуры
Процедура ОбработкаПроверкиЗаполнения(Отказ, ПроверяемыеРеквизиты)
ЗарплатаКадры.ПроверитьДатуВыплаты(ЭтотОбъект, Отказ);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
Функция ДанныеДляПроведения()
ДанныеДляПроведения = Новый Структура;
НДФЛДоговорыРаботыУслуги = УчетНДФЛ.ДоходыНДФЛПоВидуОсобыхНачислений(Перечисления.ВидыОсобыхНачисленийИУдержаний.ДоговорРаботыУслуги);
КодДохода = НДФЛДоговорыРаботыУслуги[0];
ВычетыКДоходам = УчетНДФЛ.ВычетыКДоходам(Год(МесяцНачисления));
КодыВычетов = ВычетыКДоходам[КодДохода];
КодВычета = КодыВычетов[0];
Если КодыВычетов.Количество() > 1 Тогда
КодВычетаДополнительный = КодыВычетов[1];
Иначе
КодВычетаДополнительный = Справочники.ВидыВычетовНДФЛ.ПустаяСсылка();
КонецЕсли;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Запрос.УстановитьПараметр("КодГПХдляСтраховыхВзносов", УчетСтраховыхВзносов.ВидДоходаДляДоговораНаВыполнениеРабот(Ложь));
Запрос.УстановитьПараметр("КодГПХдляСтраховыхВзносовОблагаетсяФСС_НС", УчетСтраховыхВзносов.ВидДоходаДляДоговораНаВыполнениеРабот(Истина));
Запрос.УстановитьПараметр("КодДохода", КодДохода);
Запрос.УстановитьПараметр("КодВычета", КодВычета);
Запрос.УстановитьПараметр("КодВычетаДополнительный", КодВычетаДополнительный);
Запрос.Текст =
"ВЫБРАТЬ
| АктВыполненныхРабот.Организация КАК Организация,
| АктВыполненныхРабот.МесяцНачисления КАК МесяцНачисления,
| АктВыполненныхРабот.Сотрудник КАК Сотрудник,
| АктВыполненныхРабот.Договор КАК Договор,
| ВЫБОР
| КОГДА ДоговорРаботыУслуги.Номер ЕСТЬ НЕ NULL
| ТОГДА &КодДохода
| КОГДА ДоговорАвторскогоЗаказа.Номер ЕСТЬ НЕ NULL
| ТОГДА ДоговорАвторскогоЗаказа.ВидАвторскогоДоговора.КодДоходаНДФЛ
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ВидыДоходовНДФЛ.ПустаяСсылка)
| КОНЕЦ КАК КодДохода,
| ВЫБОР
| КОГДА ДоговорРаботыУслуги.Номер ЕСТЬ НЕ NULL
| ТОГДА ВЫБОР
| КОГДА ДоговорРаботыУслуги.ОблагаетсяФСС_НС
| ТОГДА &КодГПХдляСтраховыхВзносовОблагаетсяФСС_НС
| ИНАЧЕ &КодГПХдляСтраховыхВзносов
| КОНЕЦ
| КОГДА ДоговорАвторскогоЗаказа.Номер ЕСТЬ НЕ NULL
| ТОГДА ДоговорАвторскогоЗаказа.ВидАвторскогоДоговора.КодДоходаСтраховыеВзносы
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ВидыДоходовПоСтраховымВзносам.ПустаяСсылка)
| КОНЕЦ КАК КодДоходаСтраховыеВзносы,
| ВЫБОР
| КОГДА ДоговорРаботыУслуги.Номер ЕСТЬ НЕ NULL
| ТОГДА &КодВычета
| КОГДА ДоговорАвторскогоЗаказа.Номер ЕСТЬ НЕ NULL
| ТОГДА ДоговорАвторскогоЗаказа.КодВычета
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ВидыДоходовНДФЛ.ПустаяСсылка)
| КОНЕЦ КАК КодВычета,
| ВЫБОР
| КОГДА ДоговорРаботыУслуги.Номер ЕСТЬ НЕ NULL
| ТОГДА &КодВычетаДополнительный
| ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ВидыДоходовНДФЛ.ПустаяСсылка)
| КОНЕЦ КАК КодВычетаДополнительный,
| АктВыполненныхРабот.Подразделение КАК Подразделение,
| АктВыполненныхРабот.Территория КАК Территория,
| АктВыполненныхРабот.СпособОтраженияЗарплатыВФинансовомУчете КАК СпособОтраженияЗарплатыВФинансовомУчете,
| АктВыполненныхРабот.МестоВСтруктуреПредприятия КАК МестоВСтруктуреПредприятия,
| АктВыполненныхРабот.Договор.ДатаНачала КАК ДатаНачала,
| ВЫБОР
| КОГДА АктВыполненныхРабот.Договор.ДатаОкончания = ДАТАВРЕМЯ(1, 1, 1)
| ИЛИ АктВыполненныхРабот.Договор.ДатаОкончания > КОНЕЦПЕРИОДА(АктВыполненныхРабот.МесяцНачисления, МЕСЯЦ)
| ТОГДА КОНЕЦПЕРИОДА(АктВыполненныхРабот.МесяцНачисления, МЕСЯЦ)
| ИНАЧЕ АктВыполненныхРабот.Договор.ДатаОкончания
| КОНЕЦ КАК ДатаОкончания,
| ЕСТЬNULL(АктВыполненныхРабот.Договор.ЗаключенСоСтудентомРаботающимВСтудотряде, ЛОЖЬ) КАК ЗаключенСоСтудентомРаботающимВСтудотряде,
| АктВыполненныхРабот.Результат КАК Сумма,
| АктВыполненныхРабот.СуммаВычета КАК СуммаВычета,
| АктВыполненныхРабот.СуммаВычетаДополнительная КАК СуммаВычетаДополнительная,
| ВЫБОР
| КОГДА ДоговорАвторскогоЗаказа.СтавкаНДФЛ ЕСТЬ NULL
| ТОГДА ЗНАЧЕНИЕ(Перечисление.КатегорииДоходовНДФЛ.ПустаяСсылка)
| КОГДА ДоговорАвторскогоЗаказа.СтавкаНДФЛ = ЗНАЧЕНИЕ(Перечисление.НДФЛСтавки.Ставка03)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.КатегорииДоходовНДФЛ.АвторскиеРоялтиПоСтавке03)
| КОГДА ДоговорАвторскогоЗаказа.СтавкаНДФЛ = ЗНАЧЕНИЕ(Перечисление.НДФЛСтавки.Ставка05)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.КатегорииДоходовНДФЛ.АвторскиеРоялтиПроцентыПоСтавке05)
| КОГДА ДоговорАвторскогоЗаказа.СтавкаНДФЛ = ЗНАЧЕНИЕ(Перечисление.НДФЛСтавки.Ставка06)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.КатегорииДоходовНДФЛ.АвторскиеРоялтиПоСтавке06)
| КОГДА ДоговорАвторскогоЗаказа.СтавкаНДФЛ = ЗНАЧЕНИЕ(Перечисление.НДФЛСтавки.Ставка07)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.КатегорииДоходовНДФЛ.АвторскиеРоялтиПроцентыПоСтавке07)
| КОГДА ДоговорАвторскогоЗаказа.СтавкаНДФЛ = ЗНАЧЕНИЕ(Перечисление.НДФЛСтавки.Ставка10)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.КатегорииДоходовНДФЛ.АвторскиеРоялтиПроцентыПоСтавке10)
| КОГДА ДоговорАвторскогоЗаказа.СтавкаНДФЛ = ЗНАЧЕНИЕ(Перечисление.НДФЛСтавки.Ставка15)
| ТОГДА ЗНАЧЕНИЕ(Перечисление.КатегорииДоходовНДФЛ.АвторскиеРоялтиПроцентыПоСтавке15)
| ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.КатегорииДоходовНДФЛ.ПустаяСсылка)
| КОНЕЦ КАК КатегорияДохода,
| АктВыполненныхРабот.Ссылка КАК ДоговорАкт,
| АктВыполненныхРабот.Договор.Проведен КАК ДоговорПроведен,
| ВЫБОР
| КОГДА АктВыполненныхРабот.Договор.СпособОплаты = ЗНАЧЕНИЕ(Перечисление.СпособыОплатыПоДоговоруГПХ.ПоАктамВыполненныхРабот)
| ТОГДА ИСТИНА
| ИНАЧЕ ЛОЖЬ
| КОНЕЦ КАК ОплатаПоАктам,
| АктВыполненныхРабот.ПланируемаяДатаВыплаты КАК ПланируемаяДатаВыплаты,
| АктВыполненныхРабот.ФизическоеЛицо КАК ФизическоеЛицо
|ИЗ
| Документ.АктПриемкиВыполненныхРаботОказанныхУслуг КАК АктВыполненныхРабот
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ДоговорРаботыУслуги КАК ДоговорРаботыУслуги
| ПО АктВыполненныхРабот.Договор = ДоговорРаботыУслуги.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ДоговорАвторскогоЗаказа КАК ДоговорАвторскогоЗаказа
| ПО АктВыполненныхРабот.Договор = ДоговорАвторскогоЗаказа.Ссылка
|ГДЕ
| АктВыполненныхРабот.Ссылка = &Ссылка";
ДанныеДляПроведения.Вставить("ДанныеДоговора", Запрос.Выполнить().Выгрузить());
РаботаВХозрасчетнойОрганизации = ПолучитьФункциональнуюОпцию("РаботаВХозрасчетнойОрганизации");
СтатьяРасходовДоговора = Справочники.СтатьиРасходовЗарплата.ПустаяСсылка();
Если РаботаВХозрасчетнойОрганизации Тогда
ОписаниеСтатейРасходов = ЗарплатаКадры.СтатьиРасходовПоСпособамРасчетовСФизическимиЛицами();
СтатьяРасходовДоговора = ОписаниеСтатейРасходов[Перечисления.СпособыРасчетовСФизическимиЛицами.ОплатаТруда];
РасчетыСКонтрагентами = ОписаниеСтатейРасходов[Перечисления.СпособыРасчетовСФизическимиЛицами.РасчетыСКонтрагентами];
Запрос.Текст =
"ВЫБРАТЬ
| ВЫБОР
| КОГДА ДоговорРаботыУслуги.Номер ЕСТЬ НЕ NULL
| ТОГДА ДоговорРаботыУслуги.СпособРасчетовСФизическимиЛицами
| КОГДА ДоговорАвторскогоЗаказа.Номер ЕСТЬ НЕ NULL
| ТОГДА ДоговорАвторскогоЗаказа.СпособРасчетовСФизическимиЛицами
| ИНАЧЕ ЗНАЧЕНИЕ(Перечисление.СпособыРасчетовСФизическимиЛицами.ПустаяСсылка)
| КОНЕЦ КАК СпособРасчетов
|ИЗ
| Документ.АктПриемкиВыполненныхРаботОказанныхУслуг КАК Акт
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ДоговорРаботыУслуги КАК ДоговорРаботыУслуги
| ПО Акт.Договор = ДоговорРаботыУслуги.Ссылка
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ДоговорАвторскогоЗаказа КАК ДоговорАвторскогоЗаказа
| ПО Акт.Договор = ДоговорАвторскогоЗаказа.Ссылка
|ГДЕ
| Акт.Ссылка = &Ссылка";
СпособыРасчетов = Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("СпособРасчетов");
Если ЗначениеЗаполнено(СпособыРасчетов) И ЗначениеЗаполнено(СпособыРасчетов[0]) Тогда
Если СпособыРасчетов[0] = Перечисления.СпособыРасчетовСФизическимиЛицами.РасчетыСКонтрагентами Тогда
СтатьяРасходовДоговора = РасчетыСКонтрагентами;
КонецЕсли;
КонецЕсли;
КонецЕсли;
НовыеНастройкиБухучета = ОтражениеЗарплатыВБухучете.НоваяТаблицаНастройкиБухучетаДоговоровГПХ();
Если БухучетУказываетсяРаспределением Тогда
Для каждого СтрокаТЧ Из НастройкиБухучета Цикл
НоваяСтрока = НовыеНастройкиБухучета.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, СтрокаТЧ);
НоваяСтрока.ДоговорАкт = Ссылка;
НоваяСтрока.ИдентификаторСтроки = СтрокаТЧ.НомерСтроки;
Если РаботаВХозрасчетнойОрганизации Тогда
НоваяСтрока.СтатьяРасходов = СтатьяРасходовДоговора;
Иначе
НоваяСтрока.СтатьяРасходов = СтрокаТЧ.СтатьяРасходов;
КонецЕсли;
КонецЦикла;
Иначе
ИдентификаторСтроки = 0;
Если СуммаЕНВД > 0 Тогда
НоваяСтрока = НовыеНастройкиБухучета.Добавить();
НоваяСтрока.ДоговорАкт = Ссылка;
НоваяСтрока.ИдентификаторСтроки = ИдентификаторСтроки;
НоваяСтрока.ПодразделениеУчетаЗатрат = Подразделение;
НоваяСтрока.СтатьяФинансирования = СтатьяФинансирования;
НоваяСтрока.ОблагаетсяЕНВД = Истина;
НоваяСтрока.ДоляРаспределения = СуммаЕНВД;
НоваяСтрока.СпособОтраженияЗарплатыВБухучете = СпособОтраженияЗарплатыВБухучете;
Если РаботаВХозрасчетнойОрганизации Тогда
НоваяСтрока.СтатьяРасходов = СтатьяРасходовДоговора;
Иначе
НоваяСтрока.СтатьяРасходов = СтатьяРасходов;
КонецЕсли;
ИдентификаторСтроки = ИдентификаторСтроки + 1;
КонецЕсли;
Если Результат > СуммаЕНВД Тогда
НоваяСтрока = НовыеНастройкиБухучета.Добавить();
НоваяСтрока.ДоговорАкт = Ссылка;
НоваяСтрока.ИдентификаторСтроки = ИдентификаторСтроки;
НоваяСтрока.ПодразделениеУчетаЗатрат = Подразделение;
НоваяСтрока.СтатьяФинансирования = СтатьяФинансирования;
НоваяСтрока.ОблагаетсяЕНВД = Ложь;
НоваяСтрока.СпособОтраженияЗарплатыВБухучете = СпособОтраженияЗарплатыВБухучете;
Если РаботаВХозрасчетнойОрганизации Тогда
НоваяСтрока.СтатьяРасходов = СтатьяРасходовДоговора;
Иначе
НоваяСтрока.СтатьяРасходов = СтатьяРасходов;
КонецЕсли;
Если СуммаЕНВД > 0 Тогда
НоваяСтрока.ДоляРаспределения = Результат - СуммаЕНВД;
Иначе
НоваяСтрока.ДоляРаспределения = 1;
КонецЕсли;
КонецЕсли;
КонецЕсли;
ДанныеДляПроведения.Вставить("НастройкиБухучета", НовыеНастройкиБухучета);
Возврат ДанныеДляПроведения;
КонецФункции
Процедура ЗаполнитьПоДаннымЗаполнения(ДанныеЗаполнения) Экспорт
ЗаполнитьИсходныеДанныеДокумента(ДанныеЗаполнения);
ЗапрашиваемыеЗначения = Новый Структура;
ФиксированныеЗначения = Новый Массив;
Если ЗначениеЗаполнено(ЭтотОбъект.Организация) Тогда
ЗапрашиваемыеЗначения.Вставить("Организация", "Организация");
Если НЕ ЗначениеЗаполнено(ЭтотОбъект.Руководитель) Тогда
ЗапрашиваемыеЗначения.Вставить("Руководитель", "Руководитель");
КонецЕсли;
Если НЕ ЗначениеЗаполнено(ЭтотОбъект.ДолжностьРуководителя) Тогда
ЗапрашиваемыеЗначения.Вставить("ДолжностьРуководителя", "ДолжностьРуководителя");
КонецЕсли;
ФиксированныеЗначения.Добавить("Организация");
КонецЕсли;
ЗарплатаКадры.ЗаполнитьЗначенияВФорме(ЭтотОбъект, ЗапрашиваемыеЗначения, ФиксированныеЗначения);
КонецПроцедуры
Процедура ЗаполнитьИсходныеДанныеДокумента(ДанныеЗаполнения)
Если Не ЗначениеЗаполнено(ЭтотОбъект.МесяцНачисления) Тогда
ДанныеЗаполнения.Свойство("МесяцНачисления", ЭтотОбъект.МесяцНачисления);
КонецЕсли;
Если Не ЗначениеЗаполнено(ЭтотОбъект.Дата) Тогда
ДанныеЗаполнения.Свойство("Дата", ЭтотОбъект.Дата);
КонецЕсли;
Если Не ЗначениеЗаполнено(ЭтотОбъект.Организация) Тогда
ДанныеЗаполнения.Свойство("Организация", ЭтотОбъект.Организация);
КонецЕсли;
Если Не ЗначениеЗаполнено(ЭтотОбъект.Сотрудник) Тогда
ДанныеЗаполнения.Свойство("Сотрудник", ЭтотОбъект.Сотрудник);
КонецЕсли;
Если Не ЗначениеЗаполнено(ЭтотОбъект.ФизическоеЛицо) Тогда
ДанныеЗаполнения.Свойство("ФизическоеЛицо", ЭтотОбъект.ФизическоеЛицо);
КонецЕсли;
Если Не ЗначениеЗаполнено(ЭтотОбъект.Договор) Тогда
ДанныеЗаполнения.Свойство("Договор", ЭтотОбъект.Договор);
КонецЕсли;
Если Не ЗначениеЗаполнено(ЭтотОбъект.Подразделение) Тогда
ДанныеЗаполнения.Свойство("Подразделение", ЭтотОбъект.Подразделение);
КонецЕсли;
Если Не ЗначениеЗаполнено(ЭтотОбъект.СпособОтраженияЗарплатыВБухучете) Тогда
ДанныеЗаполнения.Свойство("СпособОтраженияЗарплатыВБухучете", ЭтотОбъект.СпособОтраженияЗарплатыВБухучете);
КонецЕсли;
Если Не ЗначениеЗаполнено(ЭтотОбъект.СтатьяФинансирования) Тогда
ДанныеЗаполнения.Свойство("СтатьяФинансирования", ЭтотОбъект.СтатьяФинансирования);
КонецЕсли;
Если Не ЗначениеЗаполнено(ЭтотОбъект.СтатьяРасходов) Тогда
ДанныеЗаполнения.Свойство("СтатьяРасходов", ЭтотОбъект.СтатьяРасходов);
КонецЕсли;
Если Не ЗначениеЗаполнено(ЭтотОбъект.ПланируемаяДатаВыплаты) Тогда
ДанныеЗаполнения.Свойство("ПланируемаяДатаВыплаты", ЭтотОбъект.ПланируемаяДатаВыплаты);
КонецЕсли;
Если Не ЗначениеЗаполнено(ЭтотОбъект.Результат) Тогда
ДанныеЗаполнения.Свойство("Результат", ЭтотОбъект.Результат);
КонецЕсли;
Если Не ЗначениеЗаполнено(ЭтотОбъект.Ответственный) Тогда
ДанныеЗаполнения.Свойство("Ответственный", ЭтотОбъект.Ответственный);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ЗаполнениеИРасчет
Функция ПараметрыРасчета() Экспорт
ПараметрыРасчета = Новый Структура();
ПараметрыРасчета.Вставить("Сотрудник", Неопределено);
ПараметрыРасчета.Вставить("ТолькоОбновитьНДФЛ", Ложь);
ПараметрыРасчета.Вставить("ВычетПоНормативу", Ложь);
Возврат ПараметрыРасчета;
КонецФункции
Процедура Рассчитать(ПараметрыРасчета = Неопределено) Экспорт
Если ПараметрыРасчета = Неопределено Тогда
ПараметрыРасчета = ПараметрыРасчета();
КонецЕсли;
Если Не ЗначениеЗаполнено(ЭтотОбъект.Сотрудник) Тогда
ЭтотОбъект.Сотрудник = ПараметрыРасчета.Сотрудник;
КонецЕсли;
ОбработатьИзменениеСотрудника();
РеквизитыДоговора = РеквизитыДоговора(ПараметрыРасчета.ВычетПоНормативу)
КонецПроцедуры
Функция РеквизитыДоговора(ВычетПоНормативу = Неопределено) Экспорт
НДФЛДоговорыРаботыУслуги = УчетНДФЛ.ДоходыНДФЛПоВидуОсобыхНачислений(Перечисления.ВидыОсобыхНачисленийИУдержаний.ДоговорРаботыУслуги);
КодДохода = НДФЛДоговорыРаботыУслуги[0];
ВычетыКДоходам = УчетНДФЛ.ВычетыКДоходам(Год(ЭтотОбъект.МесяцНачисления));
КодыВычетов = ВычетыКДоходам[КодДохода];
КодВычета = КодыВычетов[0];
Если КодыВычетов.Количество() > 1 Тогда
КодВычетаДополнительный = КодыВычетов[1];
Иначе
КодВычетаДополнительный = Справочники.ВидыВычетовНДФЛ.ПустаяСсылка();
КонецЕсли;
Запрос = Новый Запрос;
Запрос.УстановитьПараметр("Ссылка", ЭтотОбъект.Договор);
Запрос.УстановитьПараметр("КодГПХдляСтраховыхВзносов", УчетСтраховыхВзносов.ВидДоходаДляДоговораНаВыполнениеРабот(Ложь));
Запрос.УстановитьПараметр("КодГПХдляСтраховыхВзносовОблагаетсяФСС_НС", УчетСтраховыхВзносов.ВидДоходаДляДоговораНаВыполнениеРабот(Истина));
Запрос.УстановитьПараметр("КодДоходаНДФЛ", КодДохода);
Запрос.УстановитьПараметр("КодВычета", КодВычета);
Запрос.УстановитьПараметр("КодВычетаДополнительный", КодВычетаДополнительный);
Запрос.Текст =
"ВЫБРАТЬ
| ДоговорАвторскогоЗаказа.ДатаНачала КАК ДатаНачала,
| ДоговорАвторскогоЗаказа.ДатаОкончания КАК ДатаОкончания,
| ДоговорАвторскогоЗаказа.Подразделение КАК Подразделение,
| ДоговорАвторскогоЗаказа.Территория КАК Территория,
| ДоговорАвторскогоЗаказа.СпособОтраженияЗарплатыВБухучете КАК СпособОтраженияЗарплатыВБухучете,
| ДоговорАвторскогоЗаказа.ОтношениеКЕНВД КАК ОтношениеКЕНВД,
| ДоговорАвторскогоЗаказа.ВидАвторскогоДоговора.КодДоходаНДФЛ КАК КодДохода,
| ДоговорАвторскогоЗаказа.ВидАвторскогоДоговора.КодДоходаСтраховыеВзносы КАК КодДоходаСтраховыеВзносы,
| ДоговорАвторскогоЗаказа.КодВычета КАК КодВычета,
| ЗНАЧЕНИЕ(Справочник.ВидыВычетовНДФЛ.ПустаяСсылка) КАК КодВычетаДополнительный,
| ДоговорАвторскогоЗаказа.СтатьяФинансирования КАК СтатьяФинансирования,
| ДоговорАвторскогоЗаказа.СтатьяРасходов КАК СтатьяРасходов,
| ДоговорАвторскогоЗаказа.Сумма КАК Результат,
| ДоговорАвторскогоЗаказа.СпособРасчетовСФизическимиЛицами КАК СпособРасчетовСФизическимиЛицами
|ИЗ
| Документ.ДоговорАвторскогоЗаказа КАК ДоговорАвторскогоЗаказа
|ГДЕ
| ДоговорАвторскогоЗаказа.Ссылка = &Ссылка
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ДоговорРаботыУслуги.ДатаНачала,
| ДоговорРаботыУслуги.ДатаОкончания,
| ДоговорРаботыУслуги.Подразделение,
| ДоговорРаботыУслуги.Территория,
| ДоговорРаботыУслуги.СпособОтраженияЗарплатыВБухучете,
| ДоговорРаботыУслуги.ОтношениеКЕНВД,
| &КодДоходаНДФЛ,
| ВЫБОР
| КОГДА ДоговорРаботыУслуги.ОблагаетсяФСС_НС
| ТОГДА &КодГПХдляСтраховыхВзносовОблагаетсяФСС_НС
| ИНАЧЕ &КодГПХдляСтраховыхВзносов
| КОНЕЦ,
| &КодВычета,
| &КодВычетаДополнительный,
| ДоговорРаботыУслуги.СтатьяФинансирования,
| ДоговорРаботыУслуги.СтатьяРасходов,
| ДоговорРаботыУслуги.Сумма,
| ДоговорРаботыУслуги.СпособРасчетовСФизическимиЛицами
|ИЗ
| Документ.ДоговорРаботыУслуги КАК ДоговорРаботыУслуги
|ГДЕ
| ДоговорРаботыУслуги.Ссылка = &Ссылка";
ТаблицаРезультат = Запрос.Выполнить();
РеквизитыДокумента = Новый Структура();
РеквизитыДокумента.Вставить("ДатаНачала");
РеквизитыДокумента.Вставить("ДатаОкончания");
РеквизитыДокумента.Вставить("Подразделение");
РеквизитыДокумента.Вставить("Территория");
РеквизитыДокумента.Вставить("СпособОтраженияЗарплатыВБухучете");
РеквизитыДокумента.Вставить("ОтношениеКЕНВД");
РеквизитыДокумента.Вставить("КодДохода");
РеквизитыДокумента.Вставить("КодДоходаСтраховыеВзносы");
РеквизитыДокумента.Вставить("КодВычета");
РеквизитыДокумента.Вставить("КодВычетаДополнительный");
РеквизитыДокумента.Вставить("СтатьяФинансирования");
РеквизитыДокумента.Вставить("СтатьяРасходов");
РеквизитыДокумента.Вставить("СпособРасчетовСФизическимиЛицами");
РеквизитыДокумента.Вставить("Результат");
Выборка = ТаблицаРезультат.Выбрать();
Выборка.Следующий();
ЗаполнитьЗначенияСвойств(РеквизитыДокумента, Выборка);
ВычетПоНормативу = РеквизитыДокумента.КодВычета = УчетНДФЛ.ВычетВПределахНормативовПоАвторскимВознаграждениям();
РеквизитыДокумента.Вставить("ВычетПоНормативу", ВычетПоНормативу);
Если НЕ ЭтотОбъект.Результат = 0 Тогда
РеквизитыДокумента.Результат = ЭтотОбъект.Результат;
КонецЕсли;
ЗаполнитьЗначенияСвойств(ЭтотОбъект, РеквизитыДокумента);
Если ВычетПоНормативу И ЭтотОбъект.СуммаВычета <> 0 Тогда
ЭтотОбъект.СуммаВычета = 0;
КонецЕсли;
ЗаполнитьЗначенияСвойств(ЭтотОбъект, РеквизитыДокумента);
Возврат РеквизитыДокумента;
КонецФункции
Процедура ОбработатьИзменениеСотрудника() Экспорт
Если ЗначениеЗаполнено(ЭтотОбъект.Договор) Тогда
СотрудникТекущегоДоговора = ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ЭтотОбъект.Договор, "Сотрудник");
Если ЭтотОбъект.Сотрудник = СотрудникТекущегоДоговора Тогда
Возврат;
Иначе
ЭтотОбъект.Договор = Неопределено;
КонецЕсли;
КонецЕсли;
Если ЗначениеЗаполнено(ЭтотОбъект.Сотрудник) Тогда
ТаблицаДоговоров = Документы.АктПриемкиВыполненныхРаботОказанныхУслуг.ДоговорыСотрудника(ЭтотОбъект.Организация, ЭтотОбъект.Сотрудник);
Если ТаблицаДоговоров.Количество()=1 Тогда
ЭтотОбъект.Договор = ТаблицаДоговоров[0].Договор;
КонецЕсли;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Иначе
ВызватьИсключение НСтр("ru = 'Недопустимый вызов объекта на клиенте.'");
#КонецЕсли