&НаСервере
Процедура НКТ_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("ДекомпиляцияЭлементов") Тогда
ВнешниеОбработки.Создать(Параметры.ДекомпиляцияЭлементов.ИмяПодключеннойОбработки, Ложь).ОпределитьВнутренниеСвойстваЭлементов(ЭтаФорма);
КонецЕсли;
// ****** Команда формы "Заполнить строки" ***********
НоваяКоманда = Команды.Добавить("ЗаполнитьСтрокиПриложение4Раздел1");
НоваяКоманда.Действие = "ЗаполнитьСтрокиПриложение4Раздел1";
НоваяКоманда.Заголовок = "Заполнить приложение 4, раздел 1";
НоваяКоманда.ИзменяетСохраняемыеДанные = Ложь;
НоваяКоманда.Отображение = ОтображениеКнопки.Авто;
НоваяКоманда.Подсказка = "Заполнить строки (Приложение 4, Раздел 1).";
// ****** Кнопка формы "ПодменюЭДООткрытьТекущиеДелаЭДО3" ***********
НовыйЭлемент = Элементы.Вставить("ЗаполнитьСтрокиПриложение4Раздел1", Тип("КнопкаФормы"), Элементы.ГруппаКнопокПодготовкаОтчета, Неопределено);
НовыйЭлемент.Вид = ВидКнопкиФормы.КнопкаКоманднойПанели;
НовыйЭлемент.ИмяКоманды = "ЗаполнитьСтрокиПриложение4Раздел1";
НовыйЭлемент.ТолькоВоВсехДействиях = Ложь;
КонецПроцедуры
&НаСервере
Функция ВернутьТаблицуСтудентов(Организация, НачалоПериода, ОкончаниеПериода)
МассивСотрудников = Новый Массив();
СтруктураДанных = Новый Структура();
СтруктураДанных.Вставить("ДатаНачала",);
СтруктураДанных.Вставить("ДатаОкончания",);
СтруктураДанных.Вставить("РазмерОклада",);
ПараметрыПолучения = КадровыйУчет.ПараметрыПолученияСотрудниковОрганизацийПоСпискуФизическихЛиц();
ПараметрыПолучения.Организация = Организация;
ПараметрыПолучения.НачалоПериода = НачалоПериода;
ПараметрыПолучения.ОкончаниеПериода = ОкончаниеПериода;
ПараметрыПолучения.КадровыеДанные = "Сотрудник,ФизическоеЛицо,Подразделение,Должность,ДолжностьПоШтатномуРасписанию,КоличествоСтавок,ВидЗанятости,ДатаПриема,ДатаУвольнения,ГрафикРаботы";
ТаблицаСотрудников = КадровыйУчет.СотрудникиОрганизации(Истина, ПараметрыПолучения);
Для каждого СтрокаТаблицы Из ТаблицаСотрудников Цикл
Если СтрокаТаблицы.Сотрудник.СтудентРаботающийВСтудотряде Тогда
Если СтрокаТаблицы.ДатаПриема >= НачалоПериода И СтрокаТаблицы.ДатаПриема <= ОкончаниеПериода Тогда
МассивСотрудников.Добавить(СтрокаТаблицы.ФизическоеЛицо);
КонецЕсли;
КонецЕсли;
КонецЦикла;
Запрос = Новый Запрос();
Запрос.Текст =
"ВЫБРАТЬ
| ФизическиеЛица.Ссылка КАК Ссылка
|ПОМЕСТИТЬ ВТФизилица
|ИЗ
| Справочник.ФизическиеЛица КАК ФизическиеЛица
|ГДЕ
| ФизическиеЛица.Ссылка В(&МассивФизЛиц)
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВТФизилица.Ссылка КАК Ссылка,
| ФИОФизическихЛицСрезПоследних.Фамилия КАК Фамилия,
| ФИОФизическихЛицСрезПоследних.Имя КАК Имя,
| ФИОФизическихЛицСрезПоследних.Отчество КАК Отчество,
| МАКСИМУМ(СправкиОбОбучении.Ссылка) КАК СправкаОбОбучении,
| МАКСИМУМ(СправкиПодтверждения.Ссылка) КАК СправкаПодтверждение
|ИЗ
| ВТФизилица КАК ВТФизилица
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФИОФизическихЛиц.СрезПоследних КАК ФИОФизическихЛицСрезПоследних
| ПО ВТФизилица.Ссылка = ФИОФизическихЛицСрезПоследних.ФизическоеЛицо
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СправкиФизическихЛиц КАК СправкиОбОбучении
| ПО ВТФизилица.Ссылка = СправкиОбОбучении.Владелец
| И (СправкиОбОбучении.ВидСправки = &СправкаОбОбучении)
| И (СправкиОбОбучении.ДатаСправки >= &НачалоПериода)
| И (СправкиОбОбучении.ДатаСправки <= &ОкончаниеПериода)
| И (НЕ СправкиОбОбучении.ПометкаУдаления)
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.СправкиФизическихЛиц КАК СправкиПодтверждения
| ПО ВТФизилица.Ссылка = СправкиПодтверждения.Владелец
| И (СправкиПодтверждения.ВидСправки = &СправкаПодтверждение)
| И (СправкиПодтверждения.ДатаСправки >= &НачалоПериода)
| И (СправкиПодтверждения.ДатаСправки <= &ОкончаниеПериода)
| И (НЕ СправкиПодтверждения.ПометкаУдаления)
|
|СГРУППИРОВАТЬ ПО
| ВТФизилица.Ссылка,
| ФИОФизическихЛицСрезПоследних.Фамилия,
| ФИОФизическихЛицСрезПоследних.Имя,
| ФИОФизическихЛицСрезПоследних.Отчество
|
|УПОРЯДОЧИТЬ ПО
| Фамилия,
| Имя,
| Отчество";
Запрос.УстановитьПараметр("МассивФизЛиц", МассивСотрудников);
Запрос.УстановитьПараметр("НачалоПериода", НачалоПериода);
Запрос.УстановитьПараметр("ОкончаниеПериода", ОкончаниеПериода);
Запрос.УстановитьПараметр("СправкаОбОбучении", Справочники.ВидыСправок.НайтиПоНаименованию("Справка об обучении"));
Запрос.УстановитьПараметр("СправкаПодтверждение", Справочники.ВидыСправок.НайтиПоНаименованию("Справка-подтверждение (Студенческие отряды)"));
МассивДанных = Новый Массив();
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
СтруктураДанных = Новый Структура("Фамилия, Имя, Отчество, Номер050, Дата060, Номер070, Дата080, Объединение, Дата100, Номер110");
ЗаполнитьЗначенияСвойств(СтруктураДанных, Выборка);
Если ЗначениеЗаполнено(Выборка.СправкаОбОбучении) Тогда
СтруктураДанных.Номер050 = Выборка.СправкаОбОбучении.НомерСправки;
СтруктураДанных.Дата060 = Выборка.СправкаОбОбучении.ДатаСправки;
КонецЕсли;
Если ЗначениеЗаполнено(Выборка.СправкаПодтверждение) Тогда
СтруктураДанных.Номер070 = Выборка.СправкаПодтверждение.НомерСправки;
СтруктураДанных.Дата080 = Выборка.СправкаПодтверждение.ДатаСправки;
Для каждого ДопРеквизит Из Выборка.СправкаПодтверждение.ДополнительныеРеквизиты Цикл
Если ДопРеквизит.Свойство.Наименование = "Наименование РСО" Тогда
СтруктураДанных.Объединение = ДопРеквизит.Значение;
КонецЕсли;
Если ДопРеквизит.Свойство.Наименование = "Номер в реестре РСО" Тогда
СтруктураДанных.Номер110 = ДопРеквизит.Значение;
КонецЕсли;
Если ДопРеквизит.Свойство.Наименование = "Дата РСО" Тогда
СтруктураДанных.Дата100 = ДопРеквизит.Значение;
КонецЕсли;
КонецЦикла;
КонецЕсли;
МассивДанных.Добавить(СтруктураДанных);
КонецЦикла;
Возврат МассивДанных;
КонецФункции
&НаКлиенте
Процедура ЗаполнитьСтрокиПриложение4Раздел1(Команда)
Если Не Элементы.РазделыОтчета.ТекущиеДанные.КолонкаРазделыОтчетаСокрНаим = "Раздел1Прил4" Тогда
ПоказатьПредупреждение(, "Доступно заполнение только в разделе ""Приложение 4. Раздел 1""");
Возврат;
КонецЕсли;
МассивДанных = ВернутьТаблицуСтудентов(СтруктураРеквизитовФормы.Организация, СтруктураРеквизитовФормы.мДатаНачалаПериодаОтчета, СтруктураРеквизитовФормы.мДатаКонцаПериодаОтчета);
Элементы.ТабличныйДокумент.ТекущаяОбласть = ТабличныйДокумент.Области["ДобавитьСтрокуП00104М1_" + (ТабличныйДокумент.ВысотаТаблицы - 7)];
СчетчикЦикла = 0;
Для каждого СтрокаТаблицы Из МассивДанных Цикл
СчетчикЦикла = СчетчикЦикла + 1;
ТабличныйДокумент.Области["П00104М102001_" + Формат(СчетчикЦикла, "ЧГ=")].Значение = СтрокаТаблицы.Фамилия;
ТабличныйДокумент.Области["П00104М103001_" + Формат(СчетчикЦикла, "ЧГ=")].Значение = СтрокаТаблицы.Имя;
ТабличныйДокумент.Области["П00104М104001_" + Формат(СчетчикЦикла, "ЧГ=")].Значение = СтрокаТаблицы.Отчество;
ТабличныйДокумент.Области["П00104М105001_" + Формат(СчетчикЦикла, "ЧГ=")].Значение = СтрокаТаблицы.Номер050;
ТабличныйДокумент.Области["П00104М106001_" + Формат(СчетчикЦикла, "ЧГ=")].Значение = СтрокаТаблицы.Дата060;
ТабличныйДокумент.Области["П00104М107001_" + Формат(СчетчикЦикла, "ЧГ=")].Значение = СтрокаТаблицы.Номер070;
ТабличныйДокумент.Области["П00104М108001_" + Формат(СчетчикЦикла, "ЧГ=")].Значение = СтрокаТаблицы.Дата080;
ТабличныйДокумент.Области["П00104М109001_" + Формат(СчетчикЦикла, "ЧГ=")].Значение = СтрокаТаблицы.Объединение;
ТабличныйДокумент.Области["П00104М110001_" + Формат(СчетчикЦикла, "ЧГ=")].Значение = СтрокаТаблицы.Дата100;
ТабличныйДокумент.Области["П00104М111001_" + Формат(СчетчикЦикла, "ЧГ=")].Значение = СтрокаТаблицы.Номер110;
ВставитьДополнительнуюСтроку();
КонецЦикла;
КонецПроцедуры