gifts2017

Расчет тарифов

Опубликовал Марина Новикова (marinanima) в раздел Программирование - Практика программирования

Отчет по расчету ЗП в зависимости от категории сотрудников.


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

Если ЭтаФорма.Подразделение = Справочники.Подразделения.ПустаяСсылка() Тогда
Вопрос("Для формирования отчета необходимо выбрать производственный участок!", РежимДиалогаВопрос.ОК);
Возврат;
КонецЕсли;

ТабДокумент = ЭтаФорма.ЭлементыФормы.ТД;
Макет = Отчеты.ОтчетРасчетаТарифовДок.ПолучитьМакет("Макет");

ТабДокумент.Очистить();

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

ЗапросПроизводительности.УстановитьПараметр("Подразделение", ЭтаФорма.Подразделение);
ЗапросПроизводительности.УстановитьПараметр("Организация", ЭтаФорма.Организация);
ЗапросПроизводительности.УстановитьПараметр("Период", ЭтаФорма.ДатаОтчета);

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

ЗапросКатегорий = Новый Запрос();
ЗапросКатегорий.Текст = "ВЫБРАТЬ
| ДоговорнаяЗарплата.Категория КАК Категория,
| ДоговорнаяЗарплата.Сумма
|ИЗ
| РегистрСведений.ДоговорнаяЗарплата КАК ДоговорнаяЗарплата
|
|УПОРЯДОЧИТЬ ПО
| Категория";

ВыборкаКатегорий = ЗапросКатегорий.Выполнить().Выбрать();


//Вывод шапки отчета
тШапкаОтчета = Макет.ПолучитьОбласть("ШапкаОтчета|Данные");
тШапкаОтчета.Параметры["Подразделение"] = ЭтаФорма.Подразделение;

ТабДокумент.Вывести(тШапкаОтчета);

//Вывод шапки таблицы
тШапкаДанные = Макет.ПолучитьОбласть("ШапкаТаблицы|Данные");
ТабДокумент.Вывести(тШапкаДанные);
тШапкаКатегория = Макет.ПолучитьОбласть("ШапкаТаблицы|Категория");
Пока ВыборкаКатегорий.Следующий() Цикл
тШапкаКатегория.Параметры["Категория"] = ВыборкаКатегорий.Категория;
ТабДокумент.Присоединить(тШапкаКатегория);
КонецЦикла;

//Формирование отчета
тСтрокаДанные = Макет.ПолучитьОбласть("СтрокаТаблицы|Данные");
тСтрокаКатегория = Макет.ПолучитьОбласть("СтрокаТаблицы|Категория");
Пока ВыборкаПроизводительности.Следующий() Цикл

//Вывод номенклатуры
тСтрокаДанные.Параметры["Номенклатура"] = ВыборкаПроизводительности.Номенклатура;
ТабДокумент.Вывести(тСтрокаДанные);

//Проход по выборке категорий (для вывода тарифа по каждой категории)
ВыборкаКатегорий.Сбросить();
Пока ВыборкаКатегорий.Следующий() Цикл
тСтрокаКатегория.Параметры["Сумма"] = Окр(ВыборкаКатегорий.Сумма / ВыборкаПроизводительности.Производительность, 2);
ТабДокумент.Присоединить(тСтрокаКатегория);
КонецЦикла;

КонецЦикла;
ТабДокумент.Показать();

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

Процедура ПриОткрытии()

Организация = УправлениеПользователями.ПолучитьЗначениеПоУмолчанию(глЗначениеПеременной("глТекущийПользователь"), "ОсновнаяОрганизация");
ДатаОтчета = ТекущаяДата();

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

Процедура ПодразделениеНачалоВыбораИзСписка(Элемент, СтандартнаяОбработка)

СтандартнаяОбработка = Ложь;

СписокПодразделений = Новый СписокЗначений;

Запрос = Новый Запрос();
Запрос.Текст =
"ВЫБРАТЬ
| Подразделения.Ссылка КАК Ссылка
|ИЗ
| Справочник.Подразделения КАК Подразделения
|ГДЕ
| Подразделения.Родитель = &Родитель
|
|УПОРЯДОЧИТЬ ПО
| Подразделения.Наименование";


ПРУчастки = Справочники.Подразделения.НайтиПоНаименованию("Производственные участки");
Если ПРУчастки = неопределено Тогда
ПРУчастки = Справочники.Подразделения.ПустаяСсылка();
КонецЕсли;

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

Пока Выборка.Следующий() Цикл
//Сообщить(Выборка.Ссылка);
СписокПодразделений.Добавить(Выборка.Ссылка, Выборка.Ссылка.Наименование);
КонецЦикла;

ВыбранноеЗначение = ЭтаФорма.ВыбратьИзСписка(СписокПодразделений, Элемент);

Если ВыбранноеЗначение <> Неопределено Тогда
Элемент.Значение = ВыбранноеЗначение.Значение;
КонецЕсли;

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

 

 

 

 

 

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
Расчет тарифов
.erf 9,72Kb
30.07.13
1
.erf 9,72Kb 1 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Игорь Гладкий (smooth) 31.07.13 15:42
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа