Имя: Пароль:
1C
1С v8
v8: СКД: в условии связи не указываются поля набора данных-объект
0 Raybek
 
29.04.13
18:12
Ваяю внешний отчет на СКД.
У отчета есть табличная часть "ДиапазоныОстатков" с двумя числовыми реквизитами "НижнийПредел", "ВерхнийПредел".

Есть два набора данных:
- типа "объект" с именем "ДиапазоныОстатков", куда я гружу табличную часть
- типа "объединение" с именем "ОстаткиТоваров", в котором два набора данных типа "запрос": "ОстаткиНаСкладах" и "ОстаткиВРознице"

Через связи наборов данных в СКД делаю соединение наборов данных:
- и СКД ошибок выполнения не выдает, пока не пытаюсь в условии связи обратиться к полям набора данных-объект "НижнийПредел" или "ВерхнийПредел".

А именно ошибка:

по причине:
Ошибка компоновки макета
по причине:
Поле не найдено "ВерхнийПредел"

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


Ошибка вылетает при компоновке макета на строке:

КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки)
1 Raybek
 
29.04.13
19:22
Пробовал как в файл-серверном так и клиент-серверном режиме - результат тот же.
2 Defender aka LINN
 
29.04.13
19:27
Это, наверное, курсы какие-то есть. Там учат, что если задаешь вопрос про связи наборов данных - то надо выложить код вывода отчета. Можно запрос, или еще что-нибудь. Главное - не выкладывать проблемное место, так же намного интереснее.
3 Raybek
 
29.04.13
19:33
(2) Проблема именно в том, что не дает указать поле набора данных - объект в условии связи.
Озвучьте пожалуйста, что именно я должен еще выложить по проблеме?

Вот скрин закладки "Связи наборов данных"

<img src="http://www.fotohost.kz/images/2013/04/29/35Ktm.png" border="0" />
4 Raybek
 
29.04.13
19:33
<a href="http://www.fotohost.kz/images/2013/04/29/35Ktm.png"><img src="http://www.fotohost.kz/images/2013/04/29/35Ktm.th.png" border="0" /></a>
5 Raybek
 
29.04.13
19:33
6 Raybek
 
29.04.13
19:33
(5) Вроде так:)
7 Raybek
 
29.04.13
19:35
Вот сам разрабатываемый внешний отчет
http://www.x-files.kz/e9313908
8 Raybek
 
29.04.13
19:38
Сама задача состоит в том, чтобы сгруппировать остатки товаров по диапазонам.

Идея в следующем: пользователь в табличной части вводит диапазоны остатков: нижний и верхний пределы.

Затем через левое соединение остатков с таблицей диапазонов связываем так сказать остаток с соответствующими полями диапазона.
9 Raybek
 
29.04.13
19:50
Ну хоть ламером для приличия обзовите, лишь бы помогли, не молчали, профи:)
А то хочу красиво замутить, хотя есть выход всю эту фигню запихать в один набор данных - объект...не хочу... нет поэзии в этом что-ли:)
10 Raybek
 
29.04.13
20:15
Ладно...будем искать...об удаче отпишусь
11 Raybek
 
29.04.13
21:15
> Проблема именно в том, что не дает указать поле набора данных - объект в условии связи.

Поэкспериментировал - данное выше утверждение - неверное.

СКД выдает ошибку при указании в выражении "условие связи" поля набора данных ПРИЕМНИКА СВЯЗИ.

То бишь сделал "ДипазоныОстатков" Источником связи и вуаля - ошибка исчезла...однако теперь ошибка возникает при указании поля "ОстаткиТоваров":)

Блин, а вся идея то заключалась на сравнении границ диапазона и остатка в условии соединения наборов данных!
12 Raybek
 
30.04.13
10:49
Сделал:))))!

На закладке связей наборов данных
- родительским набором данных поставил "ДиапазоныОстатков"
- убрал условие связи
- в выражения источника и приемника поставил "Истина"

На закладке Настройки
- создал группировку по реквизитам диапазона "Нижний предел", "Верхний предел"
- в этой группировке создал группировку по "Номенклатуре"
- кстати ресурс "КоличествоОстаток" рассчитывается только по "Номенклатуре" (закладка "Ресурсы")

- Иииии и самый смак! В отборе группировки "Номенклатура" добавил два условия для проверки вхождения остатка в диапазон причем правое значение - это поле компоновки данных:)))

Вот скрин http://fotohost.kz/image/Ab1h
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший