немного подправил выбор периода:
СписокПериодов = СоздатьОбъект("СписокЗначений");
// СписокПериодов.ДобавитьЗначение(1, "за текущий год");
// СписокПериодов.ДобавитьЗначение(2, "за прошлый год");
//
// ВыбранныйПериод = "";
// Если СписокПериодов.ВыбратьЗначение(ВыбранныйПериод, , , , 1) = 0 тогда
// Возврат;
// КонецЕсли;
//
// ЖрнЗарплата = СоздатьОбъект("ЖурналРасчетов.Зарплата");
// ДатаНачГода = ЖрнЗарплата.НачалоТекущегоПериода();
//
// Если (ВыбранныйПериод = 1) тогда
// ДатаНачГода = НачГода(ДатаНачГода);
// ДатаКонГода = КонГода(ДатаНачГода);
// ИначеЕсли (ВыбранныйПериод = 2) тогда
// ДатаНачГода = НачГода(НачГода(ДатаНачГода) - 1);
// ДатаКонГода = КонГода(ДатаНачГода);
// КонецЕсли;
ТекГод = ДатаГод(ТекущаяДата()) + 1;
ЖрнЗарплата = СоздатьОбъект("ЖурналРасчетов.Зарплата");
Для А = 1 По 10 Цикл
ПромДата = Дата(ТекГод - А, 01, 01);
Рез = ЖрнЗарплата.ВыбратьПериодПоОбъекту(Человек, ПромДата);
// сотрудник мог быть как принят на работу так и уволен в средине года
Если Рез = 0 Тогда
ПромДата = Дата(ТекГод - А, 12, 31);
Рез = ЖрнЗарплата.ВыбратьПериодПоОбъекту(Человек, ПромДата);
КонецЕсли;
Если Рез = 0 Тогда продолжить КонецЕсли;
СписокПериодов.ДобавитьЗначение(ПромДата, ""+ДатаГод(ПромДата)+" год");
КонецЦикла;
ВыбранныйПериод = "";
Если СписокПериодов.ВыбратьЗначение(ВыбранныйПериод, , , , 1) = 0 тогда
Возврат;
КонецЕсли;
ДатаНачГода = НачГода(НачГода(ВыбранныйПериод));
ДатаКонГода = КонГода(ВыбранныйПериод);
Показать
Еще изящнее - это добавить список периодов как элемент формы. Но ладно уж, и так сойдет.
И еще с приказами на отпуск как-то непонятно.