• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

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

    Запись на курс до 25 апреля. Получить промодоступ ...

1c 8-0 . Вытеснение видов расчетов

  • Автор темы postnn
  • Дата начала
P

postnn

Проблема такая. Работаю в пустой конфигурации
Создано 2 вида расчета. Оклад и Невыход, вытесняющий оклад.
Документ "НачисленияСотрудникам" формирует записи в регистре расчетов в зависимости от вида расчета
По окладу период заносится с 01.03.08 - 31-03.08.
Далее ввожу невыход , например с 02.03 по 04.03., но вытеснения не происходит, у оклада не меняется период с 01.03.08-02.03.08 и 05.03.08-31.03.08.
Что не сделала? Или надо писать программно?
 

Вложения

  • 1Cv8.rar
    166,2 КБ · Просмотры: 131
J

jcnby

Код:
Если Причина=Перечисление.ПричинаОтсутствия.Прогул Тогда
ЖрнЗарплата.ВвестиРасчет(Сотрудник,ВидРасчета.Прогул,Начало,Окончание,0);
ИначеЕсли Причина=Перечисление.ПричинаОтсутствия.Отгул Тогда
ЖрнЗарплата.ВвестиРасчет(Сотрудник,ВидРасчета.Отгул,Начало,Окончание,0);
ИначеЕсли Причина=Перечисление.ПричинаОтсутствия.НеВыяснено Тогда
ЖрнЗарплата.ВвестиРасчет(Сотрудник,ВидРасчета.Невыход,Начало,Окончание,0);
ИначеЕсли (Причина=Перечисление.ПричинаОтсутствия.ВынужденныйПростой) или (Причина=Перечисление.ПричинаОтсутствия.ПростойПоМЗ) Тогда 
ЖрнЗарплата.ВвестиРасчет(Сотрудник,ВидРасчета.Простой,Начало,Окончание,0);
КонецЕсли;
Если Начало < ЖрнЗарплата.НачалоТекущегоПериода() Тогда
Перерасчет();
КонецЕсли;

если нету причин - то просто ЖрнЗарплата.ВвестиРасчет(Сотрудник,ВидРасчета.Простой,Начало,Окончание,0);


ну и галочки в вытеснии

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


Код:
Если (ЖрнЗарплата.ВидРасч.ВходитВГруппу(ГруппаРасчетов.УчитыватьДни)=1) или (ЖрнЗарплата.ВидРасч=ВидРасчета.Прогул) Тогда
Дней=Дней+ЖрнЗарплата.Дни;
КонецЕсли;
При расчете ты зпл - ты ведь учитоваешь дни.
 
N

NomadSoul

Вообще-то в вопросе идет речь о 8-й версии 1С, а не о 7.7 :)
 
J

jcnby

аааааааа - кто-то ж на форуме писал что "расчета" не коснулись ищзменения?
Сорри...............если оказался не прав.............................
Про 1с8 я профан)))) :) так что заранее извеняюся...
 
P

postnn

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

ЗаписьРегистра.ИсходныеДанные/ВыборкаРЕзультата.Норма)*ВыборкаРЕзультата.Факт;

Если ТребуемыйВидРасчета=ПланыВидовРасчета.ОсновныеНачисления.Оклад Тогда
//СписокСотрудников.ВыбратьЭлемент();

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


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

СтруктураНомер= Новый Структура("НомерСтроки");
СтруктураНомер.НомерСтроки=ЗаписьРЕгистра.Номерстроки;
ВыборкаРезультата.Сбросить();
Если ВыборкаРезультата.НайтиСледующий(СтруктураНомер) Тогда
Если Выборкарезультата.Норма=0 Тогда
сообщить("Вид расчета оклад-нет рабочих дней в заданном периоде",);
ЗаписьРегистра.Результат=0;
Иначе
Сообщить (ЗаписьРегистра.ИсходныеДанные);
Сообщить(ВыборкаРЕзультата.Норма);
Сообщить(ВыборкаРЕзультата.Факт);
//Сообщить ("Выполнен расчет по "+ ЗаписьРегистра.Сотрудник,);
ЗаписьРегистра.Результат=(ЗаписьРегистра.ИсходныеДанные/ВыборкаРЕзультата.Норма)*ВыборкаРЕзультата.Факт;

КонецЕсли;
КонецЕсли;
КонецЦикла;
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!