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