1. Создаем Начисление "_Оплата за групповые занятия", Только если введен вид учета времени и Вид Времени : "_Групповое занятие", Дополнительная оплата за уже оплаченное время, формула: "ЧасовойТарифПоДолжности * ОтработаноЧасовВПределахНормыВремени"
2. Создаем Начисление "_Оплата за персональные тренировки", Только если введен вид учета времени и Вид Времени : "_Персональная тренировка", Дополнительная оплата за уже оплаченное время, формула: "ЧасовойТарифПоДолжности * ОтработаноЧасовВПределахНормыВремени * 20 / 100"
3. Создаем РС ГрупповыеЗанятия, изм: Тренер,ДатаНачала(датавремя),ДатаОкончания(датавремя), реквизит: Занятия (справочник.Занятия)
непереодический, подчиненный регистратору: РасписаниеГрупповыхЗанятий
4. Документ РасписаниеГрупповыхЗанятий:
Реквизиты: ДатаНачалаПериода, ДатаОкончанияПериода, ИсправленныйДокумент, Подразделение, Организация, скопированы с документа - ИндивидуальногоГрафика
ТабличнаяЧасть - ТаблицаРасписания: Тренер, ДатаНачала, ДатаОкончания, Занятие, ДеньЗанятия (перечисление ДниНедели: пн.вт.ср. и т.д.)
Документ будет писать в РС ГрупповыеЗанятия и РН РабочееВремяСотрудников (как Индивидуальный график)
Код
Функция ПустаяТаблицаДанныхОВремени()
ТаблицаДанныхОВремени = Новый ТаблицаЗначений;
ТаблицаДанныхОВремени.Колонки.Добавить("Дата", Новый ОписаниеТипов("Дата"));
ТаблицаДанныхОВремени.Колонки.Добавить("Сотрудник", Новый ОписаниеТипов("СправочникСсылка.Сотрудники"));
ТаблицаДанныхОВремени.Колонки.Добавить("ВидВремени", Новый ОписаниеТипов("СправочникСсылка.ВидыИспользованияРабочегоВремени"));
ТаблицаДанныхОВремени.Колонки.Добавить("Дней", Новый ОписаниеТипов("Число"));
ТаблицаДанныхОВремени.Колонки.Добавить("Часов", Новый ОписаниеТипов("Число"));
ТаблицаДанныхОВремени.Колонки.Добавить("ВЦеломЗаПериод", Новый ОписаниеТипов("Булево"));
Возврат ТаблицаДанныхОВремени;
КонецФункции
Процедура ОбработкаПроведения(Отказ, Режим)
// готовим регистры для записи
//ПроведениеСервер.ПодготовитьНаборыЗаписейКРегистрацииДвижений(ЭтотОбъект); - готовит только одно последнее движение
Движения.ГрупповыеЗанятия.Очистить();
Движения.ГрупповыеЗанятия.Записывать = Истина;
Движения.РабочееВремяСотрудников.Очистить();
Движения.РабочееВремяСотрудников.Записывать = Истина;
ДатаРасписания = НачалоМесяца(ДобавитьМесяц(Дата,1));
ЗначенияПоУмолчанию = Новый Структура("Организация");
ЗарплатаКадры.ПолучитьЗначенияПоУмолчанию(ЗначенияПоУмолчанию, ДатаРасписания );
ДатаНачалаПериода = НачалоМесяца(ДатаРасписания);
ДатаОкончанияПериода = КонецМесяца(ДатаРасписания);
Организация = ЗначенияПоУмолчанию.Организация;
ВыборкаДанныхОВремени = Документы.ИндивидуальныйГрафик.ДанныеОВремениСотрудников(ЭтотОбъект);
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| РасписаниеГрупповыхЗанятийТаблицаРасписания.Тренер КАК Тренер,
| ЧАС(РасписаниеГрупповыхЗанятийТаблицаРасписания.ДатаНачала) * 60 * 60 + МИНУТА(РасписаниеГрупповыхЗанятийТаблицаРасписания.ДатаНачала) * 60 КАК ВремяНачала,
| ЧАС(РасписаниеГрупповыхЗанятийТаблицаРасписания.ДатаОкончания) * 60 * 60 + МИНУТА(РасписаниеГрупповыхЗанятийТаблицаРасписания.ДатаОкончания) * 60 КАК ВремяОкончания,
| ВЫБОР
| КОГДА РасписаниеГрупповыхЗанятийТаблицаРасписания.ДеньЗанятия = ЗНАЧЕНИЕ(Перечисление.ДниНедели.Понедельник)
| ТОГДА 1
| КОГДА РасписаниеГрупповыхЗанятийТаблицаРасписания.ДеньЗанятия = ЗНАЧЕНИЕ(Перечисление.ДниНедели.Вторник)
| ТОГДА 2
| КОГДА РасписаниеГрупповыхЗанятийТаблицаРасписания.ДеньЗанятия = ЗНАЧЕНИЕ(Перечисление.ДниНедели.Среда)
| ТОГДА 3
| КОГДА РасписаниеГрупповыхЗанятийТаблицаРасписания.ДеньЗанятия = ЗНАЧЕНИЕ(Перечисление.ДниНедели.Четверг)
| ТОГДА 4
| КОГДА РасписаниеГрупповыхЗанятийТаблицаРасписания.ДеньЗанятия = ЗНАЧЕНИЕ(Перечисление.ДниНедели.Пятница)
| ТОГДА 5
| КОГДА РасписаниеГрупповыхЗанятийТаблицаРасписания.ДеньЗанятия = ЗНАЧЕНИЕ(Перечисление.ДниНедели.Суббота)
| ТОГДА 6
| КОГДА РасписаниеГрупповыхЗанятийТаблицаРасписания.ДеньЗанятия = ЗНАЧЕНИЕ(Перечисление.ДниНедели.Воскресенье)
| ТОГДА 7
| КОНЕЦ КАК ДеньЗанятия,
| РасписаниеГрупповыхЗанятийТаблицаРасписания.Занятие
|ПОМЕСТИТЬ ВТТаблицаРасписания
|ИЗ
| Документ.РасписаниеГрупповыхЗанятий.ТаблицаРасписания КАК РасписаниеГрупповыхЗанятийТаблицаРасписания
|ГДЕ
| РасписаниеГрупповыхЗанятийТаблицаРасписания.Ссылка = &Ссылка
|
|ИНДЕКСИРОВАТЬ ПО
| Тренер
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ДанныеОВремениСотрудников.Сотрудник КАК Сотрудник,
| ДанныеОВремениСотрудников.Дата,
| ДанныеОВремениСотрудников.Часы
|ПОМЕСТИТЬ ВТДанныеОВремениСотрудников
|ИЗ
| &ДанныеОВремениСотрудников КАК ДанныеОВремениСотрудников
|ГДЕ
| ДанныеОВремениСотрудников.ВидУчетаВремени = &ВидУчетаВремениЯвка
|
|ИНДЕКСИРОВАТЬ ПО
| Сотрудник
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВТДанныеОВремениСотрудников.Дата,
| ВТТаблицаРасписания.Тренер КАК Тренер,
| ДОБАВИТЬКДАТЕ(ВТДанныеОВремениСотрудников.Дата, СЕКУНДА, ВТТаблицаРасписания.ВремяНачала) КАК ДатаНачала,
| ДОБАВИТЬКДАТЕ(ВТДанныеОВремениСотрудников.Дата, СЕКУНДА, ВТТаблицаРасписания.ВремяОкончания) КАК ДатаОкончания,
| ВТТаблицаРасписания.Занятие,
| ВТТаблицаРасписания.ВремяОкончания - ВТТаблицаРасписания.ВремяНачала КАК ВремяЗанятия,
| ВТДанныеОВремениСотрудников.Часы
|ПОМЕСТИТЬ ВТИтоговыеДанные
|ИЗ
| ВТТаблицаРасписания КАК ВТТаблицаРасписания
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТДанныеОВремениСотрудников КАК ВТДанныеОВремениСотрудников
| ПО (ВТТаблицаРасписания.ДеньЗанятия = ДЕНЬНЕДЕЛИ(ВТДанныеОВремениСотрудников.Дата))
| И ВТТаблицаРасписания.Тренер = ВТДанныеОВремениСотрудников.Сотрудник
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВТИтоговыеДанные.Тренер,
| ВТИтоговыеДанные.ДатаНачала,
| ВТИтоговыеДанные.ДатаОкончания,
| ВТИтоговыеДанные.Занятие
|ИЗ
| ВТИтоговыеДанные КАК ВТИтоговыеДанные
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВТИтоговыеДанные.Дата,
| ВТИтоговыеДанные.Тренер КАК Сотрудник,
| СУММА(ВТИтоговыеДанные.ВремяЗанятия) КАК ВремяЗанятия,
| ВТИтоговыеДанные.Часы КАК ЧасыЯвка
|ИЗ
| ВТИтоговыеДанные КАК ВТИтоговыеДанные
|
|СГРУППИРОВАТЬ ПО
| ВТИтоговыеДанные.Тренер,
| ВТИтоговыеДанные.Дата,
| ВТИтоговыеДанные.Часы";
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Запрос.УстановитьПараметр("ДанныеОВремениСотрудников", ВыборкаДанныхОВремени.Владелец().Выгрузить() );
Запрос.УстановитьПараметр("ВидУчетаВремениЯвка", ОбщегоНазначенияКлиентСервер.ПредопределенныйЭлемент("Справочник.ВидыИспользованияРабочегоВремени.Явка") );
РезультатыЗапроса = Запрос.ВыполнитьПакет();
// пишем в РС ГрупповыеЗанятия
Движения.ГрупповыеЗанятия.Загрузить( РезультатыЗапроса[3].Выгрузить() );
// пишем в РН РабочееВремяСотрудников
ТаблицаДанныхОВремени = ПустаяТаблицаДанныхОВремени();
Выборка = РезультатыЗапроса[4].Выбрать();
Пока Выборка.Следующий() Цикл
Часов = Выборка.ВремяЗанятия / 60 / 60;
Если Выборка.ЧасыЯвка >= Часов Тогда
ДанныеПоВидуВремениНаДату = ТаблицаДанныхОВремени.Добавить();
ДанныеПоВидуВремениНаДату.Дата = Выборка.Дата;
ДанныеПоВидуВремениНаДату.Сотрудник = Выборка.Сотрудник;
ДанныеПоВидуВремениНаДату.ВидВремени = Справочники.ВидыИспользованияРабочегоВремени.НайтиПоРеквизиту("БуквенныйКод","ГРП");
ДанныеПоВидуВремениНаДату.Дней = 1;
ДанныеПоВидуВремениНаДату.Часов = Часов;
ДанныеПоВидуВремениНаДату.ВЦеломЗаПериод = Ложь;
ДанныеПоВидуВремениНаДату = ТаблицаДанныхОВремени.Добавить();
ДанныеПоВидуВремениНаДату.Дата = Выборка.Дата;
ДанныеПоВидуВремениНаДату.Сотрудник = Выборка.Сотрудник;
ДанныеПоВидуВремениНаДату.ВидВремени = ОбщегоНазначенияКлиентСервер.ПредопределенныйЭлемент("Справочник.ВидыИспользованияРабочегоВремени.Явка");
ДанныеПоВидуВремениНаДату.Дней = 1;
ДанныеПоВидуВремениНаДату.Часов = Выборка.ЧасыЯвка - Часов;
ДанныеПоВидуВремениНаДату.ВЦеломЗаПериод = Ложь;
Иначе
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "Больше "+Выборка.ЧасыЯвка+" часов не сможет работать сотрудник: "+Выборка.Сотрудник+" в этот день: "+Выборка.Дата;
Сообщение.Сообщить();
Отказ = Истина;
КонецЕсли;
КонецЦикла;
// пишем в РН РабочееВремяСотрудников
УчетРабочегоВремени.ЗарегистрироватьДанныеИндивидуальногоГрафика(Движения, ТаблицаДанныхОВремени );
КонецПроцедуры
Добавлено (10.10.2014, 22:23)
---------------------------------------------
5. Документ ПерсональныеТренировки
Реквизиты: ДатаНачалаПериода, ДатаОкончанияПериода, ИсправленныйДокумент, Подразделение, Организация, ПериодРегистрации, скопированы с документа - Табель
ТабличнаяЧасть - ТаблицаТренировок: Тренер, ДатаНачала, ДатаОкончания
Документ будет проверять занятость времени по РС ГрупповыеЗанятия и писать в РН РабочееВремяСотрудников (как Табель)
Код
Функция ПустаяТаблицаДанныхОВремени()
ТаблицаДанныхОВремени = Новый ТаблицаЗначений;
ТаблицаДанныхОВремени.Колонки.Добавить("Дата", Новый ОписаниеТипов("Дата"));
ТаблицаДанныхОВремени.Колонки.Добавить("Сотрудник", Новый ОписаниеТипов("СправочникСсылка.Сотрудники"));
ТаблицаДанныхОВремени.Колонки.Добавить("ВидВремени", Новый ОписаниеТипов("СправочникСсылка.ВидыИспользованияРабочегоВремени"));
ТаблицаДанныхОВремени.Колонки.Добавить("Дней", Новый ОписаниеТипов("Число"));
ТаблицаДанныхОВремени.Колонки.Добавить("Часов", Новый ОписаниеТипов("Число"));
ТаблицаДанныхОВремени.Колонки.Добавить("ВЦеломЗаПериод", Новый ОписаниеТипов("Булево"));
Возврат ТаблицаДанныхОВремени;
КонецФункции
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
ДатаТренировки = НачалоДня(Дата);
// готовим регистр для записи
ПроведениеСервер.ПодготовитьНаборыЗаписейКРегистрацииДвижений(ЭтотОбъект);
ЗначенияПоУмолчанию = Новый Структура("Организация");
ЗарплатаКадры.ПолучитьЗначенияПоУмолчанию(ЗначенияПоУмолчанию, ДатаТренировки );
ДатаНачалаПериода = ДатаТренировки;
ДатаОкончанияПериода = ДатаТренировки;
ПериодРегистрации = ДатаТренировки;
Организация = ЗначенияПоУмолчанию.Организация;
ВыборкаДанныхОВремени = Документы.ТабельУчетаРабочегоВремени.ДанныеОВремениСотрудников(ЭтотОбъект);
//ВыборкаДанныхОВремени.Владелец().выгрузить()
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПерсональныеТренировкиТаблицаТренировок.НомерСтроки,
| ПерсональныеТренировкиТаблицаТренировок.Тренер КАК Тренер,
| ДОБАВИТЬКДАТЕ(&Дата, СЕКУНДА, ЧАС(ПерсональныеТренировкиТаблицаТренировок.ДатаНачала) * 60 * 60 + МИНУТА(ПерсональныеТренировкиТаблицаТренировок.ДатаНачала) * 60) КАК ДатаНачала,
| ДОБАВИТЬКДАТЕ(&Дата, СЕКУНДА, ЧАС(ПерсональныеТренировкиТаблицаТренировок.ДатаОкончания) * 60 * 60 + МИНУТА(ПерсональныеТренировкиТаблицаТренировок.ДатаОкончания) * 60) КАК ДатаОкончания
|ПОМЕСТИТЬ ВТ
|ИЗ
| Документ.ПерсональныеТренировки.ТаблицаТренировок КАК ПерсональныеТренировкиТаблицаТренировок
|ГДЕ
| ПерсональныеТренировкиТаблицаТренировок.Ссылка = &Ссылка
|
|ИНДЕКСИРОВАТЬ ПО
| Тренер
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВыборкаДанныхОВремени.Сотрудник,
| ВыборкаДанныхОВремени.Часы КАК Часов
|ПОМЕСТИТЬ ВТВыборкаДанныхОВремени
|ИЗ
| &ВыборкаДанныхОВремени КАК ВыборкаДанныхОВремени
|ГДЕ
| ВыборкаДанныхОВремени.ВидУчетаВремени = &ВидУчетаВремениЯвка
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВТ.Тренер,
| РАЗНОСТЬДАТ(ВТ.ДатаНачала, ВТ.ДатаОкончания, СЕКУНДА) КАК ВремяЗанятия,
| ВЫБОР
| КОГДА ЕСТЬNULL(ГрупповыеЗанятия.НомерСтроки, 0) = 0
| ТОГДА 0
| ИНАЧЕ ВТ.НомерСтроки
| КОНЕЦ КАК НомерОшибки
|ПОМЕСТИТЬ ВТРезультат
|ИЗ
| ВТ КАК ВТ
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ГрупповыеЗанятия КАК ГрупповыеЗанятия
| ПО ВТ.Тренер = ГрупповыеЗанятия.Тренер
| И (ГрупповыеЗанятия.Активность = ИСТИНА)
| И (ГрупповыеЗанятия.ДатаНачала > ВТ.ДатаНачала
| И ГрупповыеЗанятия.ДатаНачала < ВТ.ДатаОкончания
| ИЛИ ВТ.ДатаНачала > ГрупповыеЗанятия.ДатаНачала
| И ВТ.ДатаНачала < ГрупповыеЗанятия.ДатаОкончания)
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВТРезультат.НомерОшибки
|ИЗ
| ВТРезультат КАК ВТРезультат
|ГДЕ
| ВТРезультат.НомерОшибки > 0
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ВТРезультат.Тренер,
| СУММА(ВТРезультат.ВремяЗанятия) КАК ВремяЗанятия,
| ВТВыборкаДанныхОВремени.Часов
|ИЗ
| ВТРезультат КАК ВТРезультат
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТВыборкаДанныхОВремени КАК ВТВыборкаДанныхОВремени
| ПО ВТРезультат.Тренер = ВТВыборкаДанныхОВремени.Сотрудник
|
|СГРУППИРОВАТЬ ПО
| ВТРезультат.Тренер,
| ВТВыборкаДанныхОВремени.Часов";
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Запрос.УстановитьПараметр("Дата", ДатаТренировки);
Запрос.УстановитьПараметр("ВыборкаДанныхОВремени", ВыборкаДанныхОВремени.Владелец().Выгрузить() );
Запрос.УстановитьПараметр("ВидУчетаВремениЯвка", ОбщегоНазначенияКлиентСервер.ПредопределенныйЭлемент("Справочник.ВидыИспользованияРабочегоВремени.Явка") );
РезультатыЗапроса = Запрос.ВыполнитьПакет();
Выборка = РезультатыЗапроса[3].Выбрать();
Пока Выборка.Следующий() Цикл
Сообщение = Новый СообщениеПользователю;
Сообщение.Текст = "В это время тренер занят на групповых тренировках!";
Сообщение.Поле = "ТаблицаТренировок["+(Выборка.НомерОшибки-1)+"].Тренер";
Сообщение.УстановитьДанные(ЭтотОбъект);
Сообщение.Сообщить();
Отказ = Истина;
КонецЦикла;
Если Отказ = Ложь Тогда
ТаблицаДанныхОВремени = ПустаяТаблицаДанныхОВремени();
Выборка = РезультатыЗапроса[4].Выбрать();
Пока Выборка.Следующий() Цикл
ДанныеПоВидуВремениНаДату = ТаблицаДанныхОВремени.Добавить();
ДанныеПоВидуВремениНаДату.Дата = ДатаТренировки;
ДанныеПоВидуВремениНаДату.Сотрудник = Выборка.Тренер;
ДанныеПоВидуВремениНаДату.ВидВремени = Справочники.ВидыИспользованияРабочегоВремени.НайтиПоРеквизиту("БуквенныйКод","ПРС");
ДанныеПоВидуВремениНаДату.Дней = 1;
ДанныеПоВидуВремениНаДату.Часов = Выборка.ВремяЗанятия / 60 / 60;
ДанныеПоВидуВремениНаДату.ВЦеломЗаПериод = Ложь;
ДанныеПоВидуВремениНаДату = ТаблицаДанныхОВремени.Добавить();
ДанныеПоВидуВремениНаДату.Дата = ДатаТренировки;
ДанныеПоВидуВремениНаДату.Сотрудник = Выборка.Тренер;
ДанныеПоВидуВремениНаДату.ВидВремени = ОбщегоНазначенияКлиентСервер.ПредопределенныйЭлемент("Справочник.ВидыИспользованияРабочегоВремени.Явка");
ДанныеПоВидуВремениНаДату.Дней = 1;
ДанныеПоВидуВремениНаДату.Часов = Выборка.Часов;
ДанныеПоВидуВремениНаДату.ВЦеломЗаПериод = Ложь;
КонецЦикла;
// пишем в РН РабочееВремяСотрудников
УчетРабочегоВремени.ЗарегистрироватьДанныеТабеля(Движения, ТаблицаДанныхОВремени);
КонецЕсли;
КонецПроцедуры
Добавлено (10.10.2014, 22:23)
---------------------------------------------
4.Отчет
Код
ВЫБРАТЬ РАЗРЕШЕННЫЕ
НачисленияДанныеГрафика.ПериодДействия,
НачисленияДанныеГрафика.Сотрудник,
НачисленияДанныеГрафика.Результат,
НачисленияДанныеГрафика.ОсновноеЗначениеФактическийПериодДействия,
НачисленияДанныеГрафика.ОсновноеЗначениеНормаФактическийПериодДействия
ПОМЕСТИТЬ ВТДежурство
ИЗ
РегистрРасчета.Начисления.ДанныеГрафика(
ВидРасчета = &Дежурство
И (ПериодДействия МЕЖДУ &НачалоПериода И &КонецПериода)) КАК НачисленияДанныеГрафика
ГДЕ
НачисленияДанныеГрафика.Активность = ИСТИНА
И НачисленияДанныеГрафика.Сторно = ЛОЖЬ
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
НачисленияДанныеГрафика.ПериодДействия,
НачисленияДанныеГрафика.Сотрудник,
НачисленияДанныеГрафика.Результат,
НачисленияДанныеГрафика.ОсновноеЗначениеФактическийПериодДействия
ПОМЕСТИТЬ ВТГрупповыеЗанятия
ИЗ
РегистрРасчета.Начисления.ДанныеГрафика(
ВидРасчета = &ГрупповыеЗанятия
И (ПериодДействия МЕЖДУ &НачалоПериода И &КонецПериода)) КАК НачисленияДанныеГрафика
ГДЕ
НачисленияДанныеГрафика.Активность = ИСТИНА
И НачисленияДанныеГрафика.Сторно = ЛОЖЬ
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
НачисленияДанныеГрафика.ПериодДействия,
НачисленияДанныеГрафика.Сотрудник,
НачисленияДанныеГрафика.Результат,
НачисленияДанныеГрафика.ОсновноеЗначениеФактическийПериодДействия
ПОМЕСТИТЬ ВТПерсональныеТренировки
ИЗ
РегистрРасчета.Начисления.ДанныеГрафика(
ВидРасчета = &ПерсональныеТренировки
И (ПериодДействия МЕЖДУ &НачалоПериода И &КонецПериода)) КАК НачисленияДанныеГрафика
ГДЕ
НачисленияДанныеГрафика.Активность = ИСТИНА
И НачисленияДанныеГрафика.Сторно = ЛОЖЬ
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТДежурство.ПериодДействия,
ВТДежурство.Сотрудник,
ВТДежурство.ОсновноеЗначениеНормаФактическийПериодДействия КАК ЧасовПоГрафикуРаботы,
ВТДежурство.ОсновноеЗначениеФактическийПериодДействия КАК ЧасовДежурства,
ВТДежурство.Результат КАК Начислено1,
ВТГрупповыеЗанятия.ОсновноеЗначениеФактическийПериодДействия КАК ЧасовЗанятий,
ВТГрупповыеЗанятия.Результат КАК Начислено2,
ВТПерсональныеТренировки.ОсновноеЗначениеФактическийПериодДействия КАК ЧасовПерсональныхТренировок,
ВТПерсональныеТренировки.Результат КАК Начислено3
ПОМЕСТИТЬ ВТРезультат
ИЗ
ВТДежурство КАК ВТДежурство
ЛЕВОЕ СОЕДИНЕНИЕ ВТГрупповыеЗанятия КАК ВТГрупповыеЗанятия
ПО ВТДежурство.ПериодДействия = ВТГрупповыеЗанятия.ПериодДействия
И ВТДежурство.Сотрудник = ВТГрупповыеЗанятия.Сотрудник
ЛЕВОЕ СОЕДИНЕНИЕ ВТПерсональныеТренировки КАК ВТПерсональныеТренировки
ПО ВТДежурство.ПериодДействия = ВТПерсональныеТренировки.ПериодДействия
И ВТДежурство.Сотрудник = ВТПерсональныеТренировки.Сотрудник
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТРезультат.Сотрудник,
ВТРезультат.ПериодДействия КАК Период
ПОМЕСТИТЬ ВТСотрудники
ИЗ
ВТРезультат КАК ВТРезультат
СГРУППИРОВАТЬ ПО
ВТРезультат.Сотрудник,
ВТРезультат.ПериодДействия
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
ЗНАЧЕНИЕ(Справочник.Сотрудники.ПустаяСсылка) КАК Сотрудник,
ЗНАЧЕНИЕ(Справочник.Должности.ПустаяСсылка) КАК Должность,
ВТСотрудники.Период
ПОМЕСТИТЬ Представления_КадровыеДанныеСотрудников
ИЗ
ВТСотрудники КАК ВТСотрудники
ГДЕ
"ТолькоРазрешенные" = ИСТИНА
;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТРезультат.ПериодДействия,
Представления_КадровыеДанныеСотрудников.Должность,
ВТРезультат.Сотрудник,
ВТРезультат.ЧасовПоГрафикуРаботы,
ВТРезультат.ЧасовДежурства,
ВТРезультат.Начислено1,
ВТРезультат.ЧасовЗанятий,
ВТРезультат.Начислено2,
ВТРезультат.ЧасовПерсональныхТренировок,
ВТРезультат.Начислено3
ИЗ
ВТРезультат КАК ВТРезультат
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Представления_КадровыеДанныеСотрудников КАК Представления_КадровыеДанныеСотрудников
ПО ВТРезультат.ПериодДействия = Представления_КадровыеДанныеСотрудников.Период
И ВТРезультат.Сотрудник = Представления_КадровыеДанныеСотрудников.Сотрудник