Студопедия — Если ВыборкаРезультата.НайтиСледующий(СтруктураНомер) Тогда
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Если ВыборкаРезультата.НайтиСледующий(СтруктураНомер) Тогда






ЗаписьРегистра.Результат = ВыборкаРезультата.База * (10/100);

Сообщить(" Выполнен расчет " + ЗаписьРегистра.Регистратор + " - "

+ ЗаписьРегистра.ВидРасчета + " " + ЗаписьРегистра.Сотрудник,);

КонецЕсли;

КонецЦикла;

КонецЕсли;

 

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

 

Сумму начисленной премии мы рассчитываем как 10% от рассчитанной оплаты по окладу.

Запустим 1С: Предприятие в режиме отладки и проверим правильность работы процедуры расчета.

Отменим проведение документа Начисления сотрудникам №3 и перепроведем документы Начисления сотрудникам №1 и №2. Регистр расчета Начисления должен выглядеть следующим образом (рис. 17.15):

Рисунок 17.15 ― Записи регистра Начисления

Гусакову и Деловому начислена премия в размере 10% от суммы начисления по окладу.

Проведем документ Начисление сотрудникам №3, а затем №1 и №2. Состояние регистра изменится следующим образом (рис. 17.16):

Рисунок 17.16 ― Записи регистра Начисления

 

В результате невыхода Гусакова на работу сумма оплаты по окладу будет уменьшена и соответствующим образом уменьшится начисленная ему премия.

 

6. Создание отчета Начисления сотрудникам

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

Создадим в конфигураторе новый объект конфигурации Отчет. Назовем его НачисленияСотрудникам.

Создадим основную схему компоновки данных отчета, добавим новый набор данных запрос, откроем конструктор запроса.

Выберем таблицу регистра расчета Начисления (рис. 17.17).

Рисунок 17.17 ― Состав полей таблицы Начисления

 

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

Рисунок 17.18 ― Выбранные поля

 

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

Рисунок 17.19 ― Зададим псевдонимы полей

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

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

Рисунок 17.20 ― Структура отчета

 

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

Создание схемы компоновки данных закончено. Запустим 1С: Предприятие в режиме отладки.

В результате работы отчета мы получим следующую таблицу (рис. 17.21):

Рисунок 17.21 ― Отчет НачисленияСотрудникам

 

 

7. Выполнение перерасчета записей регистра расчета

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

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

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

Рисунок 17.22 ― Командная панель формы отчета НачисленияСотрудникам

 

В обработчик события нажатия кнопки вставим текст вызова процедуры перерасчета, очистки табличного поля и вывода нового результата (листинг 17.8):

 

Листинг 17.8. Текст обработчика события нажатия кнопки

Процедура ДействияФормыПерерасчитать(Кнопка)

 

ПерерасчитатьНачисления(ПланыВидовРасчета.ОсновныеНачисления.Оклад);

ПерерасчитатьНачисления(ПланыВидовРасчета.ОсновныеНачисления.Премия);

ЭлементыФормы.Результат.Очистить();

ОтчетОбъект.СкомпоноватьРезультат(ЭлементыФормы.Результат, ДанныеРасшифровки);

 

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

 

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

 

Листинг 17.9. Процедура перерасчета начислений

Процедура ПерерасчитатьНачисления(ТребуемыйВидРасчета) Экспорт

 

// Здесь следует выбрать из набора записей перерасчета

// записи в следующей последовательности:

// записи документа1 для сотрудников из списка,

// записи документа2 для сотрудников из списка,

// и т. д.

 

Запрос = Новый Запрос(

" ВЫБРАТЬ

| НачисленияПерерасчет.ОбъектПерерасчета,

| НачисленияПерерасчет.Сотрудник

|ИЗ

| РегистрРасчета.Начисления.Перерасчет КАК НачисленияПерерасчет

|

|ГДЕ

| НачисленияПерерасчет.ВидРасчета = & ТребуемыйВидРасчета

|

|ИТОГИ ПО

| НачисленияПерерасчет.ОбъектПерерасчета");

 

Запрос.УстановитьПараметр(" ТребуемыйВидРасчета", ТребуемыйВидРасчета);

СписокСотрудников = Новый СписокЗначений;

 

// Перебрать группировку по регистратору.

ВыборкаПоРегистратору = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

Пока ВыборкаПоРегистратору.Следующий() Цикл

Регистратор = ВыборкаПоРегистратору.ОбъектПерерасчета;

 

// Перебрать группировку по сотрудникам

// для выбранного регистратора

// и создать список сотрудников.

ВыборкаПоСотрудникам = ВыборкаПоРегистратору.Выбрать();

СписокСотрудников.Очистить();

Пока ВыборкаПоСотрудникам.Следующий() Цикл

СписокСотрудников.Добавить(ВыборкаПоСотрудникам.Сотрудник);

КонецЦикла;

 

// Получить набор записей регистра расчета

// для выбранного регистратора.

НаборЗаписей = РегистрыРасчета.Начисления.СоздатьНаборЗаписей();

НаборЗаписей.Отбор.Регистратор.Значение = Регистратор;

НаборЗаписей.Прочитать();

 

РасчитатьНачисления(НаборЗаписей, ТребуемыйВидРасчета, СписокСотрудников);

НаборЗаписей.Записать(, Истина);

 

// Очистить перерасчитанные записи в перерасчете.

НаборЗаписейПерерасчета = РегистрыРасчета.Начисления.Перерасчеты.Перерасчет.СоздатьНаборЗаписей();

НаборЗаписейПерерасчета.Отбор.ОбъектПерерасчета.Значение = Регистратор;

НаборЗаписейПерерасчета.Записать();

КонецЦикла;

 

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

 

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

Запустим 1С: Предприятие и проверим, как выполняется перерасчет записей регистра расчета.

Отменим проведение всех документов Начисления сотрудникам и проведем документ Начисления сотрудникам №1 и затем №2. Сформируем отчет Начисления сотрудникам (рис. 17.23).

Рисунок 17.23 ― Отчет Начисления сотрудникам

Теперь откроем документ Начисления сотрудникам №1, изменим оклад Гусакова на 10000 и проведем документ. В отчете НачисленияСотрудникам нажмем кнопку Перерасчитать. Будет выполнен перерасчет начисления премии Гусакову и Деловому (рис. 17.24).

Рисунок 17.24 ― Окно служебных сообщений

 

Результат работы отчета будет содержать новые значения премии Гусакова (рис. 17.25).

 

Рисунок 17.25 ― Отчет Начисления сотрудникам

 

И, наконец, проведем документ Начисления сотрудникам №3 и нажмем Перерасчитать в отчете НачисленияСотрудникам. Снова будет произведен перерасчет оклада и премии Гусакова (рис. 17.26).

Рисунок 17.26 ― Окно служебных сообщений

 

А данные отчета будут содержать актуальные значения начисления оклада и премии (рис. 17.27).

Рисунок 17.27 ― Отчет Начисления сотрудникам

 

8. Создание отчета Диаграмма начислений

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

Рисунок 17.28 ― Форма отчета ДиаграммаНачислений

 

Откроем модуль формы отчета и в обработчик события Нажатие кнопки Сформировать вставим заготовку запроса (листинг 17.10).

 

Листинг 17.10. Обработчик события Нажатие кнопки

Процедура КнопкаСформироватьНажатие(Элемент)

 

Запрос = Новый Запрос;

Запрос.Текст =

;

 

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

 

Откроем конструктор запроса и выберем виртуальную таблицу регистра расчета Начисления.ФактическийПериодДействия. Из этой таблицы выберем следующие поля (рис. 17.29):

§ Сотрудник;

§ ВидРасчета;

§ ПериодДействияНачало;

§ ПериодДействияКонец;

§ Результат;

§ Регистратор;

§ Регистратор.Представление.

 

Рисунок 17.29 ― Выбранные поля

 

Все, запрос готов. Теперь нажмем OK и после текста запроса добавим в процедуру следующий текст (листинг 17.11):

 

Листинг 17.11 Изменение обработчика события Нажатие кнопки

Процедура КнопкаСформироватьНажатие(Элемент)

 

Запрос = Новый Запрос;

Запрос.Текст =

" ВЫБРАТЬ

| НачисленияФактическийПериодДействия.Сотрудник,

| НачисленияФактическийПериодДействия.ВидРасчета,

| НачисленияФактическийПериодДействия.ПериодДействияНачало,

| НачисленияФактическийПериодДействия.ПериодДействияКонец,

| НачисленияФактическийПериодДействия.Результат,

| НачисленияФактическийПериодДействия.Регистратор,

| НачисленияФактическийПериодДействия.Регистратор.Представление

|ИЗ

| РегистрРасчета.Начисления.ФактическийПериодДействия КАК НачисленияФактическийПериодДействия";

 

ВыборкаРезультата = Запрос.Выполнить().Выбрать();

Диаграмма = ЭлементыФормы.ДиаграммаГанта;







Дата добавления: 2014-11-10; просмотров: 1505. Нарушение авторских прав; Мы поможем в написании вашей работы!



Кардиналистский и ординалистский подходы Кардиналистский (количественный подход) к анализу полезности основан на представлении о возможности измерения различных благ в условных единицах полезности...

Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...

Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...

Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...

ЛЕЧЕБНО-ПРОФИЛАКТИЧЕСКОЙ ПОМОЩИ НАСЕЛЕНИЮ В УСЛОВИЯХ ОМС 001. Основными путями развития поликлинической помощи взрослому населению в новых экономических условиях являются все...

МЕТОДИКА ИЗУЧЕНИЯ МОРФЕМНОГО СОСТАВА СЛОВА В НАЧАЛЬНЫХ КЛАССАХ В практике речевого общения широко известен следующий факт: как взрослые...

СИНТАКСИЧЕСКАЯ РАБОТА В СИСТЕМЕ РАЗВИТИЯ РЕЧИ УЧАЩИХСЯ В языке различаются уровни — уровень слова (лексический), уровень словосочетания и предложения (синтаксический) и уровень Словосочетание в этом смысле может рассматриваться как переходное звено от лексического уровня к синтаксическому...

В эволюции растений и животных. Цель: выявить ароморфозы и идиоадаптации у растений Цель: выявить ароморфозы и идиоадаптации у растений. Оборудование: гербарные растения, чучела хордовых (рыб, земноводных, птиц, пресмыкающихся, млекопитающих), коллекции насекомых, влажные препараты паразитических червей, мох, хвощ, папоротник...

Типовые примеры и методы их решения. Пример 2.5.1. На вклад начисляются сложные проценты: а) ежегодно; б) ежеквартально; в) ежемесячно Пример 2.5.1. На вклад начисляются сложные проценты: а) ежегодно; б) ежеквартально; в) ежемесячно. Какова должна быть годовая номинальная процентная ставка...

Выработка навыка зеркального письма (динамический стереотип) Цель работы: Проследить особенности образования любого навыка (динамического стереотипа) на примере выработки навыка зеркального письма...

Studopedia.info - Студопедия - 2014-2024 год . (0.013 сек.) русская версия | украинская версия