Имя: Пароль:
1C
 
Проблема с ПолучитьДанныеГрафика(...ФактическийПериодДействия)
0 SSSSSSS
 
28.09.04
14:38
В случае, когда ПериодРегистрации не совпалает с периодом действия, конструкция

Болел = Движение.ПолучитьДанныеГрафика(ВидПериодаРегистраРасчета.ФактическийПериодДействия);

возвражает 0. Например при том, что ПериодРегистрации равен 01/03/2004, ДатаНачала - 05/02/2004, а ДатаОкончания - 10/02.2004...

Остальные данные получаю нормально... Что я делаю неправильно? Текст прораммы приводится...

С уважением, Владимир.

Процедура ОбработкаПроведения(Отказ, Режим)
   
Движение = Движения.Начисления.Добавить();
Движение.ПериодРегистрации       = ПериодРегистрации;
Движение.ПериодДействияНачало    = ДатаНачала;
Движение.ПериодДействияКонец    = ДатаОкончания;
Движение.ВидРасчета      = ПланыВидовРасчета.Начисления.Больничный;
Движение.БазовыйПериодНачало    = ДобавитьМесяц(Движение.ПериодДействия, -1);
Движение.БазовыйПериодКонец    = Движение.ПериодДействия - 1;
   
Движение.Сотрудник         = Сотрудник;
Движение.Подразделение       = Подразделение;
Движение.Должность       = Должность;
   
Движение.График          = График;

Движения.Начисления.Записать();
   
Доп = Движения.Начисления.ПолучитьДополнение();
   
Для Каждого Строка Из Доп Цикл
                              Движение = Движения.Начисления.Добавить();
     Движение.ПериодРегистрации       = Строка.ПериодРегистрации;
     Движение.ПериодДействияНачало    = Строка.ПериодДействияНачалоСторно;
     Движение.ПериодДействияКонец    = Строка.ПериодДействияКонецСторно;  
     Движение.ВидРасчета          = Строка.ВидРасчета;
     Движение.Сотрудник             = Строка.Сотрудник;
     Движение.Подразделение          = Строка.Подразделение;
     Движение.Должность             = Строка.Должность;
     Движение.График             = Строка.График;
     Движение.ПараметрРасчета       = Строка.ПараметрРасчета;
     Движение.Сторно             = Истина; // Строка.Сторно;
  КонецЦикла;
   
  Движения.Начисления.Записать();
   
  Ресурсы = Новый Массив(1);
  Ресурсы[0] = "Начисления.Результат";
   
  Отбор = Новый Структура();
  Отбор.Вставить("Регистратор",Ссылка); //  ссылка);

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

        ДанныеПоДеньгам         = Движение.ПараметрРасчета;
        ДолжноБытьОтработано   = ДолжноБытьОтработано[0].Значение;
        ДнейНаБольничном      = Болел[0].Значение;
     
        Движение.Результат = ДанныеПоДеньгам / ДолжноБытьОтработано * ДнейНаБольничном;
         
     КонецЕсли;    
  КонецЦикла;    
   
  Движения.Начисления.Записать();
//   Движения.Начисления.Записать(Истина,Истина);
   
  Для Каждого Движение Из Движения.Начисления Цикл
     
//      Индекс = Движения.Начисления.Индекс(Движение);
     
     Если Движение.ВидРасчета = ПланыВидовРасчета.Начисления.Больничный Тогда
         
        ДанныеБазы          = Движение.ПолучитьБазу(Ресурсы,Измерения);
        ОтработаноПоБазе    = Движение.ПолучитьДанныеГрафика(ВидПериодаРегистраРасчета.БазовыйПериод);
        Болел             = Движение.ПолучитьДанныеГрафика(ВидПериодаРегистраРасчета.ФактическийПериодДействия);

        ДанныеБазыДеньги       = ДанныеБазы[0].Результат;
        ОтработаноДнейПоБазе    = ОтработаноПоБазе[0].Значение;
        ДнейНаБольничном       = Болел[0].Значение;
     
        Движение.Результат = ДанныеБазыДеньги / ОтработаноДнейПоБазе * ДнейНаБольничном;
   
     КонецЕсли;    
  КонецЦикла;    
  Движения.Начисления.Записать(Истина,Истина);
   
КонецПроцедуры
1 Буряков Олег
 
28.09.04
14:56
Ну, не работает... Я вот тоже думаю, что делать в таких случаях? Волшебник молчит. Может в УПП есть что?
2 Волшебник
 
28.09.04
14:58
(0) Не надо приводить столько много исходного текста.
3 SSSSSSS
 
28.09.04
15:43
Так все таки из за чего Движение.ПолучитьДанныеГрафика(ВидПериодаРегистраРасчета.ФактическийПериодДействия);
возвращает 0 в случае, когда ПериодРегистрации не совпалает с периодом действия?

Например при ПериодРегистрации равен 01/03/2004, ДатаНачала - 05/02/2004, а ДатаОкончания - 10/02.2004... и все начинает работать, достаточно сделать ПериодРегистрации равен 01/02/2004...  

Остальные данные получаю нормально...

С уважением, Владимир.
4 SSSSSSS
 
28.09.04
16:10
Отбой... Ошибка найдена...

С уважением, Владимир.