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