Имя: Пароль:
1C
1С v8
Преобразование значения к типу Число не может быть выполнено
,
0 Sanek1756
 
18.12.12
20:59
Доброе время суток форумчане.
Не могу найти проблему!

Выдает такую ошибку:
Ошибка при выполнении обработчика - 'ОбработкаПроведения'
по причине:
{ОбщийМодуль.ПроведениеРасчетов.Модуль(31)}: Преобразование значения к типу Число не может быть выполнено
                   ЗаписьРегистра.Результат=(ЗаписьРегистра.ИсходныеДанные
Help me, please!

Листинг программы:
Процедура РассчитатьНачисления(НаборЗаписейРегистра, ТребуемыйВидРасчета, СписокСотрудников) Экспорт
   Регистратор = НаборЗаписейРегистра.Отбор.Регистратор.Значение;
   //Рассчитать первичные записи.
   Если ТребуемыйВидРасчета = ПланыВидовРасчета.ОсновныеНачисления.Оклад Тогда
       Запрос = Новый Запрос;
       Запрос.Текст =
       "ВЫБРАТЬ
       |НачисленияДанныеГрафика.ЗначениеПериодДействия КАК Норма,
       |НачисленияДанныеГрафика.ЗначениеФактическийПериодДействия КАК Факт,
       |НачисленияДанныеГрафика.НомерСтроки КАК НомерСтроки
       |ИЗ
       |РегистрРасчета.Начисления.ДанныеГрафика(Регистратор = &Регистратор И
       |ВидРасчета = &ВидРасчета И Сотрудник В (&СписокСотрудников))
       |КАК НачисленияДанныеГрафика";
       Запрос.УстановитьПараметр("Регистратор", Регистратор);
       Запрос.УстановитьПараметр("ВидРасчета", ТребуемыйВидРасчета);
       Запрос.УстановитьПараметр("СписокСотрудников", СписокСотрудников);
       ВыборкаРезультата = Запрос.Выполнить().Выбрать();
       Для каждого ЗаписьРегистра Из НаборЗаписейРегистра Цикл
           СтруктураНомер = Новый Структура("НомерСтроки");
           СтруктураНомер.НомерСтроки = ЗаписьРегистра.НомерСтроки;
           ВыборкаРезультата.Сбросить();
           Если ВыборкаРезультата.НайтиСледующий(СтруктураНомер) Тогда
               Если ВыборкаРезультата.Норма = 0 Тогда
                   Сообщение = Новый СообщениеПользователю;
                   Сообщение.Текст = "ВидРасчета:Оклад - Нет рабочих дней в заданном периоде";
                   Сообщение.Сообщить();
                   ЗаписьРегистра.Результат = 0;
               Иначе
                   //Рассчитать оклад по фактическому периоду и исходным данным.
                   ЗаписьРегистра.Результат=(ЗаписьРегистра.ИсходныеДанные
                   /ВыборкаРезультата.Норма)*ВыборкаРезультата.Факт;
                   Сообщение = Новый СообщениеПользователю;
                   Сообщение.Текст = "Выполнен расчет" + ЗаписьРегистра.Регистратор + "-" +
                   ЗаписьРегистра.ВидРсчета + "-" +
                   ЗаписьРегистра.Сотрудник;
                   Сообщение.Сообщить();
               КонецЕсли;
           КонецЕсли;
       КонецЦикла;
       //Расчитать вторичные записи.
   ИначеЕсли ТребуемыйВидРасчета = ПланыВидовРасчета.ОсновныеНачисления.Премия Тогда
       Запрос = Новый Запрос;
       Запрос.Текст =
       "ВЫБРАТЬ
       |НачисленияБазаНачисления.РезультатБаза КАК База,
       |НачисленияБазаНачисления.НомерСтроки КАК НомерСтроки
       |ИЗ
       |РегистрРасчета.Начисления.БазаНачисления(&ИзмеренияОсновного,
       |&ИзмеренияБазового,,Регистратор = &Регистратор И ВидРасчета = &ВидРасчета И
       |Сотрудник В (&СписокСотрудников)) КАК НачисленияБазаНачисления";
       Измер = Новый Массив(1);
       Измер[0] = "Сотрудник";
       Запрос.УстановитьПараметр("ИзмеренияОсновного", Измер);
       Запрос.УстановитьПараметр("ИзмеренияБазового", Измер);
       Запрос.УстановитьПараметр("Регистратор", Регистратор);
       Запрос.УстановитьПараметр("ВидРасчета", ТребуемыйВидРасчета);
       Запрос.УстановитьПараметр("СписокСотрудников", СписокСотрудников);
       ВыборкаРезультата = Запрос.Выполнить().Выбрать();
       Для Каждого ЗаписьРегистра Из НаборЗаписейРегистра Цикл
       СтруктураНомер = Новый Структура("НомерСтроки");
       СтруктураНомер.НомерСтроки = ЗаписьРегистра.НомерСтроки;
       ВыборкаРезультата.Сбросить();
           Если ВыборкаРезультата.НайтиСледующий(СтруктураНомер) Тогда
               ЗаписьРегистра.Результат = ВыборкаРезультата.База * (10/100);
               Сообщение = Новый СообщениеПользователю;
               Сообщение.Текст = "ВыполненРасчет" +
               ЗаписьРегистра.Регистратор
               + "-" + ЗаписьРегистра.ВидРасчета
               + "-" + ЗаписьРегистра.Сотрудник;
               Сообщение.Сообщить();
           КонецЕсли;
       КонецЦикла;
   КонецЕсли;
КонецПроцедуры
1 ДенисЧ
 
18.12.12
21:01
Наверное, там не число, а, например, NULL
2 Sanek1756
 
18.12.12
21:03
Куда поконкретней значение NULL поставить?
3 Fragster
 
гуру
18.12.12
21:03
учу пользоваться отладчиком. дорого.
4 ДенисЧ
 
18.12.12
21:03
(3) Я дешевле :-)
5 Ork
 
18.12.12
21:04
+(0)
Внимание вопрос : угадайте что написано в строке №31.

И что б не расслаблялись - вопрос по 1С в секии "наука".
6 shuhard
 
18.12.12
21:04
(0)[Не могу найти проблему]
проблемы сами тебя найдут
7 Sanek1756
 
18.12.12
21:11
(4) Подскажи куда поставить NULL.
8 Undefined vs NULL
 
18.12.12
21:16
NULL он такой, он не Неопределено
9 Sanek1756
 
18.12.12
21:30
Undefined vs NULL
Как это понимать?
10 Ork
 
18.12.12
21:40
(9) Будь мужиком - покажи уже народу 35-ю строчку.
11 Sanek1756
 
18.12.12
21:51
35-ю строку я уже и так заметил.
Подправьте кусок листинга пожалуйста кому не сложно.
12 AndyTLT63
 
18.12.12
21:54
Прочитай про язык запросов и функцию ЕСТЬNULL()
13 AndyTLT63
 
18.12.12
21:56
Вообщем тебе запрос надо поменять на
|ЕСТЬNULL(НачисленияДанныеГрафика.ЗначениеПериодДействия,0) КАК Норма,
14 Sanek1756
 
18.12.12
21:59
Спасибо большое!!!
15 Sanek1756
 
18.12.12
22:02
Тольяттинские в помощи друг другу не откажут)
16 DrShad
 
18.12.12
22:04
бугага, бывал я в Вашем Тольятти - большая деревня
17 Lys
 
18.12.12
22:04
Предвижу следующую ветку.

Тема - Помогите! Ошибка: деление на 0!
18 AndyTLT63
 
18.12.12
22:07
(16) Насчет деревни - согласен в плане работы для программистов и низкого уровня ЗП. А так город хороший. Волга рядом ..
19 AndyTLT63
 
18.12.12
22:08
(15) Своих всегда выручим..=)
20 DrShad
 
18.12.12
22:11
(19) у Вас есть  некий  aka АлександрМатросов и где он?
21 AndyTLT63
 
18.12.12
22:13
(20) незнаю такого...
22 Sanek1756
 
18.12.12
22:13
Ты рассчитываешь на то что он появится в этом форуме?
23 DrShad
 
18.12.12
22:16
мне интересно когда вы успели образоваться в Тольятти?
24 AndyTLT63
 
18.12.12
22:18
Вопрос не понятен
25 DrShad
 
18.12.12
22:18
вот и я не пойму
26 Sanek1756
 
18.12.12
22:20
Lys, может тогда подправишь?
Ошибку не выдает, но и результат не рассчитывает.
27 AndyTLT63
 
18.12.12
22:25
Ты судя по всему задачу на спеца решаешь? не
?
28 AndyTLT63
 
18.12.12
22:25
А то очень похоже..
29 Sanek1756
 
18.12.12
22:28
По книге прохожу, а тут косяк за косяком.
И от этого автомат по 1с зависит)
30 DrShad
 
18.12.12
22:28
ладно, думаю вы ты тут и без меня разберетесь кто что решает
31 acsent
 
18.12.12
22:29
Разве период действия не дата?
32 AndyTLT63
 
18.12.12
22:29
Вообщем у тебя база начисления судя по всему либо равна 0, либо ты передаешь неправильные параметры в запрос
33 AndyTLT63
 
18.12.12
22:33
Это если премию рассчитываешь
34 AndyTLT63
 
18.12.12
22:35
А если оклад то нужно смотреть связь регистра расчета с графиком... и связь измерений с графиком... Да и вообще проверить правильно ли заполенны сами графики. МОжет они просто не заполенны
35 AndyTLT63
 
18.12.12
22:37
Найди книгу "Учебный центр " "Решение оперативных задач" вот там все хорошо описано. ТОчное название книги не помню. Должно помочь
36 Sanek1756
 
18.12.12
22:38
Ладно, спасибо.
Ошибка? Это не ошибка, это системная функция.