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

Тема в разделе "1C и всё что с ней связано", создана пользователем postnn, 3 мар 2008.

  1. postnn

    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 КБ
      Просмотров:
      10
  2. jcnby

    jcnby Гость

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


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

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


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

    NomadSoul Гость

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

    jcnby Гость

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

    postnn Гость

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

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

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

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


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

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

    КонецЕсли;
    КонецЕсли;
    КонецЦикла;
     
Загрузка...

Поделиться этой страницей