Имя: Пароль:
1C
1С v8
Преобразование значения к типу Число не может быть выполнено
,
0 Wswolf
 
27.08.12
14:35
Добрый всем день.
занимаюсь самообучением 1С предприятие 8.2 п окниге М.Г.Радченко.
столкнулся с такой проблемой:
при расчете з/п выдает слидующую ошибку:
Преобразование значения к типу Число не может быть выполнено
                   ЗаписьРегистра.Результат=(ЗаписьРегистра.ИсходныеДанные/ВыборкаРезультата.Норма)*ВыборкаРезультата.Факт;

Текст программы:
Процедура РассчитатьНачисления(НаборЗаписейРегистра,ТребуемыйВидРасчета,СписокСотрудников)Экспорт
   
   Регистратор=НаборЗаписейРегистра.Отбор.Регистратор.Значение;
   
   //Рассчитать первичные записи.
   Если ТребуемыйВидРасчета=ПланыВидовРасчета.ОсновныеНачисления.Оклад Тогда
       
       Запрос=Новый Запрос;
       Запрос.Текст=
       "Выбрать
       |НачисленияДанныеГрафика.ЗначениеПериодДействия КАК Норма,
       |НачисленияДанныеГрафика.ЗначениеФактическийПериодДействия КАК Факт,
       |НачисленияДанныеГрафика.НомерСтроки КАК НомерСтроки
       |ИЗ
       |РегистрРасчета.Начисления.ДанныеГрафика(Регистратор=&Регистратор И
       |ВидРасчета=&ВидРасчета И Сотрудник В(&СписокСотрудников))
       |КАК НачисленияДанныеГрафика";
       
       Запрос.УстановитьПараметр("Регистратор",Регистратор);
       Запрос.УстановитьПараметр("ВидРасчета",ТребуемыйВидРасчета);
       Запрос.УстановитьПараметр("СписокСотрудников",СписокСотрудников);
       
       ВыборкаРезультата=Запрос.Выполнить().Выбрать();
       
       Для Каждого ЗаписьРегистра Из НаборЗаписейРегистра Цикл
           СтруктураНомер=Новый Структура("НомерСтроки");
           СтруктураНомер.НомерСтроки=ЗаписьРегистра.НомерСтроки;
           ВыборкаРезультата.Сбросить();
           Если ВыборкаРезультата.НайтиСледующий(СтруктураНомер) Тогда
               Если ВыборкаРезультата.Норма=0 Тогда
                   Сообщение=Новый СообщениеПользователю;
                   Сообщение.Текст="Вид рассчета:Оклад-Нет рабочих дней в заданном периоде";
                   Сообщение.Сообщить();
                   ЗаписьРегистра.Результат=0;
               Иначе
                   //Рассчитать оклад по фактическому периоду и исходным данным
                   
                   
                   ЗаписьРегистра.Результат=(ЗаписьРегистра.ИсходныеДанные/ВыборкаРезультата.Норма)*ВыборкаРезультата.Факт;
                               
                   Сообщение=Новый СообщениеПользователю;
                   Сообщение.Текст="Выполнен расчет"+ЗаписьРегистра.Регистратор+"-"+ЗаписьРегистра.ВидРасчета+"-"+ЗаписьРегистра.Сотрудник;
                   Сообщение.Сообщить();
               КонецЕсли;
           КонецЕсли;
       КонецЦикла;    
       
       //Рассчитать вторичные записи
   ИначеЕсли ТребуемыйВидРасчета=ПланыВидовРасчета.ОсновныеНачисления.Премия Тогда
       
       Запрос=Новый Запрос;
       Запрос.Текст=
       "ВЫБРАТЬ
       |    НачисленияБазаНачисления.НомерСтроки КАК НомерСтроки,
       |    НачисленияБазаНачисления.РезультатБаза КАК База
       |ИЗ
       |    РегистрРасчета.Начисления.БазаНачисления(&ИзмеренияОсновного,&ИзмеренияБазового,,Регистратор=&Регистратор И ВидРасчета=&ВидРасчета И Сотрудник В(&СписокСотрудников))
       |КАК НачисленияБазаНачисления";
       
       Измер=Новый Массив(1);
       Измер[0]="Сотрудник";
       
       Запрос.УстановитьПараметр("ИзмеренияОсновного",Измер);
       Запрос.УстановитьПараметр("ИзмеренияБазового",Измер);
       Запрос.УстановитьПараметр("Регистратор",Регистратор);
       Запрос.УстановитьПараметр("ВидРасчета",ТребуемыйВидРасчета);
       Запрос.УстановитьПараметр("СписокСотрудников",СписокСотрудников);
       
       ВыборкаРезультата=Запрос.Выполнить().Выбрать();
       
       Для Каждого ЗаписьРегистра ИЗ НаборЗаписейРегистра Цикл
           СтруктураНомер=Новый Структура("НомерСтроки");
           СтруктураНомер.НомерСтроки=ЗаписьРегистра.НомерСтроки;
           Выборкарезультата.Сбросить();
           Если ВыборкаРезультата.НайтиСледующий(СтруктураНомер)Тогда
               ЗаписьРегистра.Результат=ВыборкаРезультата.База*(10/100);
               Сообщение=Новый СообщениеПользователю;
               Сообщение.Текст="Выполнен расчет"+ЗаписьРегистра.Регистратор+"-"+ЗаписьРегистра.ВидРасчета+"-"+ЗаписьРегистра.Сотрудник;
               Сообщение.Сообщить();
           КонецЕсли;
       КонецЦикла;
       
   КонецЕсли;    
КонецПроцедуры

самостоятельно разобраться к сожалению не смог. надеюсь на вашу помощ.
1 mikecool
 
27.08.12
14:35
неопределено
2 salvator
 
27.08.12
14:36
(0) Смотри на строку, в которой ошибка
3 Wswolf
 
27.08.12
14:37
Преобразование значения к типу Число не может быть выполнено
(ЗаписьРегистра.Результат=(ЗаписьРегистра.ИсходныеДанные/ВыборкаРезультата.Норма)*ВыборкаРезультата.Факт;)
(ошибка полностью)
4 Wswolf
 
27.08.12
14:38
смотрел подставлял в формулу вместо переменных числа, ошибку начинает выдавать на переменной ВыборкаРезультата.Норма
5 Wswolf
 
27.08.12
14:38
как можно исправить?
6 salvator
 
27.08.12
14:38
+(2) Либо ВыборкаРезультата.Норма либо ВыборкаРезультата.Факт имеет значение типа число
7 Рэйв
 
27.08.12
14:38
(3)Что то из полей запроса в выражении = NULL
8 Rovan
 
гуру
27.08.12
14:39
(3) деление на 0 ?
9 Рэйв
 
27.08.12
14:39
Используй ЕстьNULL(...) в запросе
10 salvator
 
27.08.12
14:39
(5) Использовать естьNull в запросе
11 Wswolf
 
27.08.12
14:41
ок щас попробую. спс
12 Aprobator
 
27.08.12
14:43
сдается мне что норма и факт - тип дата.
13 Aprobator
 
27.08.12
14:44
глядя вот на это:


       |НачисленияДанныеГрафика.ЗначениеПериодДействия КАК Норма, // не поверю что число
       |НачисленияДанныеГрафика.ЗначениеФактическийПериодДействия КАК Факт, // -//-
14 Aprobator
 
27.08.12
14:44
в теге ошщибся.


      |НачисленияДанныеГрафика.ЗначениеПериодДействия КАК Норма, // не поверю что число
      |НачисленияДанныеГрафика.ЗначениеФактическийПериодДействия КАК Факт, // -//-
15 shpioleg
 
27.08.12
14:46
(0) Отладчик сразу начинай изучать. Он лучший друг программиста 8.2
16 Wswolf
 
27.08.12
14:52
все справился.спасибо большое.
(помог NULL)
17 Wswolf
 
27.08.12
14:53
да в том то и дело что отладчик не выдавал ошибку. она вылетала непосредственно при проведении документа
18 artems
 
27.08.12
14:57
(17) остановка по ошибке помогает в таких случаях.
19 Aprobator
 
27.08.12
15:02
что то неладное тут с графиком явно.
20 Aprobator
 
27.08.12
15:03
по поводу (14) ошибся, Значение явно ресурс с типом Число.