Имя: Пароль:
1C
1С v8
Сравнение на больше-меньше в условии связи СКД
0 Sh18
 
06.05.20
09:53
Я так понял, что СКД делать этого не умеет, но есть небольшая надежда, что я чего-то недоглядел
Задача:

Запросом (в СКД) получаются какие-то данные, привязанные к дате: {Данные, Дата}
Есть таблица, в которой пользователем задаются произвольные периоды: {ДатаОт, ДатаДо, Представление}. Эта таблица передается в СКД как внешний набор данных.
Далее их надо объединить и получить только те данные первого запроса, которые попадают в периоды второй таблицы.

Попытка сделать два условия связи ДатаОт <= Дата и ДатаДо >= Дата не срабатывает. Происходит полное соединение (тоже странно), к полному набору данных запроса приписывается Представление1 (первый интервал) и плюс такой же полный набор с Представление2 от второго интервала, то есть, отбор не работает, в отчет выводятся одинаковые (и полные) данные для периода1 и периода2.

Фича? и согласиться на полную внешнюю подготовку данных с последующей загрузкой в СКД?
1 Василий Алибабаевич
 
06.05.20
10:00
(0) Лично я ННП. Но предположу следующее :
1. Нужно делать не "два условия связи ДатаОт <= Дата и ДатаДо >= Дата", а одно. Типа :
Дата Между ДатаОт и ДатаДо
2 mistеr
 
06.05.20
10:03
(0) Да, к сожалению не умеет. Сам не раз напарывался. Серьезная недоработка.

Поле "Условие связи" (если ты про него), используется только для описания собственной иерархии в наборе данных.
3 Sh18
 
06.05.20
10:03
(1) Там такое невозможно. Это вторая закладка в СКД - Связи наборов данных, это не связь в запросе
4 Sh18
 
06.05.20
10:04
(2) Alas, как говорят французы ((
Ладно, будем по-тупому
5 Василий Алибабаевич
 
06.05.20
10:05
(3) Ну тогда по теории БД нужно вычислить суррогатный ключ типа номер периода. Для обоих наборов. И соединять уже по этому полю.
6 mistеr
 
06.05.20
10:13
(5) Если бы так просто.. Поскольку периоды произвольные, то каждая строка из первого набора может попадать в несколько периодов. То есть связь многие-ко-многим. Условием только на равенство такую связь описать невозможно.
7 Sh18
 
06.05.20
10:28
(6) Периоды не пересекаются, но это не поможет. Произвольную таблицу нельзя передать в запрос (чтобы что-то там вычислить). Было бы можно - вопрос бы не стоял
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.