Имя: Пароль:
1C
1С v8
СКД: внешния функция в параметре
0 Медведик
 
26.08.11
10:53
Доброго всем времени суток.

В СКД отчета добавляю параметр, декларирую выражение для него как ТестоваяФункция(&ОпределенныйПараметр).

ТестоваяФункция декларирована в общем модуле, постфикс "Экспорт" на месте. Модуль пробовал делать модальным, перед функцией пробовал директивы &НаКлиенте и сервере.

Но при формировании отчета (в режиме УФ) все равно вываливается ошибка, дескать ТестоваяФункция не найдена.

Прошу подсказать, где собака порылась в моем случае.
1 mikecool
 
26.08.11
10:55
общий модуль - галка Сервер установлена?
2 Медведик
 
26.08.11
10:56
(1) Поставил галки и клиента, и сервера.
3 Wingless
 
26.08.11
10:57
Каким еще "модальным"?
4 Медведик
 
26.08.11
10:58
(3) Глобальным, конечно, опечатался, мои извинения.
5 Wingless
 
26.08.11
11:01
Проверять лень, предположу, что нужен неглобальный серверный модуль, директивы &НаКлиенте &НаСервере в нем не нужны.
6 Медведик
 
26.08.11
11:02
(5) Проверил, не взлетело.
7 qwerty09
 
26.08.11
11:03
(6) скрин покажи где написал выражение
8 Медведик
 
26.08.11
11:09
9 Медведик
 
26.08.11
11:12
10 Медведик
 
26.08.11
11:24
Нашел в гугле ссылки, должно все работать.

http://1cskd.ru/2011/04/function-use-in-skd/
http://devtrainingforum.v8.1c.ru/forum/thread.jsp?id=565008&sortt=m.left_ns&print=1

Прошу идеи, в чем может быть проблема.
11 qwerty09
 
26.08.11
11:32
вроде должно работать... отладчиком смотрел значение аргумента, получаемого функцией? и что функция возвращает?
12 Медведик
 
26.08.11
11:35
(11) Посмотрю сейчас, но как это связано с ненахождением функции?
13 qwerty09
 
26.08.11
11:39
блин, чет я гоню, пардон...
в выражении функцию общего модуля надо указывать как: ИмяМодуля.ВозвратП
14 qwerty09
 
26.08.11
11:44
(12) невнимательно (0) прочитал, думал что просто данные в отчет не выводятся...
ну, на крайняк можно юзать что то типа:
ПараметрСКД = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти("СписокСчетов");
ПараметрСКД.Значение = ТвояФункцияПолученияПараметра();
ПараметрСКД.Использование=Истина;
если функция очень специфична и нужна только для данного отчета
15 Медведик
 
26.08.11
11:49
(14) Т.е. внешние функции можно использовать ТОЛЬКО при дополнительном программном их указании в компоновщике?
16 GenV
 
26.08.11
11:50
(0) По идее для УП галки Сервер достаточно. Если модуль не глобальный нужно указывать его префикс. Если программно выводишь проверь что указано использование функций в инициализации процессора.
17 Медведик
 
26.08.11
11:52
(16) Вывожу НЕ программно, в том-то и дело.
Префикс с названием модуля (не глобального) перед названием функции в выражении параметра попробовал, все равно не находит.
При этом из модуля (сделал кнопку для тестов) функция спокойно вызывается.
18 qwerty09
 
26.08.11
11:54
(14) нет! это как один из вариантов
(17) модуль неглобальный и серверный?
19 GenV
 
26.08.11
11:55
(17) Управляемое приложение? Файловая?
20 Медведик
 
26.08.11
11:57
(18) Для теста, помимо серверного, сделал модуль еще и клиентским. Если делаю модуль глобальным, даже префикс в виде имени модуля становится не нужен, что естественно.
21 Медведик
 
26.08.11
11:57
(19) Да, да. Изучаю УФ, балуюсь.
22 Медведик
 
26.08.11
12:15
Если с общего модуля убрать галку клиента, то функция становится недоступна из формы отчета, что логично.

Но СКД не видит функцию и при доступности модуля клиенту, т.е. списать проблему на предположение, что СКД видит только клиентские функции - не получается.
23 qwerty09
 
26.08.11
12:48
что то тут не чисто... сообщение об ошибке сюда скопируй.
24 Медведик
 
26.08.11
12:53
(23) Да, запнулся на ровном месте.
Ошибка звучит дословно как Функция не найдена "РаботасСКД.ВозвратП",
где РаботасСКД - общий модуль с функцией,
ВозвратП - собственно функция
25 qwerty09
 
26.08.11
13:18
попробуй директиву перед функцией убери, если она там есть...
в объявлении функции и в ее вызове нет латинских букв часом?
26 Медведик
 
26.08.11
13:22
(25) Директиву убрал после (5), название функции из модуля копировал в выражение.
В названии только русские символы.
27 Wingless
 
26.08.11
13:31
проверил, действительно вылетает
Скорее всего, функции общих модулей можно использовать только в вычисляемых полях.
28 Медведик
 
26.08.11
13:34
(27) от печаль... Спасибо, что уделили внимание моей проблеме.
29 sereban
 
26.08.11
13:35
Функции общих модулей можно использовать в выражениях представления и в выражениях на закладке ресурсов. Это 100%. Про параметры не знаю
30 GenV
 
26.08.11
13:37
(28) Пробовал для УП на файловой и клиент-серверной для обычного отчета, как для глобального так и общего модуля с галкой сервер. Значение функции помещается в параметр.
31 Медведик
 
26.08.11
13:39
(30) Именно в "выражение" для вычисления значения?
32 GenV
 
26.08.11
13:40
(31) Да. Простейшая функция возвращающая текст. Добавил параметр в выбранные поля текст появился в табличке.
33 Медведик
 
26.08.11
13:45
(32) Напишите, пожалуйста, следующую информацию:
1) как декларирована функция в модуле;
2) параметры модуля (глобальный ли, сервер/клиент);
3) "выражение" для вычисления параметра с применением функции.
34 GenV
 
26.08.11
14:12
Модуль "_Тестовый". Галка только Сервер (Если ставить галку глобальный в параметре нет префикса "_Тестовый.")

Функция Тестовая() Экспорт
Возврат "Тест";
КонецФункции

С параметром тоже работает

Выражение: Тестовая() или _Тестовый.Тестовая()
С параметром: Тестовая(&Параметр1) или _Тестовый.Тестовая(&Параметр1)
2 + 2 = 3.9999999999999999999999999999999...