|
Связи наборов данных в СКД | ☑ | ||
---|---|---|---|---|
0
DrShust
23.01.15
✎
13:11
|
Всем добрый день!
УФ (хотя в данном случае не суть). Есть документ с заполненной табчастью: номенклатура и т.д.. К номенклатуре нужно подтянуть инфу в эту табчасть. В СКД создал набор данных Запрос, в котором, собственно, инфа и собирается. Полученный результат выгружается в ТЗ. Далее табчасть обходится в цикле, а в полученной ТЗ ищется номенклатура и выдёргивается по ней инфа. Но в полученной ТЗ, естественно, данные и по той номенклатуре, которой нет в табчасти. Внешним набором (набор данных Объект) передаю табчасть в СКД, чтобы соединить 2 набора: Запрос и Объект, чтобы в полученной ТЗ осталась только инфа по номенклатуре табчасти. Проблема следующая:соединение в СВЯЗИ НАБОРОВ ДАННЫХ только левое, а нужно внутреннее. Предполагается, что отборы пользователь может устанавливать на форме документа (как в отчётах), потому не могу номенклатуру табчасти отправить в сам запрос, а уже потом отправить в СКД. Есть предложения? тзСостав = Состав.Выгрузить(, "Номенклатура"); ВнешниеНаборыДанных = Новый Структура; ВнешниеНаборыДанных.Вставить("тзСостав", тзСостав); МК = Новый КомпоновщикМакетаКомпоновкиДанных; МКД = МК.Выполнить(ПолучитьИзВременногоХранилища(АдресСхемыКомпоновкиДанных), НастройкиФормированияРЗП.Настройки,,, Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); ПКД = Новый ПроцессорКомпоновкиДанных; ПКД.Инициализировать(МКД, ВнешниеНаборыДанных); ПВ = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений; ПВ.ОтображатьПроцентВывода = Истина; лТЗДанные = ПВ.Вывести(ПКД); // Это ТЗ из СКД Если лТЗДанные.Количество() <> 0 Тогда Для Каждого лЭлем Из лТабЧастьСостав Цикл // Обходим табчасть лПараметрыОтбора = Новый Структура; лПараметрыОтбора.Вставить("Номенклатура", лЭлем.Номенклатура); лНайденныеСтроки = лТЗДанные.НайтиСтроки(лПараметрыОтбора); Для Каждого лСтрока Из лНайденныеСтроки Цикл // По найденной номенклатуре заполняем данными лЭлем.Рек1 = лСтрока.Знач1; КонецЦикла; КонецЦикла; КонецЕсли; |
|||
1
Defender aka LINN
23.01.15
✎
13:14
|
(0) Ну наложи отбор на соединяемый запрос, делов-то.
|
|||
2
DrShust
23.01.15
✎
13:16
|
(1) Я в этот набор передаю только Номенклатуру... Какой отбор, например?
|
|||
3
Defender aka LINN
23.01.15
✎
13:23
|
(2) По полю, которое в присоединяемом наборе находится, вестимо.
|
|||
4
DrShust
23.01.15
✎
13:28
|
(3) Это понятно, что из присоединяемого. У меня сейчас передаётся только Номенклатура. Что нужно в отборе указать, чтобы всё было ОК? Или, может, ещё что-то отправить в Объект и по этому полю делать отбор?
|
|||
5
ам794123
23.01.15
✎
13:49
|
Сделай проще - добавь реквизит формы типа Динамический спиок (произвольный запрос). А уж его потом можно вертеть по всякому: тут тебе и отборы и группировки с сортировками и условное оформление.
|
|||
6
Defender aka LINN
23.01.15
✎
14:37
|
(4) Я ему про Фому, он мне про Ерему. Да пофигу что у тебя куда передается, отбор этим всем передачам не родственник и даже не сосоед.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |