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