Имя: Пароль:
1C
1С v8
СКД Произведение в вычисляемом поле
,
0 MaiorovYury
 
14.02.14
10:52
Подскажите, пожалайста,
Есть отчет в СКД- один набор данных - объект. Пытаюсь в вычисляемом поле посчитать произведение двух полей из набора данных, оба поля числовые, и получаю ошибку
Вот выражение в ВП
ЕСТЬNULL(ОстатокОтпусков,0)*ЕСТЬNULL(СреднийДневнойЗаработок,0)

Вот сама ошибка
Ошибка в выражении
по причине:
Неверные параметры "*"

Что не так?
1 MaiorovYury
 
14.02.14
10:53
1С:Предприятие 8.2 (8.2.19.80)
2 Maxus43
 
14.02.14
10:54
зачем естьnull в вычисляемом? в заросе это делай, в ВП просто а*б
3 Wobland
 
14.02.14
10:55
(2) объект
(0) выбор когда?
4 MaiorovYury
 
14.02.14
10:56
(2) у меня эти 2 поля получаются не в запросе, а из общих модулей
5 Maxus43
 
14.02.14
10:56
(4) хорошо, а каким макаром в общих модулях там возможно Null? Оно там реально есть?
6 Wobland
 
14.02.14
10:57
(5) я верю в криворукость авторов
7 MaiorovYury
 
14.02.14
10:58
(3) то есть
ВЫБОР КОГДА ЕСТЬNULL(ОстатокОтпусков,0)=0 ИЛИ ЕСТЬNULL(СреднийДневнойЗаработок,0)=0 ТОГДА 0
ИНАЧЕ ОстатокОтпусков = СреднийДневнойЗаработок КОНЕЦ
Это действительно лучше чем
ЕСТЬNULL(ОстатокОтпусков,0)*ЕСТЬNULL(СреднийДневнойЗаработок,0)
8 MaiorovYury
 
14.02.14
10:59
и вообще ЕСТЬNULL - это перестраховаться
Когда вывожу отчет без ВП, то ОстатокОтпусков для некоторых сотрудников ничего не показывает - так что это перестраховка
9 Wobland
 
14.02.14
10:59
(7) чего там иначе?
10 Maxus43
 
14.02.14
11:00
(8) я тебе просто намекаю что это естьnull и мешает тебе в ВП, ибо А*Б просто работает
11 Maxus43
 
14.02.14
11:01
Не путайте язык запросов и выражения в вычисляемых полях ещё
12 MaiorovYury
 
14.02.14
11:02
(5) Проверил, NULL там все-таки нет - там 0
(10) А*Б не работает это меня и смутило!
13 Maxus43
 
14.02.14
11:06
(12) чудес не бывает... тип точно число? не составной какой?
14 Wobland
 
14.02.14
11:08
белая клеточка в отчёте - это не работает или работает?
15 MaiorovYury
 
14.02.14
11:11
(13) Проверил еще раз - все число!
На самом деле первый раз работаю с набором данных объектом, и переопределяю процедуру ПриКомпоновкеРезультата
Может что-то в ней не хватает. Посмотрите пожалуйста!



Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)

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

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

    ДокументРезультат.Показать();

КонецПроцедуры;
16 Feunoir
 
14.02.14
11:11
(0) Сильно подозреваю, что проблема в группировках. На каком-то из уровней оно просто не может рассчитаться правильно. Не могу сейчас найти отчёт в котором у меня была такая-же проблема.
17 MaiorovYury
 
14.02.14
11:15
(16) убрал группировки - все равно не работает :(
18 Wobland
 
14.02.14
11:18
(15) >Может что-то в ней не хватает
оно умеет жаловаться текстом ошибки
19 MaiorovYury
 
14.02.14
11:19
(18) вот весь текст ошибки

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

по причине:
Ошибка компоновки данных
по причине:
Ошибка получения данных
по причине:
Ошибка в выражении
по причине:
Неверные параметры "*"
20 Maxus43
 
14.02.14
11:21
(19) нафига цикл там?
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);

ПроцессорВывода.Вывести(параметры в СП гляди);
21 MaiorovYury
 
14.02.14
11:24
Все, я понял. Я ставил тип Число в СКД в Наборе данных и думал что СКД преобразует значения к числу. А сейчас увидел, что в ТЗ, которую я передаю в этот набор данных СреднийДневнойЗаработок - это строка
Думаю вопрос решен
22 Mitriy
 
14.02.14
11:24
(0) а ты уверен, что ругается именно на это место?
23 Wobland
 
14.02.14
11:24
>СреднийДневнойЗаработок - это строка
"а чо так мало?"
24 Maxus43
 
14.02.14
11:24
вот не зря я про тип спрашивал...
25 MaiorovYury
 
14.02.14
11:27
(24) Да уж. Но я был уверен, что раз я указал в СКД в наборе данных тип для этих полей, то они будут именно этого типа.
Странно - зачем тогда этот функционал, зачем указывать тип значений для полей?
26 Wobland
 
14.02.14
11:28
(25) думал, оно тебе "адын" в 1 превратит?
27 Maxus43
 
14.02.14
11:29
(25) типы в Источнике надо смотреть всегда... типы в СКД емнип только если надо из составного типа выделить один, или даже хз, не помню. Надо читать описание СКД
28 MaiorovYury
 
14.02.14
11:30
(26) ну или по крайней мере выдаст ошибку, что типы не сходятся
так а зачем тогда возможность указать тип значений?
29 MaiorovYury
 
14.02.14
11:30
В общем всем спасибо!
30 Wobland
 
14.02.14
11:32
в конструкторе запросов вон типы для полей ВТ указываются исключительно для удобства пользования этим же конструктором
Основная теорема систематики: Новые системы плодят новые проблемы.