Показано с 1 по 1 из 1
Тема: Расчетные задачи
-
18.11.2021, 20:12 #1
- Регистрация
- 18.11.2021
- Сообщений
- 3
- Сказал(а) спасибо
- 0
- Поблагодарили 1 раз в 1 сообщении
Расчетные задачи
Добрый день! Не могу решить расчетные задачи в общем и по частям. Текст задания: Список сотрудников хранится в справочнике "Физические лица". Каждому сотруднику полагается оклад, рассчитываемый как индивидуальная месячная ставка оклада, умноженная на количество отработанных дней и делённая на количество рабочих дней в месяце.
Сотрудникам могут выплачиваться разовые премии (подарки) произвольной величины. Расчётчик просто указывает размер подарка для данного сотрудника в документе начисления зарплаты.
Также сотрудникам выплачивается премия, зависящая от величины основных выплат (оклад + подарок) за прошлый месяц и вычисляемая как определённый процент от этой суммы. Величина процента указывается в документе начисления зарплаты.
Первую часть задания (оклад) я решил. Вот код:
Код:Движения.ОсновныеНачисления.Записывать=Истина; Для Каждого ТекСтрокаНачисления Из Начисления Цикл Движение=Движения.ОсновныеНачисления.Добавить(); Движение.Сторно=Ложь; ЗаполнитьЗначенияСвойств (Движение, ТекСтрокаНачисления); Движение.ВидРасчета=ТекСтрокаНачисления.ВидНачисления; Движение.ПериодДействияНачало=ТекСтрокаНачисления.ДатаНачала; Движение.ПериодДействияКонец=КонецДня (ТекСтрокаНачисления.ДатаОкончания); Движение.ПериодРегистрации=Дата; КонецЦикла; Движения.ОсновныеНачисления.Записать(); //{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА // Данный фрагмент построен конструктором. // При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!! //Расчет Оклада Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ РАЗЛИЧНЫЕ | ОсновныеНачисленияДанныеГрафика.Сотрудник КАК Сотрудник, | ОсновныеНачисленияДанныеГрафика.НомерСтроки КАК НомерСтроки, | ЕСТЬNULL(ОсновныеНачисленияДанныеГрафика.ЗначениеДниПериодДействия, 0) КАК ПланДни, | ЕСТЬNULL(ОсновныеНачисленияДанныеГрафика.ЗначениеДниФактическийПериодДействия, 0) КАК ФактДни |ПОМЕСТИТЬ ВТ_ДанныеГрафика |ИЗ | РегистрРасчета.ОсновныеНачисления.ДанныеГрафика( | Регистратор = &Ссылка | И ВидРасчета = &Оклад) КАК ОсновныеНачисленияДанныеГрафика | |ИНДЕКСИРОВАТЬ ПО | Сотрудник |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ВТ_ДанныеГрафика.НомерСтроки КАК НомерСтроки, | ЕСТЬNULL(ОкладыСотрудниковСрезПоследних.Оклад, 0) КАК Оклад, | ВТ_ДанныеГрафика.ПланДни КАК ПланДни, | ВТ_ДанныеГрафика.ФактДни КАК ФактДни |ИЗ | ВТ_ДанныеГрафика КАК ВТ_ДанныеГрафика | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ОкладыСотрудников.СрезПоследних( | &Дата, | Сотрудник В | (ВЫБРАТЬ | ВТ_ДанныеГрафика.Сотрудник КАК Сотрудник | ИЗ | ВТ_ДанныеГрафика КАК ВТ_ДанныеГрафика)) КАК ОкладыСотрудниковСрезПоследних | ПО ВТ_ДанныеГрафика.Сотрудник = ОкладыСотрудниковСрезПоследних.Сотрудник"; Запрос.УстановитьПараметр("Дата", НачалоМесяца(Дата)); Запрос.УстановитьПараметр("Оклад", ПланыВидовРасчета.ОсновныеНачисления.Оклад); Запрос.УстановитьПараметр("Ссылка", Ссылка); РезультатЗапроса = Запрос.Выполнить(); ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать(); Для Каждого СтрДвижение Из Движения.ОсновныеНачисления Цикл Если ВыборкаДетальныеЗаписи.Оклад=0 Тогда Сообщить ("Оклад для сотрудника "+ВыборкаДетальныеЗаписи.Сотрудник+" не задан"); Отказ=Истина; КонецЕсли; ВыборкаДетальныеЗаписи.Сбросить(); ВыборкаДетальныеЗаписи.НайтиСледующий(СтрДвижение.НомерСтроки, "НомерСтроки"); СтрДвижение.Факт=ВыборкаДетальныеЗаписи.ФактДни; СтрДвижение.Результат=ВыборкаДетальныеЗаписи.ФактДни/ВыборкаДетальныеЗаписи.ПланДни*ВыборкаДетальныеЗаписи.Оклад; КонецЦикла; //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА Движения.ОсновныеНачисления.Записать(,Истина);
-
Пользователь сказал cпасибо:
klugg (30.09.2022)
Похожие темы
-
Расчетные листки
от postlogic в разделе Конфигурирование, программирование 1С - ПредприятиеОтветов: 2Последнее сообщение: 06.05.2014, 07:31 -
расчетные листки
от postlogic в разделе Общие вопросы по 1С - БухгалтерииОтветов: 0Последнее сообщение: 12.03.2014, 03:24
Социальные закладки