Здравствуйте, делаю отчет на СКД, в котором создала вычисляемое поле, которое ссылается на общий модуль на Экспортную функцию, из которой вычисляется корень квадратный из одного из полей СКД. Так же добавлю, что СКд формирую программно, т.к. в параметрах необходимо добавлять много данных из различных полей, что нецелесообразно делать пользователю самому (параметры - ссылки на элементы справочников). В таком случае вычисляемое поле не работает, т.к. ругается на синтаксическую ошибку. Подскажите, как доработать тогда программно вычисляемое поле или это поле на выходе, как к нему обратиться, чтобы извлечь этот корень?
Ниже мое выражение в вычисляемом поле:

```1c
    Утечка*(Давление/1000) *опМодуль.КореньКвадратный(Диаметр*10)
```
---
А, так у вас программный вывод? А вы его не забыли инициализировать, случаем?

ПроцессорКомпоновкиДанных.Инициализировать (DataCompositionProcessor.Initialize)

Синтаксис:

Инициализировать(<Макет>, <ВнешниеНаборыДанных>, <ДанныеРасшифровки>, <ВозможностьИспользованияВнешнихФункций>)
---
В скд есть функция вычисление квадратного корня - Sqrt(Выражение)
Было бы проще если бы вы привели сам текст ошибки
---
Sqrt - как раз и высчитывается в опМодуль.КореньКвадратный.
---
А если заменить "опМодуль.КореньКвадратный()" на SQRT() то ошибки не будет?
У вас какая, кстати, платформа? Внешние функции только с определенной версии поддерживаются.
---
Ошибка исполнения отчета
по причине:
Ошибка при выполнении обработчика - 'ПриКомпоновкеРезультата'
по причине:
{Отчет.ПотериВоды_Диспетчерам.МодульОбъекта(45)}: Ошибка при вызове метода контекста (Вывести)

по причине:
Ошибка вывода результата
по причине:
Ошибка при выводе результата
по причине:
Ошибка получения данных
по причине:
Ошибка в выражении
по причине:
Синтаксическая ошибка "SQRT"
---
А это уже странно. Тупо ради интереса запилил себе в первый попавшийся отчет эту функцию, вот этот столбец:

Маржа

Корень из отрицательного числа
118,82
39,01
79,81
---
Это с выводом результата СКД программным образом, я так понимаю, если бы не было программного вывода, тогда СКД посчитала бы вычисляемое поле, но как быть в моем случае тогда?
---
На сколько я знаю, модуль должен быть глобальным для использования его функций во внешних отчетах.
Кстати не уточнили, отчет же внешний?
---
А, так у вас программный вывод? А вы его не забыли инициализировать, случаем?

ПроцессорКомпоновкиДанных.Инициализировать (DataCompositionProcessor.Initialize)

Синтаксис:

Инициализировать(<Макет>, <ВнешниеНаборыДанных>, <ДанныеРасшифровки>, <ВозможностьИспользованияВнешнихФункций>)
---
у меня была такая же проблема, помогло в при инициализации добавить параметр 4, т.е. <ВозможностьИспользованияВнешнихФункций> = Истина, и всё заработало.
спасибо!!
---
Модуль может быть и не глобальным и тогда к функции можно обратиться через имя модуля через точку. Отчет встроенный. Без программного вывода СКД, функция вызывается, но в моем случае программная передача параметров в отчет обязательна.
---
Всем спасибо, опытным путем и яростным поиском в Интернет (http://1cskd.ru/2011/04/function-use-in-skd/), было найдено решение:
Использование функций в СКД

В СКД можно использовать функции глобальных и неглобальных общих модулей в вычисляемых полях при условии что функция объявлена как экспортная.

Есть только маленькая тонкость при программном формировании отчета СКД.

Обычно, при инициализации процессора компоновки данных делают так:

ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки);
При таком формировании отчета вызова функций не произойдет. Что бы эту возможность включить нужно сделать так

ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,,,Истина);
---
Напишу сюда же в тему:
сделала вычисляемое поле с выражением - Утечка* опМодуль.КореньКвадратный(Давление)
Выдает ошибку:

Ему не нравится, что я умножаю поле Утечка на вызов функции, т.к. без умножения, все хорошо, но в моей формуле должно быть так, в чем проблема?
---
а так: Утечка*(опМодуль.КореньКвадратный(Давление))
---
не прошло, та же ошибка
---
Ну кто-нибудь ведь сталкивался? В интернетах пишут, что тип должен быть числовой у полей, я стала выводить тип поля, переводить пустые значений в нули, везде числа, но ошибка та же!:(
---
Напишу как победила, в чем прикол так и не понимаю:
у меня в опМодуль.КореньКвадратный(Давление) был такой код: Возврат Формат(Sqrt(ЧислоП), "ЧДЦ=2")
Я убрала форматирование и заработало.
---
Формат(Sqrt(ЧислоП), "ЧДЦ=2")
это получение строки в итоге.
---
Ага, я тоже допендрила:)