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