Имя: Пароль:
1C
1С v8
v8: Начисления Сотрудникам, ошибка при записи в регистр
0 Slk777
 
30.01.14
12:39
Здраствуйте уважаемые. У меня такая Проблема Делаю документ Начисления Сотрудникам При написании Общий Модуль Проведения Расчетов В Листинги Синтетических ошибок не обнаруженно. При Проведении документа Начисления сотрудникам выдает следующею ошибку. {ОбщийМодуль.ПроведениеРасчетов.Модуль(52)}: Преобразование значения к типу Число не может быть выполнено
                ЗаписьРегистра.Результат = (ЗаписьРегистра.ИсходныеДанные.
1 Slk777
 
30.01.14
12:40
Ищу ошибку в реквизитах, только не могу найти нужные... Я НУБ(
2 aka AMIGO
 
30.01.14
12:43
рекомендую научиться пользоваться отладчиком.
в нём можно посмотреть свойства реквизита регистра, и что ты в этот реквизит Регистра пытаешься записать
3 Slk777
 
30.01.14
12:46
СПС ТОЛЬко знать бы что это и как этим пользоватся
4 aka AMIGO
 
30.01.14
12:48
(3) формально всё описано в документации.. документация, надеюсь, доступна?
ЗЫ. обычно со знакомства с отладчиком и начинают "начинающие"
5 Slk777
 
30.01.14
12:50
Так отладка это Жолтый Кружочек с черным Плеей? ;) я всегда через него всё делаю..
6 aka AMIGO
 
30.01.14
12:51
(5) угу. и еще + точки останова, и + табло
7 Slk777
 
30.01.14
12:53
Я так понял ошибка в том что где то в реквизитах тип число не совпадает с тем что я сделал и возможно в ИсходныеДанные. Но по книге там ЧИсло 15 Точность 2
8 aka AMIGO
 
30.01.14
12:55
(7) в книге всего и всё правильно. а ты смотри, что у тебя в коде
9 Slk777
 
30.01.14
12:57
Иначе
                //Рассчитать оклад по фактическому периоду

                
                // и исходным данным.

                
                ЗаписьРегистра.Результат = (ЗаписьРегистра.ИсходныеДанные
                / ВыборкаРезультата.Норма)* ВыборкаРезультата.Факт;
                Сообщение = Новый СообщениеПользователю;
                Сообщение.Текст = "Выполнить расчет" + ЗаписьРегистра.Регистратор + "-" +
                ЗаписьРегистра.ВидРасчета + "-" +
                ЗаписьРегистра.Сотрудник;
                
                Сообщение.Сообщить();
                //////КонецЕсли;
10 Slk777
 
30.01.14
12:59
Я ошибок не нашол
11 aka AMIGO
 
30.01.14
13:02
точка останова:
http://gyazo.com/9e281ba3a777e5ea92b48d0f2e6f0298

Кнопка запуска Табло:
http://gyazo.com/78ea9e93cb87227639034bd4f297c0a0

окно табло:
http://gyazo.com/88ba41d2a95da9149008301f66cb9e9a

вот в этом окне и надо искать ошибки

Слова твои "не шашОл" надо заменить на "не увидел".. :)
12 Slk777
 
30.01.14
13:14
СПС
13 Slk777
 
30.01.14
13:17
Тоесть всё таки ошибка в коде? и Вы её нашли ?
14 aka AMIGO
 
30.01.14
13:27
для "найти" ошибку в коде в сабже и далее крайне мало информации.. Я так не могу.
тут есть ребята-телепаты, но я их что-то в списке пользователей ветки не вижу (
15 Slk777
 
30.01.14
13:30
Процедура РассчитатьНачисления(НаборЗаписейРегистра,ТребуемыйВидРасчета,СписокСОтрудников)Экспорт
    
    Регистратор = НаборЗаписейРегистра.Отбор.Регистратор.Значение;
    
    //Рассчитать первичные записи.
    Если ТребуемыйВидРасчета = ПланыВидовРасчета.ОсновныеНачисления.Оклад Тогда
        
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    НачисленияДанныеГрафика.ЗначениеПериодДействия КАК Норма,
                   |    НачисленияДанныеГрафика.ЗначениеФактическийПериодДействия КАК Факт,
                   |    НачисленияДанныеГрафика.НомерСтроки КАК НомерСтроки
                   |ИЗ
                   |    РегистрРасчета.Начисления.ДанныеГрафика(
                   |            Регистратор = &Регистратор
                   |                И ВидРасчета = &ВидРасчета
                   |                И Сотрудник В (&СписокСотрудников)) КАК НачисленияДанныеГрафика";
                  
                   Запрос.УстановитьПараметр("Регистратор",Регистратор);
                   Запрос.УстановитьПараметр("ВидРасчета",ТребуемыйВидРасчета);
                   Запрос.УстановитьПараметр("СписокСотрудников",СписокСотрудников);
                  
                   ВыборкаРезультата = Запрос.Выполнить().Выбрать();
                  
                          Для Каждого ЗаписьРегистра Из НаборЗаписейРегистра Цикл
               СтруктураНомер = Новый Структура("НомерСтроки");
               СтруктураНомер.НомерСтроки = ЗаписьРегистра.НомерСтроки;
               ВыборкаРезультата.Сбросить();
               Если ВыборкаРезультата.Норма = 0 Тогда
                   Сообщение = Новый СообщениеПользователю;
                   Сообщение.Текст = "ВидРасчета:Оклад - Нет рабочих дней в заданном переоде";
                  
                   Сообщение.Сообщить();
                   ЗаписьРегистра.Результат = 0;
                      Сообщение.Сообщить();
                ЗаписьРегистра.Результат = 0;
                
                //////    КонецЕсли;

                //////КонецЦикла;

                
                
            Иначе
                //Рассчитать оклад по фактическому периоду

                
                // и исходным данным.

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

                
                
            КонецЕсли;
        КонецЦикла;
        
        
        // Рассчитать вторичные записи.

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

а ТАК?
17 aka AMIGO
 
30.01.14
13:42
(15) и так у меня не выйдет ничего ( , надо иметь конфигурацию, и ключ, чтобы стартануть 8-ку.. у меня ни того, ни другого нет :(
18 SeraFim
 
30.01.14
13:48
Конфигурация-то какая? И версия?
Что-то у меня сомнения, что это типовая. На нетленку похоже
19 SeraFim
 
30.01.14
13:52
ЗначениеПериодДействия - чисто по названию похоже на дату


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

"ИсходныеДанные" (неизвестно, что там. Предположим, что оклад - число) делим на "Норму" (то есть на дату)
20 Slk777
 
30.01.14
13:55
версия 8.2 учебная версия
21 SeraFim
 
30.01.14
13:55
+(19) ай, нет, пардон. Это же регистр расчета, это стандартные названия для реквизитов.
22 Slk777
 
30.01.14
13:57
Конфигурация обыкнавенная не бухалтерия не чего такого
Ошибка? Это не ошибка, это системная функция.