Имя: Пароль:
1C
1С v8
Почему не выводит числа в отчете
,
0 olegon7
 
28.09.16
15:59
Работаю в скд.
2 набора данных - 2 тз(с одинаковыми полями)
я их объединяю, а потом еще соединяю по полю кодОбъекта - кодРодителя.
Данные из  тз1 все получаю, а вот из тз2 почему то поле ПолезныйотпускЮрлиц не отражается.Хотя в тз2 оно заполнено.
Единственная зацепка это то что колонки в тз2 составного типа, может их-за этого??? ти поменять нельзя доступно только для чтения...

http://s45.radikal.ru/i109/1609/23/4f2cfeca5022.jpg

http://s14.radikal.ru/i187/1609/f0/7abc3755c5e3.jpg
1 olegon7
 
28.09.16
16:00
в отладчике останавливал,в тз2 поле ПОлезныйОтпускЮрЛиц заполнено.
2 olegon7
 
29.09.16
10:43
никто не знает???

тогда как получить из запроса таблицу значений со строго типизированными даннымми??

вот фрагмент кода

//////////////////////////////////

запрос=новый запрос;
запрос.Текст="ВЫБРАТЬ
             |    ВЫРАЗИТЬ(Расчет.РасчетнаяТочка.Наименование КАК СТРОКА) КАК Наименование,
             |    ВЫРАЗИТЬ(ВЫБОР
             |            КОГДА РасчетныеТочкиКодыПривязки.Код1 = """"
             |                ТОГДА РасчетныеТочкиКодыПривязки.Код2
             |            ИНАЧЕ РасчетныеТочкиКодыПривязки.Код1
             |        КОНЕЦ КАК СТРОКА) КАК КодРодителя,
             |    ВЫРАЗИТЬ(0 КАК ЧИСЛО) КАК РасходПоГоловномуУчету,
             |    ВЫРАЗИТЬ(0 КАК ЧИСЛО) КАК РасходПоОтходяшимУчетам,
             |    ВЫРАЗИТЬ(0 КАК ЧИСЛО) КАК ПолезныйОтпускВсего,
             |    ВЫРАЗИТЬ(Расчет.РасходПолный КАК ЧИСЛО) КАК ПолезныйОтпускЮрЛица,
             |    ВЫРАЗИТЬ(0 КАК ЧИСЛО) КАК ПолезныйОтпускБыт
             |ИЗ
             |    РегистрСведений.Расчет КАК Расчет
             |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.РасчетныеТочки.КодыПривязки КАК РасчетныеТочкиКодыПривязки
             |        ПО Расчет.РасчетнаяТочка = РасчетныеТочкиКодыПривязки.Ссылка
             |ГДЕ
             |    (Расчет.РасчетнаяТочка.КодыПривязки.Код1 В (&СписокЗначенийТП)
             |            ИЛИ Расчет.РасчетнаяТочка.КодыПривязки.Код2 В (&СписокЗначенийТП))
             |    И Расчет.годРП = &годРП
             |    И Расчет.месяцРП = &месяцРП
             |    И Расчет.РасчетнаяТочка.ПометкаУдаления = ЛОЖЬ
             |    И Расчет.РасчетнаяТочка.уровень = 1";
            
    Год=Число(Формат(ТекущаяДата, "ДФ=гггг"));
    Месяц=Число(Формат(ТекущаяДата, "ДФ=М"));
     Запрос.УстановитьПараметр("СписокЗначенийТП",СписокЗначенийТП);
     Запрос.УстановитьПараметр("ГодРП",Год);
     Запрос.УстановитьПараметр("МесяцРП",Месяц);
    
   Тз2 = Новый ТаблицаЗначений;
   Тз2.Колонки.Добавить("Наименование", Новый ОписаниеТипов("Строка",Новый КвалификаторыСтроки()));
   Тз2.Колонки.Добавить("КодОбъекта", Новый ОписаниеТипов("Строка",Новый КвалификаторыСтроки()));
   Тз2.Колонки.Добавить("КодРодителя", Новый ОписаниеТипов("Строка",Новый КвалификаторыСтроки()));
   Тз2.Колонки.Добавить("РасходПоГоловномуУчету",  Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла()));
   Тз2.Колонки.Добавить("РасходПоОтходящимУчетам",  Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла()));
   Тз2.Колонки.Добавить("ПолезныйОтпускВсего", Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла()));
   Тз2.Колонки.Добавить("ПолезныйОтпускЮрЛица", Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла()));
   Тз2.Колонки.Добавить("ПолезныйОтпускБыт", Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла()));

   РезультатЗапроса= Запрос.Выполнить();
   Тз2=РезультатЗапроса.Выгрузить();
3 olegon7
 
29.09.16
11:01
а то у меня получается тз с составными типами данных
например строка,null
число,null
4 DrShad
 
29.09.16
11:03
когда же ты уже научишься сами наборы выкладывать, а то телепатия не работает
5 aleks_default
 
29.09.16
11:08
я вот этого не понял
"2 набора данных - 2 тз(с одинаковыми полями)
я их объединяю, а потом еще соединяю по полю кодОбъекта - кодРодителя. "- это как?
6 olegon7
 
29.09.16
12:57
(5) в скд есть объединение объект я туда поместил 2 набора данных (две тз )
а потом есть еще вкладка связи наборов данных(т е соединение)я  соединил объект объединение(в котором две тз) самим с собой по полю кодОбъекта - кодРодителя..
7 olegon7
 
29.09.16
13:25
8 olegon7
 
30.09.16
08:57
up
9 IlyaSR
 
30.09.16
09:32
а если почитать СП, то метод Выгрузить() для РезультатаЗапроса создает ТЗ сам и тип он берет из РезультатаЗапроса, посмотри, что в запросе получаешь
10 olegon7
 
30.09.16
09:44
(9) я написал, что в запросе получаю поля составного типа
вида строка,null или число,null
11 olegon7
 
30.09.16
09:44
сам запрос выше..
12 hhhh
 
30.09.16
09:53
(11) пользуйся волшебной функцией ЕСТЬNULL
13 olegon7
 
30.09.16
11:14
(12) от того что в запросе поставил проверку на null,
в результате запроса ничего не поменялось . все равно выгружает данные с составным типом!
14 IlyaSR
 
30.09.16
12:49
и как ты поставил проверку на null?
15 olegon7
 
30.09.16
13:02
(14) запрос.Текст="ВЫБРАТЬ
             |    ЕСТЬNULL(Расчет.РасчетнаяТочка.Наименование, """") КАК Наименование,
             |    ЕСТЬNULL(ВЫБОР
             |            КОГДА РасчетныеТочкиКодыПривязки.Код1 = """"
             |                ТОГДА РасчетныеТочкиКодыПривязки.Код2
             |            ИНАЧЕ РасчетныеТочкиКодыПривязки.Код1
             |        КОНЕЦ, """") КАК КодРодителя,
             |    ЕСТЬNULL(0, 0) КАК РасходПоГоловномуУчету,
             |    ЕСТЬNULL(0, 0) КАК РасходПоОтходяшимУчетам,
             |    ЕСТЬNULL(0, 0) КАК ПолезныйОтпускВсего,
             |    ЕСТЬNULL(Расчет.РасходПолный, 0) КАК ПолезныйОтпускЮрЛица,
             |    ЕСТЬNULL(0, 0) КАК ПолезныйОтпускБыт
             |ИЗ
             |    РегистрСведений.Расчет КАК Расчет
             |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.РасчетныеТочки.КодыПривязки КАК РасчетныеТочкиКодыПривязки
             |        ПО Расчет.РасчетнаяТочка = РасчетныеТочкиКодыПривязки.Ссылка
             |ГДЕ
             |    (Расчет.РасчетнаяТочка.КодыПривязки.Код1 В (&СписокЗначенийТП)
             |            ИЛИ Расчет.РасчетнаяТочка.КодыПривязки.Код2 В (&СписокЗначенийТП))
             |    И Расчет.годРП = &годРП
             |    И Расчет.месяцРП = &месяцРП
             |    И Расчет.РасчетнаяТочка.ПометкаУдаления = ЛОЖЬ
             |    И Расчет.РасчетнаяТочка.уровень = 1";
16 youalex
 
30.09.16
13:12
(13) похоже, оно всегда добавляет null в тип колонки РЗ, я по крайней мере не нашёл, когда тоже столкнулся.
Решил костылём - через создание ТЗ и заполнение:
    РезультатЗапроса =  Запрос.Выполнить();//.Выгрузить();
    ТЗ = Новый ТаблицаЗначений;
    Для Каждого Колонка Из РезультатЗапроса.Колонки Цикл
          ТЗ.Колонки.Добавить(Колонка.Имя, Новый ОписаниеТипов(Колонка.ТипЗначения, , "NULL"));
    КонецЦикла;    

17 olegon7
 
30.09.16
13:29
(16) Колонки так добавишь, вопросов нет. НО при загрузки из РЗ в ТЗ ты все равно получишь null..
18 olegon7
 
30.09.16
13:38
(16) А в заполненной ТЗ ты тип колонки не посеняешь, доступно только для чтения....
ТипЗначения (ValueType)
Использование:

Только чтение.
Описание:

Тип: ОписаниеТипов.
Содержит объект, описывающий допустимые типы значений для колонки.
19 youalex
 
30.09.16
13:39
(17) выборкой заполнять.
или другой вариант - выгрузить в ТЗ, создать пустую ТЗ (без null) - и залить в нее
20 olegon7
 
30.09.16
13:46
(19) Залить в нее копированием? или выборкой?
21 youalex
 
30.09.16
14:05
(20) как вариант: создать пустые строки в ТЗ2, и потом заливать через ВыгрузитьКолонку , ЗагрузитьКолонку()
22 olegon7
 
30.09.16
14:20
(21) Проблему решил так
рз выгрузил в таб
а потом обошел и загрузил в тз2

Для каждого СтрокаТЗ Из Таб Цикл
     ЗаполнитьЗначенияСвойств(Тз2.Добавить(), СтрокаТЗ)
КонецЦикла;


Но проблема отчета не решилась вторая часть тз в отчете при объединении не отображается
23 olegon7
 
30.09.16
14:31
24 olegon7
 
30.09.16
14:31
Вот так выглядит отчет при объединении двух наборов двух тз
25 aleks_default
 
30.09.16
14:37
что ты хочешь после таких знатных извращений с наборами
26 aleks_default
 
30.09.16
14:40
Еесли тебе нужна произвольная иерархия, то зачем делать два набора в объединении, если можно сделать один с объединением в запросе, если не нужна, то зачем дополнительная связь между наборами?
27 olegon7
 
30.09.16
14:51
(26) у меня еще будет и третий набор я с ним тоже объединение сделаю. Дело в том что первый и третий наборы это внешние источники.

Но пока мне надо откатать на этих двух.

В чем проблема может быть в объединении?
К одному типу привел обе ТЗ, названия колонок совпадают и их количество.
может у кого какие мысли?
28 aleks_default
 
30.09.16
14:54
возьми посмотри конечный текст запроса в ПриКомпоновкеРезультата
29 aleks_default
 
30.09.16
14:54
или в консоли СКД
30 olegon7
 
30.09.16
14:56
(28) В какой переменной посмотреть можно? не подскажешь?в отладчике
31 aleks_default
 
30.09.16
15:03
(27)Внешние источники - это таблицы передаваемые в СКД или объект метаданных "Внешний источник данных"?
Все равно не понятно зачем объединять именно в СКД а не до передачи в нее?
(30) у макета компоновки, набор данных, запрос
32 aleks_default
 
30.09.16
15:08
Лучше в консоли скд посмотреть наверное, в случае с несколькими наборами (28) не прояснит ситуацию.
33 olegon7
 
03.10.16
17:08
(32) Было дело в опечатке одного поля, все получилось.

Вопрос следующего характера

Отчет я построил ,сначала объеденив два набора, а потом соеденил сам с собой по полю кодОбъекта = КодРодителя. Получилась иерархия .
ПолезныйОтпускВсего - поле вычисляемое (ПолезныйОтпускЮрЛиц+ПолезныйОтпускБЫт)
как сделать чтобы считался ИТОГ по ТП, потом Итог по Фидеру
http://s017.radikal.ru/i401/1610/a4/4db0f425311b.jpg
34 DrShad
 
03.10.16
17:16
итоги по собственной иерархии автоматом не считаются автоматом
только через ВычислитьВыражение.... в ресурсах
35 olegon7
 
04.10.16
09:43
(34) так я и делал

http://s010.radikal.ru/i312/1610/a9/4a8fbae0f284.jpg

в тз1 я заполнял нулями ПолезныйОтпускПоЮрЛицам,

в тз2 уже брал реальные значения...
36 olegon7
 
04.10.16
10:55
как я смогу использовать ресурсы, если у меня группировок нет.
Группировка построена еще до скд.
я вывожу только детальные записи...

как все таки посчитать итоги в этом случае по ТП, фидеру.

http://s011.radikal.ru/i316/1610/f1/b8b53485a9dd.jpg