Применение внешней функции в СКД

1. mau89 07.11.13 11:41 Сейчас в теме
Здравствуйте подскажите такой вопрос, пишу внешний отчет на скд, запросом вытаскиваю 3 поля, у которых тип "Строка", значения в этих полях строго заданы шкалой от -2 до 2, т.е буквы и прочее там не выбрать, далее мне надо посчитать средний бал, но для этого мне надо перевести их в числовой тип, для этого в общем модуле написал функцию
Функция ПреобразованиеВЧисло(Текст) Экспорт 
    Возврат Число(Текст);
КонецФункции

и после этого в скд во вкладке вычисляемые поля в поле "Выражение" прописываю "ПреобразованиеВЧисло(Квалификация)+ПреобразованиеВЧисло(Культура)+ПреобразованиеВЧисло(Оперативность)". при выводе мне выдает ошибку
Ошибка исполнения отчета
по причине:
Ошибка получения данных
по причине:
Функция не найдена "ПреобразованиеВЧисло"
Подскажите в чем проблема, и что надо еще дописать?
По теме из базы знаний
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
7. zarucheisky 07.11.13 12:23 Сейчас в теме
(1) В СКД на вкладке ресурсы создайте ресурс в поле выражение введите:
СРЕДНЕЕ(ВЫЧИСЛИТЬ(Квалификация)+ВЫЧИСЛИТЬ(Культура)+ВЫЧИСЛИТЬ(Оперативность))
SITR-utyos; reotem; mau89; +3 Ответить
9. mau89 07.11.13 12:28 Сейчас в теме
(7) zarucheisky, Спасибо, заработало
11. zarucheisky 07.11.13 12:38 Сейчас в теме
(9) Кстати, там много вкусных функций :)
см "Функции языка выражений системы компоновки данных" в Справке Конфигуратора
Мах; mau89; +2 Ответить
12. mau89 07.11.13 12:40 Сейчас в теме
(11) zarucheisky, Я пробовал через "Выразить", через "Число", "Формат", а вот про "Вычислить" не знал, возьму на заметку.
13. zarucheisky 07.11.13 13:13 Сейчас в теме
(12)Вы путаете функции языка запросов и функции языка выражений СКД :)
Если функции языка запросов используются в тексте запроса, то функции языка выражений используются в вычисляемых полях и ресурсах :)
inanity; silantyevmn; mau89; +3 Ответить
2. Азбука Морзе 104 07.11.13 12:00 Сейчас в теме
Общий модуль должен иметь свойство Глобальный
4. echo77 1868 07.11.13 12:05 Сейчас в теме
(2) Азбука Морзе, кстати, теперь уже не обязательно. Я тоже думал, что должен быть глобальным.

p.s. в консоли отчетов на СКД(по крайней мере той что у меня) <ВозможностьИспользованияВнешнихФункций> отключена
6. mau89 07.11.13 12:15 Сейчас в теме
(2) Азбука Морзе, а где его поставить, это же во внешней обработке пишется, я чет не нашел такой настройки
(5) echo77, немного не понял, как мне обратится к функции которая написана в модуле внешней обработки, у нее же нет имени, просто "модуль объекта". И
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных,, ДанныеРасшифровкиКонсоли, Истина);
где писать, опять же в модуле? А по поводу чисел в строке, другого варианта не видел, т.к если ставить тип число, то пустое значение "0", а у меня в шкале это оценкой считается, а если строка то пустое значение, что мне и надо.
Извиняюсь за глупые вопросы, с СКД не дружу, но хочу разобраться и научиться.
8. Азбука Морзе 104 07.11.13 12:25 Сейчас в теме
(6) mau89, В конфигураторе нужно щелкнуть правой кнопкой мыши по имени общего модуля и выбрать Свойства (внизу)
10. mau89 07.11.13 12:34 Сейчас в теме
(8) Азбука Морзе, у меня внешняя обработка, и она в конфигураторе не числится, и свойств соответственно у нее нет
14. echo77 1868 07.11.13 13:38 Сейчас в теме
(6) mau89,
Кто-то писал в посте номер (0)
для этого в общем модуле написал функцию


а потом вы говорите, что функция создана в модуле объекта.

в СКД нельзя использовать функции модуля отчета. Можно лишь использовать функции общих модулей
15. mau89 07.11.13 13:43 Сейчас в теме
(14) echo77, Мда, ошибся что-то я, извиняюсь, но теперь знаю зато, что из модуля отчета нельзя использовать функции
3. echo77 1868 07.11.13 12:01 Сейчас в теме
1. Надо делать так:
ИмяОбщегоМодуля.ПреобразованиеВЧисло()

- это если модуль НЕ глобальный
2. В СКД надо разрешить использовать функции модулей вот таким образом:
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных,, ДанныеРасшифровкиКонсоли, Истина);


Выдержка из СП:

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

Синтаксис:

Инициализировать(<Макет>, <ВнешниеНаборыДанных>, <ДанныеРасшифровки>, <ВозможностьИспользованияВнешнихФункций>)
Параметры:

<Макет> (обязательный)

Тип: МакетКомпоновкиДанных.
Макет, для которого будет выполняться компоновка.
<ВнешниеНаборыДанных> (необязательный)

Тип: Структура.
Ключ структуры соответствует имени внешнего набора данных. Значение структуры - внешнему набору данных.
<ДанныеРасшифровки> (необязательный)

Тип: ДанныеРасшифровкиКомпоновкиДанных.
Объект, в котором нужно заполнить данные расшифровки. Если не указан, то расшифровка заполняться не будет.
<ВозможностьИспользованияВнешнихФункций> (необязательный)

Тип: Булево.
Указывает возможность использования функции общих модулей конфигурации в выражениях компоновки данных.
Значение по умолчанию: Ложь
Описание:

Инициализировать объект.

Доступность:

Сервер, толстый клиент, внешнее соединение.
G_109446617843092624891; _Troglodyte_; emid; Vyacheslav_Kochnev; myoker; ui69; cleaner_it; Istur; adva; prime9; jobkostya1c_ERP; spezc; Chrizt; mau89; +14 Ответить
16. Akava 18.11.14 10:51 Сейчас в теме
(3)а где нужно написать
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных,, ДанныеРасшифровкиКонсоли, Истина);
чтобы общие функции модуля заработали в СКД?
17. alabuga 23.03.15 16:21 Сейчас в теме
(16)Добавь в модуль объекта своего отчета
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    НастройкиСКД = КомпоновщикНастроек.ПолучитьНастройки();
    
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиСКД, ДанныеРасшифровки);
    
    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина);
            
    ДокументРезультат.Очистить();
    
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);    
    ПроцессорВывода.Вывести(ПроцессорКомпоновки); 
КонецПроцедуры
Показать
i.c.h; houpl; Shmell; pjata4ok; echo77; +5 Ответить
18. ya.Avoronov 115 20.06.16 16:28 Сейчас в теме
(16) Akava,

Обычные формы
Для работы внешней функции из общего модуля в выражениях СКД, в форме отчета можно написать вот так:

Процедура ПриОткрытии()
	//> Инициализация возможности использования внешних функций в СКД
	НастройкиСКД = КомпоновщикНастроек.ПолучитьНастройки();
	
	КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
	МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиСКД);
	
	ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
	ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, , , Истина);
	//< Инициализация возможности использования внешних функций в СКД	
КонецПроцедуры

Показать
5. echo77 1868 07.11.13 12:07 Сейчас в теме
(0) хранить числовое значение в виде строки - это конечно песец. Лучше хранить в виде числа, а интерфейс ввода информации реализовать таким образом, чтобы нельзя было ввести неправильные значения
Оставьте свое сообщение
Вакансии
Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)

Программист 1С
Москва
зарплата от 250 000 руб.
Полный день

Программист 1C
Волгоград
зарплата от 200 000 руб.
Полный день

Аналитик
Санкт-Петербург
зарплата от 200 000 руб. до 250 000 руб.
Полный день