Аттестация "1С:Специалист" > Аттестация "1С:Специалист" ЗУП

ЗУП 3.0 Специалист Билет 5

(1/4) > >>

demos:
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
 ИЗ
     ВТРезультат КАК ВТРезультат
         ВНУТРЕННЕЕ СОЕДИНЕНИЕ Представления_КадровыеДанныеСотрудников КАК Представления_КадровыеДанныеСотрудников
         ПО ВТРезультат.ПериодДействия = Представления_КадровыеДанныеСотрудников.Период
             И ВТРезультат.Сотрудник = Представления_КадровыеДанныеСотрудников.Сотрудник

Незнайка:
Подскажите, пожалуйста, один момент. Не могу разобраться, откуда берется значение показателя ЧасовойТарифПоДолжности .

Возможно изначально неверная логика моего решения. Рассуждаю я так:
1. СОздаю штатное расписание с тремя должностями:
 - мл.тренер - тариф 200 руб/час
 - тренер - тариф 250 руб/час
 - ст.тренер - тариф 300 руб/час

2. Принимаю на работу сотрудников и в самом документе приема на работу вручную на второй закладке меняю значение тарифной ставки со знаения, которое подтянулось из штатного расписания (см.пункт 1) на значение 100 руб/час, так как в задании сказано что все получают по 100 руб в час.

 Таким образом , я полагаю, что у нас и тарифная ставка в 100 рублей установлена, и вроде бы по каждой дожности свой тариф указан.

3. и далее я полагаю, что при расчете зп система подтянет значение показателя ЧасовойТарифПоДолжности именно из штатного расписания - но нет. Значение показателя - 0. Однако часы считает..  Не могу сообразить, что именно я не так заполняю.

Подскажите, пожалуйста

Tex:

--- Цитата: Незнайка от Декабрь 15, 2014, 11:53:24 pm ---Подскажите, пожалуйста, один момент. Не могу разобраться, откуда берется значение показателя ЧасовойТарифПоДолжности .

--- Конец цитаты ---

Сделал сегодня этот билет. Показатель этот судя по всему заносится вручную, в штатных такого не существует. Я создал документ, который заносит показатель в РС ПериодическиеПоказателиРасчетаЗарплатыСотрудника. Туда заносится показатель для каждого сотрудника и используется бессрочно или до смены пользователем. Это быстрый вариант для экзамена ограниченного по времени. Если делать основательно, то надо, чтобы документы проверяли его наличие в РС РазовыеПоказателиРасчетаЗарплатыСотрудника и, при отсутствии в данном месяце, писали его туда.

IgorXml:

--- Цитата: Tex от Февраль 11, 2015, 02:59:19 pm ---
--- Цитата: Незнайка от Декабрь 15, 2014, 11:53:24 pm ---Подскажите, пожалуйста, один момент. Не могу разобраться, откуда берется значение показателя ЧасовойТарифПоДолжности .

--- Конец цитаты ---

Сделал сегодня этот билет. Показатель этот судя по всему заносится вручную, в штатных такого не существует. Я создал документ, который заносит показатель в РС ПериодическиеПоказателиРасчетаЗарплатыСотрудника. Туда заносится показатель для каждого сотрудника и используется бессрочно или до смены пользователем. Это быстрый вариант для экзамена ограниченного по времени. Если делать основательно, то надо, чтобы документы проверяли его наличие в РС РазовыеПоказателиРасчетаЗарплатыСотрудника и, при отсутствии в данном месяце, писали его туда.

--- Конец цитаты ---
   Не надо РС Периодический заводить. Здесь показатель является часовой тарифной ставкой. При приеме на работу его надо ввести.
   Решение задачи от  demos удачное и пока единственное. Но надо учесть, что сейчас для релиза 3.0.23.139 от 08.2015 г.  вместо регистра "РН РабочееВремяСотрудников" два разных регистра для д.табеля и д.индивидуального графика. 
   Ещё можно доработать д.Персональные тренировки, чтобы были движения по трем видам начисления, когда они все попадает в один день.
  И в отчете не заполняется колонка "ЧасовПоГрафикуРаботы" (из НачисленияДанныеГрафика.ОсновноеЗначениеНормаФактическийПериодДействия). До релиза 3.0.23.139 эта колонка заполняется правильно. Или ошибка, или иначе заполняется РС.ГрафикиРаботыПоВидамВремени график для РР Начисления. Сделал иначе, на случай если на экзамене будет этот релиз. 

FireAlex:
"Сделал иначе, на случай если на экзамене будет этот релиз."

я тоже покопался немного в нашем случае в РР  ВремяВЧасах= Истина, а в РС.ГрафикиРаботыПоВидамВремени пишется измерение ВремяВЧасах = ложь, поэтому не можем получить ни норму, ни отработанное время по графику. Может так задумывалось, не знаю.

Подскажи, как можно вытащить норму в отчете по другому, если получилось?

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Перейти к полной версии