Отчет о начислениях сотрудникам



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

9. Создайте в конфигураторе новый объект конфигурации Отчет. Назовите его НачисленияСотрудникам. Создайте основную схему компоновки данных отчета, добавьте новый Набор данных – запрос, откройте конструктор запроса. Выберем таблицу регистра расчета Начисления. Из нее выберите следующие поля: Сотрудник, ВидРасчета, ПериодДействияНачало, ПериодДействияКонец, Регистратор, Результат.

На закладке Объединения/Псевдонимы определите следующие псевдонимы полей ПериодДействияНачало и ПериодДействияКонец как Начало и Окончание. На этом создание запроса закончено, нажмите ОK.

Перейдите на закладку Ресурсы и укажите, что должна быть рассчитана сумма по полю Результат.

После этого перейдите на закладку Настройки и создайте структуру отчета. Добавьте группировку по полю Сотрудник и в ней – подчиненную группировку детальных записей.

В качестве полей, выводимых в отчет, выберите поля ВидРасчета, Начало, Окончание, Регистратор и Результат. В результате окно настроек отчета должно иметь вид:

Рис. 19.4 Настройки отчета НачисленияСотрудникам

На закладке Сортировка укажите, что сортировка должна выполняться по возрастанию значения поля Сотрудник и Регистратор.

На закладке Другие настройки задайте заголовок отчета – Начисления сотрудникам. На этом создание схемы компоновки данных закончено.

В окне редактирования объекта конфигурации Отчет НачисленияСотрудникам на закладке подсистемы укажите, что отчет будет вызываться из подсистем РасчетЗарплаты и Бухгалтерия.

10. Запустите «1С:Предприятие» в режиме отладки. В командной панели раздела Расчет зарплаты выполните команду Начисления сотрудникам и сформируйте отчет.

Перерасчет

В алгоритме работы с данными расчета осталось одно узкое место – контроль актуальности данных, содержащихся в регистре расчета. Для того, чтобы определить, являются ли данные в регистре расчета актуальными использовался служебный отчет Перерасчет если отчет пуст или же требуется перерасчет.

Создайте специальную процедуру, которая будет определять, требуется ли перерасчет данных регистра расчета, и, если такая необходимость есть, выполнять перерасчет. Поскольку единственным способом получения итоговой информации о начислениях сотрудникам является отчет НачисленияСотрудникам, для вызова этой процедуры создайте форму этого отчета и добавьте в командную панель формы кнопку Перерассчитать, по которой будет выполняться перерасчет данных регистра.

11. Для этого в окне редактирования объекта конфигурации Отчет НачисленияСотрудникам перейдите на закладку Формы, нажмите кнопку открытия и создайте основную форму отчета.

Затем в правом верхнем окне редактора форм перейдите на закладку Команды создайте команду формы Перерассчитать. Далее установите Действие для этой команды. Для этого нажмите кнопку открытия в строке Действие. На запрос конфигуратора о типе обработчика команды ответьте, что нужно создать обработчик, выполняющийся на клиенте.

В модуле формы будет создан шаблон клиентской процедуры Перерассчитать(), в которую поместите вызов процедуры ПерерассчитатьНачисления() из общего модуля ПроведениеРасчетов.

Рис. 19.5 Листинг обработчика команды Перерассчитать

12. Саму процедуру перерасчета поместите в общем модуле ПроведениеРасчетов.

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

Рис. 19.6 Листинг процедуры перерасчета начислений

13. Вернитесь в форму отчета НачислениеСотрудникам. Перетащите мышью команду Перерассчитать в группу элементов формы ОсновнаяКоманднаяПанель. При этом в форме появится кнопка Перерассчитать, а связь кнопки с командой будет установлена автоматически.

14. Запустите «1С:Предприятие» и проверьте, как выполняется перерасчет записей регистра расчета. Отмените проведение всех документов Начисления сотрудникам и проведите документ Начисления сотрудникам № 1 и затем № 2. Сформируйте отчет Начисления сотрудникам.

Откройте документ Начисления сотрудникам № 1, изменим оклад мастера и проведите документ. В отчете Начисления сотрудникам нажмите кнопку Перерассчитать. Будет выполнен перерасчет начисления премии мастерам. Чтобы увидеть в отчете актуальные данные, нажмите кнопку Сформировать. Результат работы отчета будет содержать новые значения премии. Проведите документ Начисления сотрудникам № 3 и нажмите Перерассчитать в отчете Начисления сотрудникам. Снова будет произведен перерасчет оклада и премии.

Затем нажмите кнопку Сформировать. Данные отчета будут содержать актуальные значения начисления оклада и премии.


Дата добавления: 2019-07-15; просмотров: 202; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!