Имя: Пароль:
1C
1С v8
Ошибка при выводе отчета
,
0 k_aleks80
 
16.11.18
19:25
Приветствую.

В наличии - простой отчет.
Есть 2 поля группировки. При снятии галки в настройках с 1-го - падает ошибка: Поле объекта не обнаружено (ТекстЗапроса).

Вижу проблему в процедуре ПриКомпоновкеРезультата().

После выполнения строки кода:
<code>МакетКомпоновки = КомпоновщикМакета.Выполнить(
        СхемаКомпоновкиДанных,
        КомпоновщикНастроек.Настройки,
        ДанныеРасшифровки
    );</code>

в МакетКомпоновки.НаборыДанных.ТекстЗапроса ничего нет.
Подскажите, куда копать?
1 k_aleks80
 
16.11.18
19:27
В СхемеКомпоновкиДанных запрос есть.
Как я понимаю проблема с настройками компоновщика.
2 palsergeich
 
16.11.18
19:36
(1)
Первое что надо делать при любых проблемах с СКД - переоткрыть окно приложения и конфигуратор
Второе - если отчет простой - сделать новый и собрать его заново, не забудь поменять имя отчета, это позволит исключить кэш.
Третье - версия платформы в которой разрабатываешь и в которой смотришь идентична?
3 k_aleks80
 
16.11.18
19:45
Ок, попробую.
4 k_aleks80
 
19.11.18
01:01
1) переоткрывание - не помогло;
2) сделал отчет заново (с изменением имени) - не помогло;
3) версии идентичны (8.3.10).
5 k_aleks80
 
19.11.18
01:15
интересная закономернность (в режиме предприятие, при настройки отчета, поля группировки):

1) при таком варианте ( см. галки использования) - данные выводятся:
V День
V Ссылка

2) а при таком - нет.
  День
V Ссылка
6 Franchiser
 
гуру
19.11.18
01:19
Зачем компоновку программно делаешь?
Наверняка намудрил что-нибудь с пользовательскими настройками
7 k_aleks80
 
19.11.18
01:37
Спасибо за наводку, добрый человек.

-> Вот так отрабатывает:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) Экспорт
    
    ОтчетыСервер.ВывестиОтчет(ЭтотОбъект, СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки, ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка);
КонецПроцедуры;


-> а вот так - уже нет:

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

    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
    ПроцессорВывода.НачатьВывод();
    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных, Истина);
    ПроцессорВывода.ЗакончитьВывод();
    
    ВывестиДиаграммы(ДокументРезультат);
КонецПроцедуры
8 Franchiser
 
гуру
19.11.18
01:50
1. Что есть СхемаКомпоновкиДанных ? Где это определено?
2. Чтобы получить настройки с наложенным пользовательскими используется метод ПолучитНастройки(), а у тебя этого нет.
9 Franchiser
 
гуру
19.11.18
01:56
Тут вообще в коде ничего нет про пользовательские настройки: они и не устанавливаются отдельно (ЗагрузитьПользовательскиеНастройки()) и не накладываются через ПооучитьНастройки()
10 Franchiser
 
гуру
19.11.18
01:57
Что такое ВывестиДиаграммы()?
Это твой код?
11 k_aleks80
 
19.11.18
02:08
(8)


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

Соответственно схема приезжает из СформироватьОтчет(), там такой код:

...

Если НЕ СхемаКомпоновки = Неопределено Тогда
        ОтчетОбъект.СхемаКомпоновкиДанных = ПолучитьИзВременногоХранилища(СхемаКомпоновки);
    КонецЕсли;
...

2) не помогло((
12 k_aleks80
 
19.11.18
02:11
(10) формируются и выводятся несколько видов диаграмм.
На ошибку не влияют. Комментил. Результат тот же.

Код не мой. Исправляю ошибку. Точнее пока разбираюсь.
13 k_aleks80
 
19.11.18
09:59
Спецы по СКД, ткните куда копать.
14 k_aleks80
 
19.11.18
11:54
Победил. Все оказалось просто.
Такой код отрабатывает верно:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) Экспорт
    ОтчетыСервер.ВывестиОтчет(ЭтотОбъект, СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки, ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка);
    ВывестиДиаграммы(ДокументРезультат);  
КонецПроцедуры