Имя: Пароль:
1C
1С v8
Процедура с указанным именем не определена ФакториалР
0 sergqwert
 
01.03.21
14:20
В обработке возникает ошибка. ВнешняяОбработка.ФакториалЧисла.Форма.Форма.Форма(26,16)}: Процедура или функция с указанным именем не определена (ФакториалР)
    Сообщить("" + <<?>>ФакториалР(Объект.ЗаданноеЧисло) + " - Рекурсия: " + (ТекущаяДата()-ВремяНачало) + " сек."); (Проверка: Сервер). Как избавиться от этого?

&НаСервере
Процедура ВычислитьНаСервере()
    РассчитатьФакториал();
КонецПроцедуры

&НаКлиенте
Процедура Вычислить1(Команда)
    ВычислитьНаСервере();
КонецПроцедуры

&НаСервере
Процедура РассчитатьФакториал()
    
    Если Цел(Объект.ЗаданноеЧисло) <> Объект.ЗаданноеЧисло Тогда
        Сообщить("Задано не целое число!");
        Возврат;
    КонецЕсли;
    
    Если Объект.ЗаданноеЧисло < 0 Тогда
        Сообщить("Задано отрицательное число!");
        Возврат;
    КонецЕсли;

    ВремяНачало = ТекущаяДата();
    Сообщить("" + ФакториалР(Объект.ЗаданноеЧисло) + " - Рекурсия: " + (ТекущаяДата()-ВремяНачало) + " сек.");
    
КонецПроцедуры


В модуле обработки такая функция:

Перем СоответствиеФакториал Экспорт;

//рекурсия
&НаКлиенте
Функция ФакториалР(ЧислоN) Экспорт
    
    Результат = СоответствиеФакториал.Получить(ЧислоN);
    Если Результат <> Неопределено Тогда
        Возврат Результат;    
    КонецЕсли;
    
    Возврат ?(ЧислоN = 0, 1, ЧислоN * ФакториалР(ЧислоN - 1));
    
КонецФункции

СоответствиеФакториал = Новый Соответствие;
СоответствиеФакториал.Вставить(1,1);
1 ДенисЧ
 
01.03.21
14:23
А почему ты хочешь из формы вызвать модуль напрямую? Обычноформщик, чтоле?
2 Галахад
 
гуру
01.03.21
14:25
Ну и ФакториалР на клиенте
3 Вафель
 
01.03.21
14:33
зачем тут переход на сервер?