Имя: Пароль:
1C
1С v8
Помогите с СКД разобраться.
,
0 SerG82
 
08.05.14
09:42
Вывожу в подвал Сумму прописью через параметр в макете.
Но если запрос пустой то выдает ошибку:
Ошибка при вычислении функции "ЧислоПрописью".

В модуле объекта отчета в процедуре ПриКомпоновкеРезультата как получить доступ к данным запроса при программном выводе СКД?
1 Godofsin
 
08.05.14
09:44
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
    ТЗ = ПроцессорВывода.Вывести(ПроцессорКомпоновки);    

Например, так
2 SerG82
 
08.05.14
09:48
Я програмно уже вывожу вот таким способом, и на этапе ПроцессорКомпоновки.Следующий() процессор не может вычислить функцию, я подумал может есть способ доступа на этом моменте к данным.


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

    ПроцессорВывода.НачатьВывод();

    ЭлементРезультата = ПроцессорКомпоновки.Следующий();
    Пока ЭлементРезультата <> Неопределено Цикл
        ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
        ЭлементРезультата = ПроцессорКомпоновки.Следующий();
    КонецЦикла;
    
    ПроцессорВывода.ЗакончитьВывод();
3 SerG82
 
08.05.14
09:53
Мне сам механизм доступа к данным не понятен.
Какие именно данные запроса доступны при выводе макета?
Как к ним доступ получить?
4 Godofsin
 
08.05.14
09:57
(3) Не понял вопроса. У тебя вроде же в (2) поэтапно видно как именно доступны данные
5 Godofsin
 
08.05.14
09:58
При выводе в табличный документ
6 Godofsin
 
08.05.14
10:01
ЭлементРезультата вот это и есть твои данные
7 Godofsin
 
08.05.14
10:02
Функцию ты где обозначил?
8 SerG82
 
08.05.14
10:03
А как узнать на этапе ПроцессорКомпоновки.Следующий(), что значение Сумма не существует и ЭлементРезультата не магу получить.
Я может не правильно что-то делаю.Я макет группировки сделал тип Заголовок и вывожу его в подвали в нем параметр прописал сумма.
9 barrgand
 
08.05.14
10:13
(0) Функция ЧислоПрописью где находится? Проверить сумму перед вычислением никак?
10 nufnufcheg
 
08.05.14
10:13
покажи скрины СКД и ошибки
11 SerG82
 
08.05.14
10:19
(9) в параметрах макета - вырожение
ЧислоПрописью(Сумма,"Л=ru_RU; ДП=Ложь","рубль, рубля, рублей, м, копейка, копейки, копеек, ж" )
Я вот и хачу как то проверить.
12 SerG82
 
08.05.14
10:21
Ошибка исполнения отчета
по причине:
Ошибка при выполнении обработчика - 'ПриКомпоновкеРезультата'
по причине:
{Отчет.Акт.МодульОбъекта(33)}: Ошибка при вызове метода контекста (Следующий)
        ЭлементРезультата = ПроцессорКомпоновки.Следующий();
по причине:
Ошибка компоновки данных
по причине:
Ошибка получения данных
по причине:
Ошибка при вычислении функции "ЧислоПрописью"
по причине:
Ошибка вычисления функции "ЧислоПрописью"
по причине:
Несоответствие типов (параметр номер '1')
13 Бледно Золотистый
 
08.05.14
10:26
(12) А проверка на null, неопределено есть?
14 SerG82
 
08.05.14
10:27
а как ее реализовать?
15 Godofsin
 
08.05.14
10:31
(14) в запросе
16 SerG82
 
08.05.14
10:37
(15) в запросе нету. Попробую реализовать, но даже если поможет, на вопрос нет ответа:

Какие именно данные запроса доступны при выводе макета?
17 Teresa
 
08.05.14
10:38
ВЫБРАТЬ ЕСТЬNULL(СУММА(ЗначениеЧисловогоПоля), 0) КАК ТвояСумма
Или просто значение проверять
18 Teresa
 
08.05.14
10:40
Может быть, еще поможет что-то вроде
Выбор
Когда ТипЗнч(Сумма)=Тип(Число)
Тогда ""
Иначе ЧислоПрописью(Сумма)
Конец
19 Godofsin
 
08.05.14
10:41
(16) Ну всмысле какие? Которые он получил в результате выполнения запроса
20 SerG82
 
08.05.14
10:46
(19) и как на этапе программного вывода макета получить.
21 Godofsin
 
08.05.14
10:46
(20) Макета - никак. Ну то есть при твоем выводе - никак. Имхо
22 SerG82
 
08.05.14
10:52
(21) Спасибо за разъяснение. Очень жаль, вроде по логике должно быть.

Сумму я вывел так:
ЧислоПрописью(ЕСТЬNULL(СУММА, 0),"Л=ru_RU; ДП=Ложь","рубль, рубля, рублей, м, копейка, копейки, копеек, ж" )