Автор Тема: ЗУП 3.0 Специалист Билет 2  (Прочитано 27234 раз)

0 Пользователей и 1 Гость просматривают эту тему.

demos

  • Новичок
  • *
  • Сообщений: 4
  • ФИО: demos
ЗУП 3.0 Специалист Билет 2
« : Октябрь 08, 2014, 09:49:54 pm »
1. Создадим Начисление: _Доплата за работу в кислотном цеху, Повременная оплата труда и надбавки, Только если введено значение показателя: ОтработаноЧасовВКислотномЦеху, Дополнительная оплата за уже оплаченное время, Вид времени: Явка, пп.3, ст.255 НК РФ, Формула: ТарифнаяСтавкаЧасовая * ОтработаноЧасовВКислотномЦеху * 50 / 100
 Показатель ОтработаноЧасовВКислотномЦеху числовой, точность 2, Вводится единовременно документом ввода данных для расчета зарплаты
 Показатель будем писать в РС ЗначенияРазовыхПоказателейРасчетаЗарплатыСотрудников

 2. Создадим Начисление: _Оплата отгула, Повременная оплата труда и надбавки, Только если введен вид учета времени: _Отгул, Дополнительная оплата за уже оплаченное время, Вид времени: _Отгул, Формула: ТарифнаяСтавкаЧасовая * ВремяВЧасах
 Вид времени _Отгул имеет основное время - Выходные дни
 Отгул будем писать в РН РабочееВремяСотрудников

 3. Создадим РС Отгулы (остатки) и РС РаботаВЦеху (обороты)
 оба регистра имеют измерение: сотрудник, ресурс: время (в секундах). регистраторы документы: ДанныеПропускнойСистемы и Отгул
 наверно нужно было сделать на одном регистре...

 4. Документ ДанныеПропускнойСистемы
 4.1. Форма
 
Код
&НаКлиенте
 Процедура ЗагрузитьИзФайла(Команда)
          
       Режим = РежимДиалогаВыбораФайла.Открытие;
       ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);    
          
       Если ДиалогОткрытияФайла.Выбрать() Тогда
              
           Объект.ДанныеВремени.Очистить();
              
           ТекстФайла = Новый ТекстовыйДокумент;
           ТекстФайла.Прочитать( ДиалогОткрытияФайла.ВыбранныеФайлы[0] );
           ТекстФайла = ТекстФайла.ПолучитьТекст();           
           Для Счетчик = 1 По СтрЧислоСтрок( ТекстФайла ) Цикл
                  
               ТекСтрока = СтрПолучитьСтроку( ТекстФайла, Счетчик );
                        
               Строка = Объект.ДанныеВремени.Добавить();
                  
               Строка.Пропуск = Сред( ТекСтрока, 1, 4 );
                    
               ВходДень = Сред( ТекСтрока, 6, 2 );
               ВходМесяц = Сред( ТекСтрока, 9, 2 );
               ВходГод = Сред( ТекСтрока, 12, 4 );
               ВходЧас = Сред( ТекСтрока, 17, 2 );
               ВходМинута = Сред( ТекСтрока, 20, 2 );
                  
               ВыходДень = Сред( ТекСтрока, 23, 2 );
               ВыходМесяц = Сред( ТекСтрока, 26, 2 );
               ВыходГод = Сред( ТекСтрока, 29, 4 );
               ВыходЧас = Сред( ТекСтрока, 34, 2 );
               ВыходМинута = Сред( ТекСтрока, 37, 2 );
                  
               Строка.ВремяВхода = Дата( ВходГод + ВходМесяц + ВходДень + ВходЧас + ВходМинута + "00" );
               Строка.ВремяВыхода = Дата( ВыходГод + ВыходМесяц + ВыходДень + ВыходЧас + ВыходМинута + "00" )    
                  
           КонецЦикла;
              
       КонецЕсли;       
          
 КонецПроцедуры

 4.2. Модуль объекта
 
Код
Процедура ОбработкаПроведения(Отказ, Режим)

       Движения.РаботаВЦеху.Записывать = Истина;
       Движения.Отгулы.Записывать = Истина;
          
       Запрос = Новый Запрос;
       Запрос.Текст =    
           "ВЫБРАТЬ
           |    ДанныеПропускнойСистемыДанныеВремени.Пропуск КАК Пропуск,
           |    ДанныеПропускнойСистемыДанныеВремени.ВремяВхода,
           |    ДанныеПропускнойСистемыДанныеВремени.ВремяВыхода
           |ПОМЕСТИТЬ ВТ
           |ИЗ
           |    Документ.ДанныеПропускнойСистемы.ДанныеВремени КАК ДанныеПропускнойСистемыДанныеВремени
           |ГДЕ
           |    ДанныеПропускнойСистемыДанныеВремени.Ссылка = &Ссылка
           |;
           |
           |////////////////////////////////////////////////////////////////////////////////
           |ВЫБРАТЬ
           |    СотрудникиДополнительныеРеквизиты.Ссылка КАК Сотрудник,
           |    ВТ.ВремяВхода,
           |    ВТ.ВремяВыхода
           |ИЗ
           |    ВТ КАК ВТ
           |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Сотрудники.ДополнительныеРеквизиты КАК СотрудникиДополнительныеРеквизиты
           |        ПО ВТ.Пропуск = СотрудникиДополнительныеРеквизиты.Значение
           |            И (СотрудникиДополнительныеРеквизиты.Свойство = &Свойство)";
          
       Запрос.УстановитьПараметр("Свойство", ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Номер пропуска") );
       Запрос.УстановитьПараметр("Ссылка", Ссылка);
          
       РезультатЗапроса = Запрос.Выполнить();
          
       Выборка = РезультатЗапроса.Выбрать();
          
       Пока Выборка.Следующий() Цикл
           Движение = Движения.РаботаВЦеху.Добавить();
           Движение.Период = Выборка.ВремяВхода;
           Движение.Сотрудник = Выборка.Сотрудник;
           Движение.Время = Выборка.ВремяВыхода - Выборка.ВремяВхода;
              
           Движение = Движения.Отгулы.Добавить();
           Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
           Движение.Период = Выборка.ВремяВхода;
           Движение.Сотрудник = Выборка.Сотрудник;
           Движение.Время = Выборка.ВремяВыхода - Выборка.ВремяВхода;           
       КонецЦикла;
          
       Движения.Записать();
          
       ЗначенияПоУмолчанию = Новый Структура("Организация");
       ЗарплатаКадры.ПолучитьЗначенияПоУмолчанию(ЗначенияПоУмолчанию, НачалоМесяца(Дата) );
          
       Запрос = Новый Запрос;
       Запрос.Текст =    
           "ВЫБРАТЬ
           |    РаботаВЦехуОбороты.Сотрудник,
           |    ВЫРАЗИТЬ(ЕСТЬNULL(РаботаВЦехуОбороты.ВремяОборот, 0) / 3600 КАК ЧИСЛО(12, 2)) КАК Время
           |ИЗ
           |    РегистрНакопления.РаботаВЦеху.Обороты(&НачалоПериода, &КонецПериода, Месяц, ) КАК РаботаВЦехуОбороты";
          
       Запрос.УстановитьПараметр("НачалоПериода", НачалоМесяца(Дата) );       
       Запрос.УстановитьПараметр("КонецПериода", КонецМесяца(Дата) );
              
       РезультатЗапроса = Запрос.Выполнить();
          
       Выборка = РезультатЗапроса.Выбрать();
          
       Движения.ЗначенияРазовыхПоказателейРасчетаЗарплатыСотрудников.Записывать = Истина;
          
       Пока Выборка.Следующий() Цикл
           Движение = Движения.ЗначенияРазовыхПоказателейРасчетаЗарплатыСотрудников.Добавить();
           Движение.ПериодДействия = НачалоМесяца(Дата);
           Движение.Сотрудник = Выборка.Сотрудник;
           Движение.Показатель = Справочники.ПоказателиРасчетаЗарплаты.НайтиПоРеквизиту("Идентификатор","ОтработаноЧасовВКислотномЦеху");
           Движение.Организация = ЗначенияПоУмолчанию.Организация;
           Движение.Значение = Выборка.Время;
       КонецЦикла;       
          
 КонецПроцедуры


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


 6. Отчет
 
Код
ВЫБРАТЬ
       Начисления.ПериодДействия КАК ПериодДействия,
       Начисления.Сотрудник КАК Сотрудник,
       ЕСТЬNULL(Начисления.Результат, 0) КАК Результат
 ПОМЕСТИТЬ ВТЗаРаботуВЦеху
 ИЗ
       РегистрРасчета.Начисления КАК Начисления
 ГДЕ
       Начисления.ВидРасчета = &ВидРасчетаЗаРаботуВЦеху
       И Начисления.ПериодДействия МЕЖДУ &НачалоПериода И &КонецПериода
       И Начисления.Активность = ИСТИНА
       И Начисления.Сторно = ЛОЖЬ

 ИНДЕКСИРОВАТЬ ПО
       Сотрудник,
       ПериодДействия
 ;

 ////////////////////////////////////////////////////////////////////////////////
 ВЫБРАТЬ
       Начисления.ПериодДействия КАК ПериодДействия,
       Начисления.Сотрудник КАК Сотрудник,
       ЕСТЬNULL(Начисления.Результат, 0) КАК Результат
 ПОМЕСТИТЬ ВТЗаОтгулы
 ИЗ
       РегистрРасчета.Начисления КАК Начисления
 ГДЕ
       Начисления.ВидРасчета = &ЗаОтгулы
       И Начисления.ПериодДействия МЕЖДУ &НачалоПериода И &КонецПериода
       И Начисления.Активность = ИСТИНА
       И Начисления.Сторно = ЛОЖЬ

 ИНДЕКСИРОВАТЬ ПО
       ПериодДействия,
       Сотрудник
 ;

 ////////////////////////////////////////////////////////////////////////////////
 ВЫБРАТЬ
       ВТЗаРаботуВцеху.Сотрудник,
       ВТЗаРаботуВцеху.ПериодДействия КАК Период,
       ВЫРАЗИТЬ(ЕСТЬNULL(РаботаВЦехуОбороты.ВремяОборот, 0) / 3600 КАК ЧИСЛО(12, 2)) КАК ОтработаноЧасовВКислотномЦеху,
       ВТЗаРаботуВцеху.Результат КАК НачисленоДоплаты,
       ВЫРАЗИТЬ(ЕСТЬNULL(ОтгулыОстаткиИОбороты.ВремяНачальныйОстаток, 0) / (4 * 60 * 60) КАК ЧИСЛО(12, 2)) КАК ОстатокОтгуловНаНачалоПериода,
       ВЫБОР
           КОГДА ЕСТЬNULL(ОтгулыОстаткиИОбороты.ВремяРасход, 0) = 0
               ТОГДА 0
           ИНАЧЕ ВЫРАЗИТЬ(ЕСТЬNULL(ОтгулыОстаткиИОбороты.ВремяРасход, 0) / (4 * 60 * 60) - 0.5 КАК ЧИСЛО(12, 0))
       КОНЕЦ КАК ПредоставленоОтгулов,
       ВТЗаОтгулы.Результат КАК НачисленоЗаОтгулы,
       ВЫРАЗИТЬ(ЕСТЬNULL(ОтгулыОстаткиИОбороты.ВремяКонечныйОстаток, 0) / (4 * 60 * 60) КАК ЧИСЛО(12, 2)) КАК ОстатокОтгуловНаКонецПериода
 ИЗ
       ВТЗаРаботуВЦеху КАК ВТЗаРаботуВцеху
           ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.РаботаВЦеху.Обороты(
                   &НачалоПериода,
                   &КонецПериода,
                   Месяц,
                   Сотрудник В
                       (ВЫБРАТЬ
                           ВТЗаРаботуВцеху.Сотрудник
                       ИЗ
                           ВТЗаРаботуВцеху КАК ВТЗаРаботуВцеху)) КАК РаботаВЦехуОбороты
           ПО ВТЗаРаботуВцеху.Сотрудник = РаботаВЦехуОбороты.Сотрудник
               И ВТЗаРаботуВцеху.ПериодДействия = РаботаВЦехуОбороты.Период
           ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Отгулы.ОстаткиИОбороты(
                   &НачалоПериода,
                   &КонецПериода,
                   Месяц,
                   ,
                   Сотрудник В
                       (ВЫБРАТЬ
                           ВТЗаРаботуВцеху.Сотрудник
                       ИЗ
                           ВТЗаРаботуВцеху КАК ВТЗаРаботуВцеху)) КАК ОтгулыОстаткиИОбороты
           ПО ВТЗаРаботуВцеху.Сотрудник = ОтгулыОстаткиИОбороты.Сотрудник
               И ВТЗаРаботуВцеху.ПериодДействия = ОтгулыОстаткиИОбороты.Период
           ЛЕВОЕ СОЕДИНЕНИЕ ВТЗаОтгулы КАК ВТЗаОтгулы
           ПО ВТЗаРаботуВцеху.ПериодДействия = ВТЗаОтгулы.ПериодДействия
               И ВТЗаРаботуВцеху.Сотрудник = ВТЗаОтгулы.Сотрудник
« Последнее редактирование: Октябрь 08, 2014, 09:55:38 pm от Дмитрий »

Tex

  • Пользователь
  • **
  • Сообщений: 11
  • ФИО: Андрей
Re: ЗУП 3.0 Специалист Билет 2
« Ответ #1 : Январь 08, 2015, 01:40:22 pm »
Судя по всему выложено сырое надоделанное решение.

Во-первых сначала говорится о РС, хотя потом обращается  к РН.
Движения делаются по РН с оборотами, а запрос потом по РН с остатками.

Однако данный пост очень полезен как идея, а допиливаете решение сами.


Tex

  • Пользователь
  • **
  • Сообщений: 11
  • ФИО: Андрей
Re: ЗУП 3.0 Специалист Билет 2
« Ответ #2 : Январь 09, 2015, 11:05:29 am »
По отчету тоже косяк. Точнее по начислению зарплаты. Документ считает все хорошо, однако доплата за работу в цеху не попадает в РР, хотя отгул попадает. В связи с эти запросу нечего выдергивать.

Добавлено: Разобрался. РС ЗначенияРазовыхПоказателейРасчетаЗарплатыСотрудников записываются начисления без периода действия, тоесть не протяженные во времени. А они а РР не записываются.
« Последнее редактирование: Январь 09, 2015, 12:38:26 pm от Tex »

Karomag

  • Новичок
  • *
  • Сообщений: 3
  • ФИО: Karomag
Re: ЗУП 3.0 Специалист Билет 2
« Ответ #3 : Август 27, 2015, 01:53:48 pm »
Скажите, в чем смысл создания отдельного регистра для РС РаботаВЦеху (и кстати, наверное имеется ввиду РН) , почему бы не писать сразу в  РС ЗначенияРазовыхПоказателейРасчетаЗарплатыСотрудников?
« Последнее редактирование: Август 27, 2015, 01:55:30 pm от Karomag »

IgorXml

  • Пользователь
  • **
  • Сообщений: 42
  • IgorXml
  • ФИО: Игорь
Re: ЗУП 3.0 Специалист Билет 2
« Ответ #4 : Август 27, 2015, 08:17:48 pm »
Скажите, в чем смысл создания отдельного регистра для РС РаботаВЦеху (и кстати, наверное имеется ввиду РН) , почему бы не писать сразу в  РС ЗначенияРазовыхПоказателейРасчетаЗарплатыСотрудников?
Можно иначе сделать http://expert.chistov.pro/public/391341/. На экзамене от 18.09.2015 мне попался этот билет(на экзамене номер 3). Сдал на отлично. Сделал лишнюю работу когда ввел  свой показатель, который рассчитывал в общем модуле. А надо было "ВремяВЧасах" в формуле использовать и всё ок:
1. Делаем два начисления с двумя видами времени "_Доплата за работу в кислотном цеху"(Формула "ВремяВЧасах * 50 / 100 * ТарифнаяСтавкаЧасовая ") и ВР "_Оплата отгулов"....как demos
2. Регистр остатков "Отгулы".
3. Документ данные пропускной системы:
//МФ
&НаКлиенте
Процедура ЗагрузитьИзФайла()
 Режим = РежимДиалогаВыбораФайла.Открытие;
 ДиалогОткрытияФайла = Новый ДиалогВыбораФайла(Режим);   
 
 Если ДиалогОткрытияФайла.Выбрать() Тогда
 
  Объект.ДанныеОВремени.Очистить();
 
  ТекстФайла = Новый ТекстовыйДокумент;
  ТекстФайла.Прочитать( ДиалогОткрытияФайла.ВыбранныеФайлы[0] );
  ТекстФайла = ТекстФайла.ПолучитьТекст();           
  Для Счетчик = 1 По СтрЧислоСтрок( ТекстФайла ) Цикл
   
   ТекСтрока = СтрПолучитьСтроку( ТекстФайла, Счетчик );
   МассивСтроки = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(ТекСтрока,";");
   Строка = Объект.ДанныеОВремени.Добавить();
   Строка.Сотрудник = УзнатьСотрудника(МассивСтроки[0]);
   Строка.Дата = Дата(МассивСтроки[1]+":00");
   Строка.ВремяВхода = Дата(МассивСтроки[1]+":00");
   Строка.ВремяВыхода = Дата(МассивСтроки[2]+":00");   
   
  КонецЦикла;
 
 КонецЕсли;       
КонецПроцедуры

&НаСервере
Функция УзнатьСотрудника(Строка)
 Возврат Справочники.Сотрудники.НайтиПоКоду(Строка);
КонецФункции

//МО
#Если Не ТолстыйКлиентУправляемоеПриложение Или Сервер Тогда
 
Процедура ОбработкаПроведения(Отказ, РежимПроведения)
 ПроведениеСервер.ПодготовитьНаборыЗаписейКРегистрацииДвижений(ЭтотОбъект);
 ДанныеДляПроведения = ТаблицаДанныхОВремени();
 УчетРабочегоВремени.ЗарегистрироватьДанныеИндивидуальногоГрафика(Движения, ДанныеДляПроведения, НачалоМесяца(Месяц));
КонецПроцедуры

Функция ТаблицаДанныхОВремени()
 
 ТаблицаДанныхОВремени = Новый ТаблицаЗначений;
 ТаблицаДанныхОВремени.Колонки.Добавить("Дата", Новый ОписаниеТипов("Дата"));
 ТаблицаДанныхОВремени.Колонки.Добавить("Сотрудник", Новый ОписаниеТипов("СправочникСсылка.Сотрудники"));
 ТаблицаДанныхОВремени.Колонки.Добавить("ВидВремени", Новый ОписаниеТипов("СправочникСсылка.ВидыИспользованияРабочегоВремени"));
 ТаблицаДанныхОВремени.Колонки.Добавить("Дней", Новый ОписаниеТипов("Число"));
 ТаблицаДанныхОВремени.Колонки.Добавить("Часов", Новый ОписаниеТипов("Число"));
 ТаблицаДанныхОВремени.Колонки.Добавить("ВЦеломЗаПериод", Новый ОписаниеТипов("Булево"));
 
 
 Запрос = Новый Запрос;
 Запрос.Текст =
  "ВЫБРАТЬ
  | ДокТЧ.Сотрудник,
  | СУММА(РАЗНОСТЬДАТ(ДокТЧ.ВремяВхода, ДокТЧ.ВремяВыхода, МИНУТА) / 60) КАК Часов,
  | ДокТЧ.Дата
  |ИЗ
  | Документ.ДанныеПропускнойСистемы_2.ДанныеОВремени КАК ДокТЧ
  |ГДЕ
  | ДокТЧ.Ссылка = &Ссылка
  |
  |СГРУППИРОВАТЬ ПО
  | ДокТЧ.Сотрудник,
  | ДокТЧ.Дата";
 
 Запрос.УстановитьПараметр("Ссылка", Ссылка);
 РезультатЗапроса =      Запрос.Выполнить();
 ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
 Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
  ДанныеПоВидуВремениНаДату = ТаблицаДанныхОВремени.Добавить();
  ДанныеПоВидуВремениНаДату.Дата = ВыборкаДетальныеЗаписи.Дата;
  ДанныеПоВидуВремениНаДату.Сотрудник = ВыборкаДетальныеЗаписи.Сотрудник;
  ДанныеПоВидуВремениНаДату.ВидВремени = ВидВремени;
  ДанныеПоВидуВремениНаДату.Дней = 1;
  ДанныеПоВидуВремениНаДату.Часов = ВыборкаДетальныеЗаписи.Часов;
  ДанныеПоВидуВремениНаДату.ВЦеломЗаПериод = Ложь;
 
  ДанныеПоВидуВремениНаДату = ТаблицаДанныхОВремени.Добавить();
  ДанныеПоВидуВремениНаДату.Дата = ВыборкаДетальныеЗаписи.Дата;
  ДанныеПоВидуВремениНаДату.Сотрудник = ВыборкаДетальныеЗаписи.Сотрудник;
  ДанныеПоВидуВремениНаДату.ВидВремени = Справочники.ВидыИспользованияРабочегоВремени.Явка;
  ДанныеПоВидуВремениНаДату.Дней = 1;
  ДанныеПоВидуВремениНаДату.Часов = 12;
  ДанныеПоВидуВремениНаДату.ВЦеломЗаПериод = Ложь;
 КонецЦикла;
 ТЗ =   РезультатЗапроса.Выгрузить();
  Если ТЗ.Количество() > 0 Тогда
  ТЗ.Свернуть("Сотрудник","Часов");
  Движения.Отгулы_2.Записывать = Истина;
  Для каждого ВыборкаДетальныеЗаписи Из ТЗ Цикл
   Движение = Движения.Отгулы_2.Добавить();
   Движение.ВидДвижения = ВидДвиженияНакопления.Приход;
   Движение.Период = Месяц;
   Движение.Сотрудник = ВыборкаДетальныеЗаписи.Сотрудник;
   Движение.Часов = ВыборкаДетальныеЗаписи.Часов;
  КонецЦикла;
 КонецЕсли;
 Возврат ТаблицаДанныхОВремени;
КонецФункции

#КонецЕсли

 

4. Документ Отгул://движения РН.Отгулы, РН.ДанныеТабельногоУчетаРабочегоВремениСотрудников одной строкой, МО:

#Если Не ТолстыйКлиентУправляемоеПриложение Или Сервер Тогда
    перем ТЗ;   
    Процедура ОбработкаПроведения(Отказ, РежимПроведения)
        ПроведениеСервер.ПодготовитьНаборыЗаписейКРегистрацииДвижений(ЭтотОбъект);
        ДанныеДляПроведения = ТаблицаДанныхОВремени();
       
        Если ТЗ.Количество() > 0 Тогда
            ТЗ.Свернуть("Сотрудник","ЧасовОстаток");
            Движения.Отгулы_2.Записывать = Истина;
            Для каждого ВыборкаДетальныеЗаписи Из ТЗ Цикл
                Движение = Движения.Отгулы_2.Добавить();
                Движение.ВидДвижения = ВидДвиженияНакопления.Расход;
                Движение.Период = ДеньОтгула;
                Движение.Сотрудник = ВыборкаДетальныеЗаписи.Сотрудник;
                Движение.Часов = 4;
            КонецЦикла;
        иначе
            Сообщение = Новый СообщениеПользователю;
            Сообщение.Текст = "У сотрудника "+Сотрудник+" осталось не достаточно часов для отгула на "+ ДеньОтгула;
            Сообщение.Сообщить();
            Отказ = Истина;     
        КонецЕсли;
        УчетРабочегоВремени.ЗарегистрироватьДанныеТабеля(Движения, ДанныеДляПроведения, НачалоМесяца(ДеньОтгула));
    КонецПроцедуры
   
    Функция ТаблицаДанныхОВремени()
       
        ТаблицаДанныхОВремени = Новый ТаблицаЗначений;
        ТаблицаДанныхОВремени.Колонки.Добавить("Дата", Новый ОписаниеТипов("Дата"));
        ТаблицаДанныхОВремени.Колонки.Добавить("Сотрудник", Новый ОписаниеТипов("СправочникСсылка.Сотрудники"));
        ТаблицаДанныхОВремени.Колонки.Добавить("ВидВремени", Новый ОписаниеТипов("СправочникСсылка.ВидыИспользованияРабочегоВремени"));
        ТаблицаДанныхОВремени.Колонки.Добавить("Дней", Новый ОписаниеТипов("Число"));
        ТаблицаДанныхОВремени.Колонки.Добавить("Часов", Новый ОписаниеТипов("Число"));
        ТаблицаДанныхОВремени.Колонки.Добавить("ВЦеломЗаПериод", Новый ОписаниеТипов("Булево"));
        ТаблицаДанныхОВремени.Колонки.Добавить("Территория", Новый ОписаниеТипов("СправочникСсылка.ТерриторииВыполненияРабот"));     
        ТаблицаДанныхОВремени.Колонки.Добавить("УсловияТруда", Новый ОписаниеТипов("СправочникСсылка.УсловияТруда"));
       
        Запрос = Новый Запрос;
        Запрос.Текст =
        "ВЫБРАТЬ
        |    Отгулы_2Остатки.Сотрудник,
        |    Отгулы_2Остатки.ЧасовОстаток
        |ИЗ
        |    РегистрНакопления.Отгулы_2.Остатки(&ДеньОтгула, Сотрудник = &Сотрудник) КАК Отгулы_2Остатки
        |ГДЕ
        |    Отгулы_2Остатки.ЧасовОстаток >= 4";
       
        Запрос.УстановитьПараметр("ДеньОтгула", ДеньОтгула);
        Запрос.УстановитьПараметр("Сотрудник", Сотрудник);
       
        РезультатЗапроса =      Запрос.Выполнить();
        ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
        Если ВыборкаДетальныеЗаписи.Следующий() Тогда
            ДанныеПоВидуВремениНаДату = ТаблицаДанныхОВремени.Добавить();
            ДанныеПоВидуВремениНаДату.Дата = ДеньОтгула;
            ДанныеПоВидуВремениНаДату.Сотрудник = ВыборкаДетальныеЗаписи.Сотрудник;
            ДанныеПоВидуВремениНаДату.ВидВремени = ВидВремени;
            ДанныеПоВидуВремениНаДату.Дней = 1;
            ДанныеПоВидуВремениНаДату.Часов = 12;
            ДанныеПоВидуВремениНаДату.ВЦеломЗаПериод = Ложь;
        КонецЕсли;
       
        ТЗ =   РезультатЗапроса.Выгрузить();
       
        Возврат ТаблицаДанныхОВремени;
    КонецФункции   
   
#КонецЕсли


5. Отчет://МО
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
 ЗарплатаКадрыОбщиеНаборыДанных.ЗаполнитьОбщиеИсточникиДанныхОтчета(ЭтотОбъект);
КонецПроцедуры
#КонецЕсли
//СКД
ВЫБРАТЬ
 НачисленияДанныеГрафика.ПериодРегистрации КАК Период,
 НачисленияДанныеГрафика.Сотрудник КАК Сотрудник,
 НачисленияДанныеГрафика.ОсновноеЗначениеПериодДействияКАК ОсновноеЗначениеПериодДействия,
 НачисленияДанныеГрафика.ВидУчетаВремени КАК Доплата,
 НачисленияДанныеГрафика.Результат КАК Результат
ПОМЕСТИТЬ ВТДоплаты
ИЗ
 РегистрРасчета.Начисления.ДанныеГрафика(
   ВидУчетаВремени = &ВРДоплата
    И (ПериодДействия МЕЖДУ &Дата1 И &Дата2)) КАК НачисленияДанныеГрафика
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
 ВТДоплаты.Период,
 ВТДоплаты.Сотрудник
ПОМЕСТИТЬ ВТНачисления
ИЗ
 ВТДоплаты КАК ВТДоплаты
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
 ЗНАЧЕНИЕ(Справочник.Организации.ПустаяСсылка) КАК Организация,
 ЗНАЧЕНИЕ(Справочник.Сотрудники.ПустаяСсылка) КАК Сотрудник,
 ЗНАЧЕНИЕ(Справочник.ПодразделенияОрганизаций.ПустаяСсылка) КАК Подразделение,
 ЗНАЧЕНИЕ(Справочник.Должности.ПустаяСсылка) КАК Должность
ПОМЕСТИТЬ Представления_СрезПоследних_КадроваяИсторияСотрудников
ИЗ
 ВТНачисления КАК ВТНачисления
ГДЕ
 "ТолькоРазрешенные" = ИСТИНА
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
 НачисленияДанныеГрафика.ПериодРегистрации КАК Период,
 НачисленияДанныеГрафика.Сотрудник КАК Сотрудник,
 НачисленияДанныеГрафика.ВидУчетаВремени КАК Доплата,
 НачисленияДанныеГрафика.ОтработаноДней КАК ПредоставленоОтгулов,
 НачисленияДанныеГрафика.Результат КАК Результат
ПОМЕСТИТЬ ВТОтгулы
ИЗ
 РегистрРасчета.Начисления.ДанныеГрафика(
   ВидУчетаВремени = &ВРОтгул
    И (ПериодДействия МЕЖДУ &Дата1 И &Дата2)) КАК НачисленияДанныеГрафика
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
 ВТДоплаты.Период КАК Месяц,
 ВТДоплаты.Сотрудник КАК Сотрудник,
 ВТДоплаты.ОсновноеЗначениеПериодДействияКАК ОтработаноЧасовВКислотномЦеху,
 ВТДоплаты.Результат КАК НачисленоДоплаты,
 ВТОтгулы.Результат КАК НачисленоЗаОтгулы,
 ВТОтгулы.ПредоставленоОтгулов,
 Отгулы_2ОстаткиИОбороты.ЧасовНачальныйОстаток / 4 КАК ОстатокОтгуловНаНачалоПериода,
 Отгулы_2ОстаткиИОбороты.ЧасовКонечныйОстаток / 4 КАК ОстатокОтгуловНаКонецПериода,
 Представления_СрезПоследних_КадроваяИсторияСотрудников.Должность
ИЗ
 ВТДоплаты КАК ВТДоплаты
  ЛЕВОЕ СОЕДИНЕНИЕ ВТОтгулы КАК ВТОтгулы
  ПО (ВТОтгулы.Сотрудник = ВТДоплаты.Сотрудник)
   И ВТДоплаты.Период = ВТОтгулы.Период
  ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Отгулы_2.ОстаткиИОбороты(&Дата1, &Дата2, Месяц, , ) КАК Отгулы_2ОстаткиИОбороты
  ПО ВТДоплаты.Сотрудник = Отгулы_2ОстаткиИОбороты.Сотрудник
   И ВТДоплаты.Период = Отгулы_2ОстаткиИОбороты.Период
  ЛЕВОЕ СОЕДИНЕНИЕ Представления_СрезПоследних_КадроваяИсторияСотрудников КАК Представления_СрезПоследних_КадроваяИсторияСотрудников
  ПО ВТДоплаты.Сотрудник = Представления_СрезПоследних_КадроваяИсторияСотрудников.Сотрудник


 

[вложение удалено администратором]
« Последнее редактирование: Октябрь 11, 2015, 06:38:22 pm от IgorXml »

Retributor1387

  • Новичок
  • *
  • Сообщений: 4
Re: ЗУП 3.0 Специалист Билет 2
« Ответ #5 : Октябрь 11, 2015, 04:17:57 pm »
Цитировать
УчетРабочегоВремени.ЗарегистрироватьДанныеИндивидуальногоГрафика(Движения, ДанныеДляПроведения, НачалоМесяца(Месяц));
Все бы ничего, но такая механика по каким-то причинам не работает (((
Добавил документ, прописал такую механику проведения, сделал все так, как было нарисовано. Но начисление зарплаты не видит данные, внесенные документом. Если вношу тоже самое табелем или индивидуальным графиком - все ок, видит, считает. Данные самопального документа система игнорирует. Добавил в критерий отбора, подобавлял в регистры сведений как основание/регистратор (рядом с табелем). Пробовал данные подстраивать и под индивидуальный график (тогда данные вносятся плановые), и под табель. Эффекта ноль, хотя в регистре данных табельного учета записи имеются.
Подскажите пожалуйста!
« Последнее редактирование: Октябрь 11, 2015, 04:19:54 pm от Retributor1387 »

IgorXml

  • Пользователь
  • **
  • Сообщений: 42
  • IgorXml
  • ФИО: Игорь
Re: ЗУП 3.0 Специалист Билет 2
« Ответ #6 : Октябрь 11, 2015, 06:42:01 pm »
Цитировать
УчетРабочегоВремени.ЗарегистрироватьДанныеИндивидуальногоГрафика(Движения, ДанныеДляПроведения, НачалоМесяца(Месяц));
Все бы ничего, но такая механика по каким-то причинам не работает (((
...
Сори, забыл изменить здесь. Было не правильно. В первом документе д.б. .ЗарегистрироватьДанныеИндивидуальногоГрафика(, но в документе отгул .ЗарегистрироватьДанныеТабеля(.
« Последнее редактирование: Октябрь 11, 2015, 06:44:59 pm от IgorXml »

Retributor1387

  • Новичок
  • *
  • Сообщений: 4
Re: ЗУП 3.0 Специалист Билет 2
« Ответ #7 : Октябрь 11, 2015, 06:49:38 pm »
Цитировать
УчетРабочегоВремени.ЗарегистрироватьДанныеИндивидуальногоГрафика(Движения, ДанныеДляПроведения, НачалоМесяца(Месяц));
Все бы ничего, но такая механика по каким-то причинам не работает (((
...
Сори, забыл изменить здесь. Было не правильно. В первом документе д.б. .ЗарегистрироватьДанныеИндивидуальногоГрафика(, но в документе отгул .ЗарегистрироватьДанныеТабеля(.

Это не столь важно для расчета ))) система посчитает и так, и так. Но это если внести через индивидуальный график или табель. А через свой документ ни так ни так система записей не видит. Такое ощущение, что она режет записи по регистратору. Куда надо внести свой документ, чтоб его записи тоже учитывались?

IgorXml

  • Пользователь
  • **
  • Сообщений: 42
  • IgorXml
  • ФИО: Игорь
Re: ЗУП 3.0 Специалист Билет 2
« Ответ #8 : Октябрь 11, 2015, 07:09:31 pm »
... Куда надо внести свой документ, чтоб его записи тоже учитывались?
. Не понимаю. Два "самопальных" документа и один типовой и больше ничего, если не считать кадрового. Ну и настроить два начисления.

Retributor1387

  • Новичок
  • *
  • Сообщений: 4
Re: ЗУП 3.0 Специалист Билет 2
« Ответ #9 : Октябрь 11, 2015, 07:32:46 pm »
... Куда надо внести свой документ, чтоб его записи тоже учитывались?
. Не понимаю. Два "самопальных" документа и один типовой и больше ничего, если не считать кадрового. Ну и настроить два начисления.
А данные этих самопальных как попадают в расчет зарплаты?
Я сделал в точности документ регистрации пропускной системы, вношу данные графика, как написано, кодом. Начисления настроены так же в точности, при заполнении начисления зарплаты система новое начисление не видит. Включаю начисление в ежемесячном режиме, добавляю в кадровом документе - появляется в списке при заполнении с нулевым результатом.
Возвращаем начисление только по вводу вида времени, убираем строчку из кадрового документа, вбиваем несколько дат в табеле с нашим видом времени, пытаемся заполнить начисление зарплаты - все считается замечательно. Я перекопал большую часть кода, при расчете движения расчета пишутся временно, потом оттуда получаются данные графика и на их основании делается расчет.
Вопрос, почему движения самопального документа не попадают в эти временные движения расчета и, соответственно, в периоде действия у нас там 0? Может документ надо внести в какой-то критерий отбора или добавить в составной тип где-то, чтобы его движения не отсеивались?
« Последнее редактирование: Октябрь 11, 2015, 07:35:12 pm от Retributor1387 »

IgorXml

  • Пользователь
  • **
  • Сообщений: 42
  • IgorXml
  • ФИО: Игорь
Re: ЗУП 3.0 Специалист Билет 2
« Ответ #10 : Октябрь 11, 2015, 07:41:13 pm »
...
Вопрос, почему движения самопального документа не попадают в эти временные движения расчета и, соответственно, в периоде действия у нас там 0? Может документ надо внести в какой-то критерий отбора или добавить в составной тип где-то, чтобы его движения не отсеивались?
Нет.
Начисление так настроено? И в регистр должно попадать две строки для первого документа и одна для отгула.
« Последнее редактирование: Октябрь 11, 2015, 07:56:00 pm от IgorXml »

Retributor1387

  • Новичок
  • *
  • Сообщений: 4
Re: ЗУП 3.0 Специалист Билет 2
« Ответ #11 : Октябрь 11, 2015, 07:58:45 pm »
Начисление так настроено? И в регистр должно попадать две строки для первого документа и одна для отгула.
Все именно так. И в регистр пишу по две записи (на свой вид времени и на явку). Отгул пока не трогал.

Вообще, я сглупил. Я не то писал в период регистрации. Не сразу бросилось в глаза. Поправил - все появилось. Фух. И спасибо за помощь )))


NeskilF

  • Новичок
  • *
  • Сообщений: 2
  • ФИО: NeskilF
Re: ЗУП 3.0 Специалист Билет 2
« Ответ #12 : Декабрь 17, 2015, 03:22:27 pm »
Прорешала билет, делала по примеру IgorXml
Все начисляется и правильно считается, но в отчете из регистра расчета не берутся значения по отработанным часам - ОсновноеЗначениеПериодДействия, по новому виду начисления эта колонка пустая.
Не подскажете в чем может быть дело?

svetlanagold

  • Новичок
  • *
  • Сообщений: 9
  • ФИО: Светлана
Re: ЗУП 3.0 Специалист Билет 2
« Ответ #13 : Декабрь 21, 2015, 04:43:00 pm »
IgorXml, скажите пожалуйста,почему в 1-ом документе вы используете ЗарегистрироватьДанныеИндивидуальногоГрафика, а в документе Отгул ЗарегистрироватьДанныеТабеля?

arthur2003

  • Новичок
  • *
  • Сообщений: 6
  • ФИО: Артур
Re: ЗУП 3.0 Специалист Билет 2
« Ответ #14 : Февраль 13, 2016, 03:24:02 pm »
IgorXml, скажите пожалуйста,почему в 1-ом документе вы используете ЗарегистрироватьДанныеИндивидуальногоГрафика, а в документе Отгул ЗарегистрироватьДанныеТабеля?

Та же проблема, раньше, в релизе 3.0.23.143 было ОК, а в релизе 3.0.25.65 в Общем модуле УчетРабочегоВремени удалили часть кода функцуии ЗаполнитьОчереднойНабор, добавляющий записиси с ВремяВЧасах=Истина и теперь непонятно как этот ресурс должен заполнятся

« Последнее редактирование: Февраль 13, 2016, 05:30:54 pm от arthur2003 »

mkanaev

  • Пользователь
  • **
  • Сообщений: 27
  • ФИО: Канаев Михаил Сергеевич
Re: ЗУП 3.0 Специалист Билет 2
« Ответ #15 : Март 21, 2016, 12:54:27 pm »
Мое решение. Описание как для экзаменатора, прошу критиковать, в том числе и описание.

1. Завел виды времени:

   - Работа в кислотном цеху, основной вид времени "Вахта"(для того что бы не    включался в "Рабочее время").
   - Отгул за работу в кислотном цеху. Для регистрации отгулов в системе учета    времени. Основной вид времени "Дополнительный выходной(оплачиваемый)", как раз    подходит под условия задачи.

Вывел виды времени в константы для использования в документах.

2. Завел начисления:
   - Работа в кислотном цеху. Вводиться если введен вид времени "Работа в кислотном цеху", рассчитывается по формуле "ТарифнаяСтавкаЧасовая * ВремяВЧасах/2", дополнительная оплата за уже оплаченное время. 
   - Отгул за работу в кислотном цеху. Вводиться если введен вид времени " Отгул за работу в кислотном цеху", рассчитывается по формуле "ТарифнаяСтавкаЧасовая * 12 * ВремяВДнях", за работу в полную смену в пределах нормы времени, оклад в таблице вытеснений приоритет которых ниже. При формировании начислений в документе расчета зарплаты если у начисления есть вытеснения приоритет которых ниже, начисление формируется именно за те дни которые указаны в табеле(или инд. графике).

Вывел виды времени в константы для использования в отчете.

3. Разработал регистр накопления "ЗаработанныеОтгулы". Измерения "Сотрудник", ресурсы "Значение". В регистре храню не количество заработанных отгулов, а количество отработанных часов в кислотном цеху, с целью минимизировать погрешность при вычислении. При списании из регистра остатки не контролирую (в задачи этого не сказано).

4. Разработан документ "ДанныеПропускнойСистемы".

В документе разработал таблицу "Данные" с реквизитами: "Сотрудник", "НачалоПериода", "КонецПериод".

Добавил реквизиты для получения данных табеля.

В модуле формы реализовал процедуру загрузки в табличную часть "Данные" из txt файла по описанному в задачи формату.

Документ формирует движения в регистры накопления "ДанныеОперативногоУчетаРабочегоВремениСотрудников" для регистрации отработанного времени и "ЗаработанныеОтгулы".
Перед обработкой данных проверяю нет ли переходящих периодов изо дня в день и разбиваю по дням для получения количество часов в каждом дне.
Проверяю является ли день за который вводится вредность рабочим днем.
Формирую приход по заработанным отгулам.

5. Разработан документ " ОтгулЗаРаботуВКислотномЦеху".

В документе разработал таблицу "Данные" с реквизитами: "Сотрудник", "День".

Добавил реквизиты для получения данных табеля.

Документ формирует движения в регистры накопления "ДанныеОперативногоУчетаРабочегоВремениСотрудников" для регистрации отгулов и "ЗаработанныеОтгулы".
Проверяю является ли день за который вводится отгул рабочим днем.
Формирую расход по заработанным отгулам.

6. Разработал отчет "РаботаВКислотномЦеху".

Получаю данные из регистра расчета Начисления. если график работы установлен как индивидуальный график, т.е. График = Сотрудник, то получаю фактические периоды работы по начислению и присоединяю регистр сведений "ГрафикиРаботыПоВидамВремени" получаю количество отработанных часов(как это делается в стандартных процедурах программы 1С Зарплата и управление персоналом 3.0 при расчете зарплаты), в противном случае беру отработанные часы из виртуальной таблицы "ДанныеГрафика". Получить отработанные часы при сформированном "Индивидуальном графике" не получиться, процедуры формирующая его не добавляет строки с полем "ВремяВЧасах" = Истина, формирует только время в днях, при связи виртуальная таблица получает null.

7. Занес в базу данных начисления за 3 месяца по 2-м сотрудникам.
« Последнее редактирование: Май 25, 2016, 07:59:51 am от mkanaev »

paxanb

  • Пользователь
  • **
  • Сообщений: 26
Re: ЗУП 3.0 Специалист Билет 2
« Ответ #16 : Апрель 01, 2016, 12:09:10 am »
Та же проблема, раньше, в релизе 3.0.23.143 было ОК, а в релизе 3.0.25.65 в Общем модуле УчетРабочегоВремени удалили часть кода функцуии ЗаполнитьОчереднойНабор, добавляющий записиси с ВремяВЧасах=Истина и теперь непонятно как этот ресурс должен заполнятся

Таки да, начиная где-то с версии 3.0.24 уже не получить (или все-таки можно?) красиво данные из Начисления.ДанныеГрафика, как это было в решении IgorXml.

Мое решение. Описание как для экзаменатора, прошу критиковать, в том числе и описание.

6. Разработал отчет "РаботаВКислотномЦеху".

Получаю данные из регистра расчета Начисления. если график работы установлен как индивидуальный график, т.е. График = Сотрудник, то получаю фактические периоды работы по начислению и присоединяю регистр сведений "ГрафикиРаботыПоВидамВремени" получаю количество отработанных часов(как это делается в стандартных процедурах программы 1С Зарплата и управление персоналом 3.0 при расчете зарплаты), в противном случае беру отработанные часы из виртуальной таблицы "ДанныеГрафика". Получить отработанные часы при сформированном "Индивидуальном графике" не получиться, процедуры формирующая его не добавляет строки с полем "ВремяВЧасах" = Истина, формирует только время в днях, при связи виртуальная таблица получает null.


Несколько напрягает, что в решении mkanaev данные берутся (суммируются часы) из ГрафикиРаботыПоВидамВремени. Это вроде как грубая ошибка (см. описание экзамена: получение данных графика через таблицу РС).

Как альтернативу, предлагаю просто получать все данные из РН Отгулы и Начисления. Впрочем, это очень неправильно, и вероятно повлечет незачет на экзамене.

ВЫБРАТЬ
Начисления.Сотрудник,
Начисления.ПериодРегистрации,
СУММА(ВЫБОР
КОГДА Начисления.ВидУчетаВремени = &Доплата
ТОГДА Начисления.Результат
ИНАЧЕ 0
КОНЕЦ) КАК НачисленоДоплаты,
СУММА(ВЫБОР
КОГДА Начисления.ВидУчетаВремени = &Отгул
ТОГДА Начисления.Результат
ИНАЧЕ 0
КОНЕЦ) КАК НачисленоЗаОтгулы
ПОМЕСТИТЬ ВТНачисления
ИЗ
РегистрРасчета.Начисления КАК Начисления
ГДЕ
(Начисления.ВидУчетаВремени = &Доплата
ИЛИ Начисления.ВидУчетаВремени = &Отгул)
И Начисления.ПериодРегистрации МЕЖДУ &Начало И &Конец

СГРУППИРОВАТЬ ПО
Начисления.ПериодРегистрации,
Начисления.Сотрудник
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ВТНачисления.Сотрудник,
ВТНачисления.ПериодРегистрации,
ОтгулыОстаткиИОбороты.ЧасовПриход КАК ОтработаноЧасовВКислотномЦеху,
ВТНачисления.НачисленоДоплаты,
ОтгулыОстаткиИОбороты.ЧасовНачальныйОстаток / 4 КАК ОстатокОтгуловНаНачало,
ОтгулыОстаткиИОбороты.ЧасовРасход / 4 КАК ПредоставленоОтгулов,
ВТНачисления.НачисленоЗаОтгулы,
ОтгулыОстаткиИОбороты.ЧасовКонечныйОстаток / 4 КАК ОстатокОтгуловНаКонецПериода
ИЗ
ВТНачисления КАК ВТНачисления
ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Отгулы.ОстаткиИОбороты(&Начало, &Конец, Месяц, , ) КАК ОтгулыОстаткиИОбороты
ПО ВТНачисления.Сотрудник = ОтгулыОстаткиИОбороты.Сотрудник
И ВТНачисления.ПериодРегистрации = ОтгулыОстаткиИОбороты.Период

mkanaev

  • Пользователь
  • **
  • Сообщений: 27
  • ФИО: Канаев Михаил Сергеевич
Re: ЗУП 3.0 Специалист Билет 2
« Ответ #17 : Апрель 01, 2016, 01:11:23 pm »
paxanb, есть вариант... пописать процедуру которая формирует инд. график по сотруднику, скопировать код и установить часты = истина... вопрос как к этому отнесутся экзаменаторы.

Вообщем вижу два варианта:
1. Писать как у меня в отчете и в описании давить на то что это типовой код фирмы 1С, выложить код и адрес кода(Имя модуля + строка) получения отработанного времени при расчете начислений. 1С не пользуются виртуальной таблицей "ДанныеГрафика". Это конфликт без вариантов...
2. Дописать процедуру формирования инд. графика, условия выполняются, но надо доказать что не без причины корректировал типовой код, т.е. 1С не думают о экзаменуемых и конфигурация противоречит условиям работы с ней. Это конфликт опять же.

Я общался с экзаминаторами, если честно "не го же холопу с барином спорить" (такое впечатление), поэтому если попался 2 или 5-й билет то не сдал... вообщем рулетка господа!

zikonza

  • Новичок
  • *
  • Сообщений: 9
  • Krol ЕСЛИ ВЫ ПОДЕЛИЛИСЬ СВОЕЙ ПОЧТОЙ, УДАЛИТЕ СООБЩЕНИЕ НЕМЕДЛЕННО ИЛИ БУДЕТЕ ЗАБАНЕНЫ. ЧИТАЙТЕ ПРАВИЛА!!! KoDER
  • ФИО: Макаревич Дмитрий Игоревич
Re: ЗУП 3.0 Специалист Билет 2
« Ответ #18 : Апрель 11, 2016, 11:41:19 pm »
А если указать на один и тот же день рабочий явка , работа в цеху - затем сформировать отгул, а под конец месяца  больничный что мы получим после этого? Еще к примеру если сотрудник решит сформировать документ табель?

mkanaev

  • Пользователь
  • **
  • Сообщений: 27
  • ФИО: Канаев Михаил Сергеевич
Re: ЗУП 3.0 Специалист Билет 2
« Ответ #19 : Апрель 15, 2016, 07:33:37 am »
Тогда необходимо перепровести документ "Данные пропускной системы"

alres

  • Новичок
  • *
  • Сообщений: 3
  • ФИО: Александр
Re: ЗУП 3.0 Специалист Билет 2
« Ответ #20 : Май 14, 2016, 12:09:05 am »
Попался этот билет, только в условии не было разрядов, график был пятидневка (вместо сменного). Сдал на отлично.

Часы работы в кислотном цеху (на экзамене в билете это склад - холодильник) и дни предоставленных отгулов писал в регистр ДанныеТабельногоУчетаРабочегоВремени процедурой УчетРабочегоВремени.ЗарегистрироватьДанныеТабеля (в эту продецуру передавал таблицу (процедуру формирования таблицы взял из документа ТабельУчетаРабочегоВремени и немного доработал)).

Для отгулов использовал типовой регистр и процедуру общего модуля УчетРабочегоВремени.ЗарегистрироватьДниЧасыОтгулов.

И для всего этого дела завел два вида времени и два начисления.

« Последнее редактирование: Май 14, 2016, 12:11:26 am от alres »

Уфимцева

  • Новичок
  • *
  • Сообщений: 6
  • ФИО: Уфимцева Е.М.
Re: ЗУП 3.0 Специалист Билет 2
« Ответ #21 : Июль 22, 2016, 01:35:44 pm »
Создала документ "Данные пропускной системы". Пишу часы работы в кислотном цеху в РН ДанныеИндивидуальныхГрафиковСотрудников, как IgorXml. Столкнулась с такой трудностью: этих часов "не видит" ни табель, ни начисление зарплаты. Оказалось, что есть РС ПараметрыЗарегистрированныхДанныхУчетаВремениСотрудников, у которого есть измерение ДокументОснование, составного типа. Добавила в тип свой документ - стало считать. Интересно, кто-нибудь сталкивался? Почему-то у всех отписавшихся в теме все работало... Может, поменялся релиз?

P.S. Использую релиз 3.0.25.109

Rvast

  • Новичок
  • *
  • Сообщений: 6
  • ФИО: Иван
Re: ЗУП 3.0 Специалист Билет 2
« Ответ #22 : Сентябрь 02, 2016, 05:55:20 pm »
Создала документ "Данные пропускной системы". Пишу часы работы в кислотном цеху в РН ДанныеИндивидуальныхГрафиковСотрудников, как IgorXml. Столкнулась с такой трудностью: этих часов "не видит" ни табель, ни начисление зарплаты. Оказалось, что есть РС ПараметрыЗарегистрированныхДанныхУчетаВремениСотрудников, у которого есть измерение ДокументОснование, составного типа. Добавила в тип свой документ - стало считать. Интересно, кто-нибудь сталкивался? Почему-то у всех отписавшихся в теме все работало... Может, поменялся релиз?

P.S. Использую релиз 3.0.25.109

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

Stas

  • Новичок
  • *
  • Сообщений: 1
Re: ЗУП 3.0 Специалист Билет 2
« Ответ #23 : Октябрь 10, 2016, 02:44:57 pm »
Никак не могу понять куда лучше писать данные о времени? В регистр "ДанныеТабельногоУчетаРабочегоВремениСотрудников" или "ДанныеИндивидуальныхГрафиковСотрудников"?
В чем разница между ними?
Результат расчета получается вроде как одинаковый...



yariksuray

  • Пользователь
  • **
  • Сообщений: 34
Re: ЗУП 3.0 Специалист Билет 2
« Ответ #24 : Ноябрь 03, 2016, 12:46:57 pm »
Никак не могу понять куда лучше писать данные о времени? В регистр "ДанныеТабельногоУчетаРабочегоВремениСотрудников" или "ДанныеИндивидуальныхГрафиковСотрудников"?
В чем разница между ними?
Результат расчета получается вроде как одинаковый...

Плановые данные в данной задаче пишем в РН "ДанныеИндивидуальныхГрафиковСотрудников", так как этот регистр предназначен для регистрации плановых данных, а документ "Отгул" должен вытеснять введенные  данные в РН "ДанныеИндивидуальныхГрафиковСотрудников", так как человек не работал в день отгула и для этого мы отгулы пишем в РН "ДанныеТабельногоУчетаРабочегоВремениСотрудников", т. е. фиксируем факт отгула.
« Последнее редактирование: Ноябрь 03, 2016, 12:48:50 pm от yariksuray »

ВиталийЧебан

  • Проверенный
  • ***
  • Сообщений: 106
  • ФИО: Виталий Чебан
Re: ЗУП 3.0 Специалист Билет 2
« Ответ #25 : Ноябрь 13, 2016, 05:19:49 pm »
Мой вариант решения.

Считаю что регистр "ДанныеТабельногоУчетаРабочегоВремениСотрудников" использовать в этой задаче нельзя, иначе типовой Табель уже не ввести.
Тем более нельзя использовать регистр "ДанныеИндивидуальныхГрафиковСотрудников", так как регистрируем фактическое время, а не плановое.

Документ "Данные пропускной системы" должен делать движения по типовым регистрам
  • ДанныеОперативногоУчетаРабочегоВремениСотрудников
  • ДниЧасыОтгулов
Ну и собственный регистр добавил "ВремяДляРасчетаОтгулов", в котором храню время работы в кислотном цеху до накопления целых 4-х часов, после чего делаю движения в "ДниЧасыОтгулов", а из "ВремяДляРасчетаОтгулов" списываю.

Движения по первому регистру
РегистрируемыеДанныеОВремени = ДанныеОВремени(ТаблицаПосещений);
УчетРабочегоВремени.ПроверитьРегистрируемыеДанныхОВремени(Ссылка, РегистрируемыеДанныеОВремени, Отказ, Истина, ПериодРегистрации);
УчетРабочегоВремени.ЗарегистрироватьРабочееВремяСотрудников(Движения, РегистрируемыеДанныеОВремени, ПериодРегистрации);
Код подсмотрен в документе РаботаСверхурочно.
.
Для каждого сотрудника + дня делаем два движения, первое по новому виду времени - Справочники.ВидыИспользованияРабочегоВремени.РаботаВКислотномЦеху, добавить заполнение этого элемента в процедуру Справочники.ВидыИспользованияРабочегоВремени.СоздатьВидыИспользованияРабочегоВремениПоНастройкам(), заполнение делать по аналогии с элементом "Вахта", и вызвать эту процедуру из внешней обработки.
Второе движение по виду времени Явка, количество часов = 12 - количество часов РаботаВКислотномЦеху.

По второму регистру - УчетРабочегоВремени.ЗарегистрироватьДниЧасыОтгуловСотрудников.
Примеры использования в типовых документах.

При таком походе - в документе Табель красота.


Документ "ОтгулЗаРаботуВКислотномЦехе" делает движения по регистру "ДанныеСостоянийСотрудников".
Предварительно нужно добавить элемент Перечисление.СостоянияСотрудника.ОтгулЗаРаботуВКислотномЦехе, а также элемент Справочники.ВидыИспользованияРабочегоВремени.ОтгулЗаРаботуВКислотномЦехе, с заполнением в модуле менеджера (по аналогии с предыдущим добавленным элементом, заполнение делать по аналогии с элементом "Дополнительные выходные дни (оплачиваемые)").

Затем добавленный вид времени привязать к добавленному состоянию сотрудника в процедуре УчетРабочегоВремени.ЗапросВТСоответствиеСостоянийВидамУчетаВремени. Нужно в запрос добавить
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| ЗНАЧЕНИЕ(Перечисление.СостоянияСотрудника.ОтгулЗаРаботуВКислотномЦехе),
| &ОтгулЗаРаботуВКислотномЦехе

Ну и еще расход по регистру "ДниЧасыОтгулов" процедурой УчетРабочегоВремени.ЗарегистрироватьИПроверитьОстаткиДниЧасыОтгуловСотрудников.

В режиме Предприятия создать начисление "Доплата за работу в кислотном цеху"
Начисление выполняется Только если введен вид учета времени "Работа в кислотном цеху"
Формула "ВремяВЧасах * ТарифнаяСтавкаЧасовая * 50/100"
Начисление выполняется "Дополнительная оплата за уже оплаченное время".

Создать начисление "Оплата отгула за работу в кислотном цеху"
Начисление выполняется Только если введен вид учета времени "Отгул за работу в кислотном цехе"
Формула "ВремяВДнях * ТарифнаяСтавкаЧасовая * 12"
Начисление выполняется "За работу полную смену в пределах нормы времени".

Также, не забудьте добавить созданные документы в составной тип реквизита ДокументОснование у регистров сведений ПараметрыЗарегистрированныхДанныхУчетаВремениСотрудников и ДанныеСостоянийСотрудников.

Отчет прикреплен. Сделан на основании отчета УнифицированнаяФормаТ13 (получение времени отработанного в кислотном цеху).
Можно было по простому использовать данные регистра ДанныеОперативногоУчетаРабочегоВремениСотрудников, но в таком случае, корректировки времени, внесенные вручную в табель, не попадут в отчет. Поэтому использовал Представления_ДанныеУчетаВремениИСостоянийСотрудников (что потребовало использования ПриКомпоновкеРезультата, код взял из отчета УнифицированнаяФормаТ13 + мелкая доработка). Так же нужно обязательно задавать период в отчете, иначе не будет данных по отработанному времени (нюанс типового отчета УнифицированнаяФормаТ13).

Update: Грянина сказала господину alres писать движения данных пропускной системы в ДанныеТабельногоУчетаРабочегоВремениСотрудников (похоже её документ Табель не интересует). Несмотря на это, считаю что писать в ДанныеОперативногоУчета намного корректнее. Решайте сами.
« Последнее редактирование: Ноябрь 14, 2016, 10:54:22 am от ВиталийЧебан »

ddelphknn

  • Новичок
  • *
  • Сообщений: 4
Re: ЗУП 3.0 Специалист Билет 2
« Ответ #26 : Июль 24, 2018, 11:03:09 am »
Подскажите, пожалуйста.
Если писать в табель одновременно и явку (по 12 часов) и работу в цеху, то явка в итоге разве не должна задвоиться на количество часов в цеху?

NikZagVit

  • Новичок
  • *
  • Сообщений: 7
  • ФИО: Николай
Re: ЗУП 3.0 Специалист Билет 2
« Ответ #27 : Август 29, 2018, 10:41:17 am »
Ребята, а стоит ли связывать механизм отгулов (согласно билету) с типовым механизмом отгулов?
В этом случае нет необходимости вести регистр ДниЧасыОтгулов, и вообще решение упрощается.

серж

  • Пользователь
  • **
  • Сообщений: 93
  • Билеты: https://expert.chistov.pro/public/1127069/
Re: ЗУП 3.0 Специалист Билет 2
« Ответ #28 : Август 29, 2018, 10:06:22 pm »
Ребята, а стоит ли связывать механизм отгулов (согласно билету) с типовым механизмом отгулов?
В этом случае нет необходимости вести регистр ДниЧасыОтгулов, и вообще решение упрощается.
да, стоит. Цель экзамена не спроектировать реальную практическую задачу, а показать умение использовать типовые механизмы конфигурации. Зачем плодить лишние регистры, константы и справочники если можно использовать типовой. В описании решения указываем, что есть типовой регистр, и в целях упрощения будем его использовать и все.

2mugik

  • Новичок
  • *
  • Сообщений: 5
  • ФИО: 2mugik
Re: ЗУП 3.0 Специалист Билет 2
« Ответ #29 : Октябрь 08, 2018, 06:50:01 am »
Мне все-таки кажется что отгул тоже можно запихнуть в табель(ну или в оперативное время) и не связываться с состояниями сотрудников.

NikZagVit

  • Новичок
  • *
  • Сообщений: 7
  • ФИО: Николай
Re: ЗУП 3.0 Специалист Билет 2
« Ответ #30 : Октябрь 10, 2018, 09:34:34 am »
Мне все-таки кажется что отгул тоже можно запихнуть в табель(ну или в оперативное время) и не связываться с состояниями сотрудников.
Лучше не в табель, а в оперативное время. А состояние все таки необходимо т.к. если за вторую половину месяца сотрудник не отработает ни одного часа в цеху то данные об отгуле не попадут в расчет ЗП (если он взял отгул во второй половине).

2mugik

  • Новичок
  • *
  • Сообщений: 5
  • ФИО: 2mugik
Re: ЗУП 3.0 Специалист Билет 2
« Ответ #31 : Октябрь 11, 2018, 09:02:02 am »
Мне все-таки кажется что отгул тоже можно запихнуть в табель(ну или в оперативное время) и не связываться с состояниями сотрудников.
Лучше не в табель, а в оперативное время. А состояние все таки необходимо т.к. если за вторую половину месяца сотрудник не отработает ни одного часа в цеху то данные об отгуле не попадут в расчет ЗП (если он взял отгул во второй половине).

Эти два времени друг от друга не зависят, поэтому думаю ты неправ.

Maria_G

  • Новичок
  • *
  • Сообщений: 3
Re: ЗУП 3.0 Специалист Билет 2
« Ответ #32 : Февраль 05, 2019, 11:57:37 am »
Всем добрый день.

У меня релиз 3.1.5.99. Имеются следующие вопросы:
 
 1. Если писать в табель (или индивидуальный график) часы отработанные в кислотном цехе, то на эти дни не начисляется явка (на оставшиеся часы). Получается, что мне надо смотреть на график работы и добавлять в индивидуальный график на этот день еще и явку. Хотя в ВР стоит "Доп. оплата за ранее оплаченное время". Есть еще какие-то настройки, или все считали эти часы? Не увидела их подсчет в коде и комментариях.

 2. По условию задачи отгулы вроде оплачиваются как рабочий 12-тичасовой день по соотв. тарифу. Стандартный отгул так не оплачивается. В РН ДниЧасыОтгулов вида расчета нет. Так зачем надо писать данные в этот регистр? 

alsygaev

  • Пользователь
  • **
  • Сообщений: 42
  • ФИО: Евгений Алсыгаев
Re: ЗУП 3.0 Специалист Билет 2
« Ответ #33 : Май 06, 2019, 09:50:11 am »
Всем привет. Кто в теме по второму билету, может экзаменатора устроить такая реализация?
Документ - ДанныеПропускнойСистемы. В документ вносится информация по дате и времени входа и выхода в кислотный цех в разрезе номеров пропусков сотрудников.
Номера пропусков хранятся в справочнике СправочникПропусковСотрудников. Связь между справочниками пропусков и сотрудников производится через РегистрСведений - РегистрСправочниковПропусков.
При проведении документ делает движения в регистрах ДанныеОперативногоУчетаРабочегоВремениСотрудников, ВремяДляРасчетаОтгулов и ДниЧасыОтгулов.
Регистр накопления ВремяДляРасчетаОтгулов необходим для накапливания часов проведенных в кислотном цехе. Движение в регистр ДниЧасыОтгулов делается при условии что, остаток накопленных часов у сотрудника в регистре ВремяДляРасчетаОтгулов больше 4 часов на дату проведения. При записи в регистр ДниЧасыОтгулов в регистре ВремяДляРасчетаОтгулов создается запись Расхода на 4 часа.
Единственный косяк Для создания записи расхода в регистре ВремяДляРасчетаОтгулов и записи прихода в регистре ДниЧасыОтгулов документ нужно проводить два раза. Кто может помочь решить эту проблему?
Отгул создается ТИПОВЫМ документом ОТГУЛ. При создании документа у сотрудника автоматически проставляются накопленные часы отгулов из регистра ДниЧасыОтгулов.

alsygaev

  • Пользователь
  • **
  • Сообщений: 42
  • ФИО: Евгений Алсыгаев
Re: ЗУП 3.0 Специалист Билет 2
« Ответ #34 : Май 06, 2019, 12:55:52 pm »
При решении задачи обнаружил, что при расчете зарплаты не учитываются дни явки, когда были работы в кислотном цеху, долго ломал голову почему так. Ковырял начисление, время работы и пр. Пока не пришел к простому решению. При проведении документа в регистре ДанныеОперативногоУчетаРабочегоВремениСотрудников создавались записи по времени Явка и ВремяРаботыВКислотномЦеху. После этого расчет стал корректным. Количество часов по Явке это разница между плановым количеством за вычетом часов проведенных в кислотном цеху.

alsygaev

  • Пользователь
  • **
  • Сообщений: 42
  • ФИО: Евгений Алсыгаев
Re: ЗУП 3.0 Специалист Билет 2
« Ответ #35 : Май 07, 2019, 10:26:18 am »
Решение задачи 2. Народ, покритикуйте пожалуйста. Решение во вложении. Мне не жалко. Делал на Зарплата и управление персоналом КОРП, редакция 3.1 (3.1.7.128)
Отчет пока не делал, т.к. непонятно подойдет реализация начисления для экзамена.

alsygaev

  • Пользователь
  • **
  • Сообщений: 42
  • ФИО: Евгений Алсыгаев
Re: ЗУП 3.0 Специалист Билет 2
« Ответ #36 : Май 24, 2019, 12:15:41 pm »
Решение Билета 2 с Отчетом. Цель сдать экзамен на ТРИ. Подойдет такое решение для трояка? )))

VAAngelov

  • Пользователь
  • **
  • Сообщений: 23
  • Дорогу осилит идущий
  • ФИО: Ангелов Виталий Алексеевич
Re: ЗУП 3.0 Специалист Билет 2
« Ответ #37 : Июнь 03, 2019, 06:00:44 pm »
Прикладываю свое переработанное решение на основе решения пользователя mkanaev. И прикладываю описание решения(пользователь mkanaev)

Pifagor

  • Новичок
  • *
  • Сообщений: 5
Re: ЗУП 3.0 Специалист Билет 2
« Ответ #38 : Октябрь 30, 2019, 10:48:12 pm »
Решение задачи 2. Народ, покритикуйте пожалуйста. Решение во вложении. Мне не жалко. Делал на Зарплата и управление персоналом КОРП, редакция 3.1 (3.1.7.128)
Отчет пока не делал, т.к. непонятно подойдет реализация начисления для экзамена.

Привет! Скажи пожалуйста, у тебя остался этот релиз.?

Aleshka

  • Пользователь
  • **
  • Сообщений: 13
Re: ЗУП 3.0 Специалист Билет 2
« Ответ #39 : Август 20, 2020, 02:11:11 pm »
Добрый день.
Специалисты ЗУП. Прошу Вас пояснить следующие моменты:
1)  Какая база используется на экзамене «Демо» версия или база на типовой конфигурации. Какой сейчас релиз?
2) Где брали консоль запросов?
3) Еще, очень прошу, приведите Ваше описания решения, которое указали при удаленном решении.

Коллеги!
Может кто заморачивался и cможет подсказать.
При решении билета возникает проблема по первой части: в задаче сказано «Дважды в месяц данные пропускной системы передаются для обработки в бухгалтерию».
И так:
1) заведен вид времени «Работа в кислотном цеху», где основной вид времени «Явка», буквенный код "КЦ".
2) добавлен документ «Данные пропускной системы», делающий движение в РН «ДанныеОперетивногоУчетаРабочегоВремениСотрудников», РН «ДниЧасыОтгулов» и РН «__НакоплениеЧасовДляОтгулов» (последние два к проблеме отношение не имеют).

Внимание вопрос:

Если в месяце проведен один документ «Данные пропускной системы», то в табеле формируются корректные данные, если два, тогда получаем увеличение часов явки на количество Рабочего времени = 12, для дней, где зафиксированы часы «Работы в кислотном цеху» предыдущим документом «Данные пропускной системы», записи в РН ДанныеОперетивногоУчетаРабочегоВремениСотрудников» не задвоены

Копии экрана во вложении

Процедура ОбработкаПроведения(Отказ, РежимПроведения)

//очищаем движения
ПроведениеСервер.ПодготовитьНаборыЗаписейКРегистрацииДвижений(ЭтотОбъект);
Движения.Записать();
ДанныеДляПроведения = ДанныеДляПроведения();

// РН ДанныеОперативногоУчетаРабочегоВремениСотрудников
УчетРабочегоВремени.ПроверитьРегистрируемыеДанныхОВремени(Ссылка, ДанныеДляПроведения.ДанныеОВремени, Отказ, Истина);
УчетРабочегоВремени.ЗарегистрироватьРабочееВремяСотрудников(Движения, ДанныеДляПроведения.ДанныеОВремени, Месяц);

// Отгулы
УчетРабочегоВремениРасширенный.ЗарегистрироватьДниЧасыОтгуловСотрудников(Движения, ДанныеДляПроведения.ДанныеОбОтгулах);

// __НакоплениеЧасовДляОтгулов
Движения.__НакоплениеЧасовДляОтгулов.Записывать = Истина;
Для Каждого ТекСтрокаДанные Из ДанныеДляПроведения.ДанныеОЧасахДляОтгулов Цикл
Движение = Движения.__НакоплениеЧасовДляОтгулов.Добавить();
ЗаполнитьЗначенияСвойств(Движение, ТекСтрокаДанные);
КонецЦикла;

КонецПроцедуры


NeLena43

  • Новичок
  • *
  • Сообщений: 4
Re: ЗУП 3.0 Специалист Билет 2
« Ответ #40 : Август 27, 2020, 11:54:57 pm »
Укажите вид времени "Вахта", чтобы не увеличивало "Рабочее время"