Имя: Пароль:
1C
1С v8
СКД использование внешних функций при внешнем наборе данных
0 fantomrik
 
12.01.15
11:53
Добрый день!

Есть 2 отчета на СКД.
В первом набор данных запрос. Во втором - внешний набор данных (в модуле отчета компаную таблицу, так как через Ж.. хотят данные, и пихаю в СКД).
Ресурсы отчетов - время (часы).
Заказчик захотел, что бы часы отображались более понятно, то есть 90мин отображались не как "1,5" а как "1ч. 30 мин"

Написал функцию в общем модуле по переводу числа в такую строку.
Она отлично отрабатывает в отчете, где набор данных запрос, но в отчете с внешним набором данных падает на строке:

ПроцессорВыводаВТабличныйДокумент.Вывести(ПроцессорКомпоновкиДанных)

с ошибкой:

Ошибка исполнения отчета
по причине:
Ошибка при выполнении обработчика - 'ПриКомпоновкеРезультата'
по причине:
{ВнешнийОтчет.ЭкономическиеПоказатели.МодульОбъекта(351)}: Ошибка при вызове метода контекста (Вывести)

по причине:
Ошибка вывода результата
по причине:
Ошибка при выводе результата
по причине:
Ошибка получения данных
по причине:
Ошибка в выражении
по причине:
Синтаксическая ошибка "с_ДополнительныеФункции.ПересчетСДесятичнойВЧасовуюСистемуСчисления"

данная функция прописана при расчете ресурса (в выражении) аналогично как и в первом отчете. Какую синт ошибку он находит не понятно (
1 fantomrik
 
12.01.15
12:02
При попытке сделать "вычисляемое поле" с этой же функцией - та же самая ошибка...
2 Reaper_1c
 
12.01.15
12:04
Параметры инициализации процессора компоновки данных в студию.
3 Defender aka LINN
 
12.01.15
12:08
(0) "Заказчик захотел, что бы часы отображались более понятно, то есть 90мин отображались не как "1,5" а как "1ч. 30 мин" " - это и без внешних функций можно
4 fantomrik
 
12.01.15
12:10
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)

    СтандартнаяОбработка = Ложь;
    Отказ = Ложь;
    
    ОсновнаяСхема                 = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
    НастройкиОсновнойСхемы         = КомпоновщикНастроек.ПолучитьНастройки();
    ДанныеРасшифровки             = Новый ДанныеРасшифровкиКомпоновкиДанных;
    КомпоновщикМакета             = Новый КомпоновщикМакетаКомпоновкиДанных;
    
    ПараметрыДанных             = НастройкиОсновнойСхемы.ПараметрыДанных;

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

(3) ммм... Как?
5 fantomrik
 
12.01.15
12:11
(3) Как?
6 Defender aka LINN
 
12.01.15
12:15
(5) Ну, не без извращений, конечно:

ДобавитьКДате(датавремя(1,1,1), минута, 90)

И формат ДФ='ЧЧ"ч. "мм"мин."'
7 fantomrik
 
12.01.15
12:22
(6) Это в запросе предлагаете сразу пересчитать или в ресурсах дописать функцию?
8 Defender aka LINN
 
12.01.15
12:30
(7) Если это ресурс, то в ресурсах, вестимо
9 fantomrik
 
12.01.15
12:33
(8) Я так и подумал, так как если в запросе то ресурсы в СКД неверно рассчитаются.
Пробую в ресурсах
ДобавитьКДате(ДатаВремя(1,1,1), МИНУТА, Сумма(ВремяПрисутствия)*60)
ругается что поля минута не обнаруженно, то ли не так прописываю, то ли в ресурсах данная функция недоступна...
10 Defender aka LINN
 
12.01.15
12:35
"Минута"
11 fantomrik
 
12.01.15
12:52
(10) Спасибо, вроде работает, только ресурс чето не верно считает, разбираюсь в формуле (
12 fantomrik
 
12.01.15
14:26
А по поводу почему функциями не могу воспользоваться при внешнем наборе данных, нет мыслей ни у кого?
13 Defender aka LINN
 
12.01.15
14:42
(12) По поводу этого мыслей нет. При внешнем наборе данных все функции доступны.
А по поводу почему код из (4) не выводит - продам СП, дорого.
14 fantomrik
 
12.01.15
15:13
Огромное спасибо за помощь! К сожалению не готов купить СП (сопровождение?), буду копать сам дальше
15 Defender aka LINN
 
12.01.15
15:23
(14) Синтакс-помощник
16 fantomrik
 
12.01.15
15:36
(15) Благодарю вас от всей души!

Оказывается возможность использования нужно включать при ручной компоновке результата...

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

<ВозможностьИспользованияВнешнихФункций> (необязательный)

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

Вопрос закрыт благодаря  Defender aka LINN
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан