Имя: Пароль:
1C
 
Отчётец не получается
,
0 ejikbeznojek
 
24.02.15
13:25
Пытаюсь сейчас сделать супер отчёт. А он зараза не работает. Помогите кто знает.

Есть результат выполнения запроса. Вот такого вида:

"ВЫБРАТЬ
|    ЗОГ.Автомобиль как Автомобиль,
|    ЗОГ.Водитель как Водитель,
|    ЗОГ.Накладная как Накладная
|ИЗ
|    Документ.ЗаявкаНаОтгрузку.Накладные КАК ЗОГ"
результат=запрос.Выполнить().Выгрузить();

Есть макет "СхемаКомпоновки" в котором поля Автомобиль, Водитель и Накладная.

Дальше идёт инициализация и выполнение

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

На форме соответственно отборы и группировки Компоновщика.

В принципе всё работает но с 1 косяком.

При установке отбора, по полю которого нет в макете.
Скажем Автомобиль.ГосНомер=123123
Если этого же поля ещё и в группировках нет.
Пишет
Ошибка компоновки макета
по причине:
Поле не найдено "Автомобиль.ГосНомер"

Как добавлять такие поля, недобавляя его ни в макет ни в группировку
1 DirecTwiX
 
24.02.15
13:36
В наборе данных не стоит ограничение на использование реквизитов в качестве условия?
Можно попробовать указать тип значения напротив поля набора данных.
Отбор интерактивно добавляешь? Или программно?
2 ejikbeznojek
 
24.02.15
13:40
Отбор интерактивно добавляю.
В колонке Ограничение поля в макете галок нет.
Тип значения стоит уже везде
3 ejikbeznojek
 
24.02.15
13:44
4 Zubek
 
24.02.15
13:49
Может "Машина.ГосНомер" ? ))
5 ejikbeznojek
 
24.02.15
13:52
А ещё как назло пользователь который этим отчётом пользуется - как раз любит миллион отборов устанавливать))

http://prntscr.com/696h2e

(4) Опечатался...действительно машина
6 DirecTwiX
 
24.02.15
13:58
(0) У меня получилось добавить отбор.
https://dl.dropboxusercontent.com/u/43161184/mista/ВнешнийОтчет1.erf
7 ejikbeznojek
 
24.02.15
14:02
у меня 1С:Предприятие 8.1 (8.1.14.72)
Не конвертит отчёт.
Но где то краем уха я слышал, что в 8.2 такой беды нет
8 hhhh
 
24.02.15
17:00
(7) просто сделайте

ВЫБРАТЬ
|    ЗОГ.Автомобиль как Автомобиль,
|    ЗОГ.Автомобиль.Госномер как ГосНомер,
|    ЗОГ.Водитель как Водитель,
|    ЗОГ.Накладная как Накладная
9 ejikbeznojek
 
24.02.15
17:38
Где сделать?
Голова что-то пухнет. В отладчике ковыряю значения полей всяких.

    для каждого ТекЭл из КомпоновщикНастроек.Настройки.Отбор.Элементы цикл
        ИмяЭлемента=сред(ТекЭл.ЛевоеЗначение,Найти(ТекЭл.ЛевоеЗначение,".")+1,СтрДлина(ТекЭл.ЛевоеЗначение));        
        НПоле=СхемаКомпоновкиДанных.НаборыДанных.данные.поля.добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
        //НовоеПоле = Новый ПолеКомпоновкиДанных("ВидСклада");
        НПоле.Поле=ИмяЭлемента;
        НПоле.ПутьКДанным=Строка(ТекЭл.ЛевоеЗначение);
        НПоле.Заголовок=ИмяЭлемента;
        
        //НПоле.ТипЗначения=новый ОписаниеТипов("ПеречислениеСсылка.ВидСклада");    
    КонецЦикла;

Пытался так заполнить, но что то не хочет
10 ejikbeznojek
 
24.02.15
17:47
(8) Понял что имелось ввиду. Не вариант. Через точку там миллион вариантов, и все прописывать в макет не получится.
Я в общем то пока что так и делаю. Как начинают на конфигураторную ошибку жаловаться, я смотрю с какими полями отчёт был и их вытаскиваю