|
подскажите по запросу | ☑ | ||
---|---|---|---|---|
0
Мисти
27.03.21
✎
20:01
|
Вроде, всё просто. Реквизит регистра имееет составное значение, я хочу по нему объединить 2 временные таблицы, но получаю ругань еще на этапе конструктора "противоречивая связь" - это ведь из-за составного типа?
У меня по факту всё одного типа, и я в запросе написала ВЫБОР КОГДА ДействиеСкидокНаценокСрезПоследних.Источник ССЫЛКА Справочник.СоглашенияСКлиентами ТОГДА ДействиеСкидокНаценокСрезПоследних.Источник ИНАЧЕ ЗНАЧЕНИЕ(Справочник.СоглашенияСКлиентами.ПустаяСсылка) КОНЕЦ но это не помогло. А как же быть? |
|||
1
Мисти
27.03.21
✎
20:11
|
пишут, что можно руками дописать.
|
|||
2
RomanYS
27.03.21
✎
20:15
|
При "объединить" нет никаких связей, только количество полей в запросах должно совпадать
|
|||
3
Мисти
27.03.21
✎
20:26
|
Роман! Помогите! Ну, не идут у меня запросы. Регистр скидок, там период, соглашение, скидка и действует - не действует, нужно табличку со сроком действия "с" "по". Проще некуда! Одна временная таблица, где период "датаНач" - со статусом "действует", вторая - со статусом "не действует", там период - "дата кон". Вижу запросником обе таблицы, но они не соединяются в одну! Так и выдается первая таблица, где датаКон везде пустая.
Объединить? |
|||
4
Мисти
27.03.21
✎
20:27
|
Если просто объединить, то я получу ту же кучу как в регистре - в 1 строке начало действия. а в другой конец.
|
|||
5
Мисти
27.03.21
✎
20:55
|
только по соглашению связь - соединяет, только по скидкам - тоже почему не соединяет и по скидкам и по соглашению?
|
|||
6
Мисти
27.03.21
✎
20:56
|
ВТ_Действует.ДатаНач КАК ДатаНач,
ВТ_Действует.Соглашение КАК Соглашение, ВТ_Действует.СегментПартнеров КАК СегментПартнеров ИЗ ВТ_Действует КАК ВТ_Действует ЛЕВОЕ СОЕДИНЕНИЕ ВТ_НеДействует КАК ВТ_НеДействует ПО ВТ_Действует.СкидкаНаценка = ВТ_НеДействует.СкидкаНаценка И ВТ_Действует.Соглашение = ВТ_НеДействует.Соглашение |
|||
7
Мисти
27.03.21
✎
21:47
|
дайте совет-то?
|
|||
8
hhhh
27.03.21
✎
22:06
|
(7) вроде всё правильно. Давайте весь запрос, что ли.
|
|||
9
Мисти
27.03.21
✎
22:15
|
ВЫБРАТЬ
ДействиеСкидокНаценокСрезПоследних.Статус КАК Статус, ДействиеСкидокНаценокСрезПоследних.СкидкаНаценка КАК СкидкаНаценка, ДействиеСкидокНаценокСрезПоследних.СегментПартнеров КАК СегментПартнеров, ДействиеСкидокНаценокСрезПоследних.Период КАК ДатаНач, ДействиеСкидокНаценокСрезПоследних.Источник КАК Источник, ВЫБОР КОГДА ДействиеСкидокНаценокСрезПоследних.Источник ССЫЛКА Справочник.СоглашенияСКлиентами ТОГДА ДействиеСкидокНаценокСрезПоследних.Источник ИНАЧЕ ЗНАЧЕНИЕ(Справочник.СоглашенияСКлиентами.ПустаяСсылка) КОНЕЦ КАК Соглашение ПОМЕСТИТЬ ВТ_Действует ИЗ РегистрСведений.ДействиеСкидокНаценок.СрезПоследних КАК ДействиеСкидокНаценокСрезПоследних ГДЕ ДействиеСкидокНаценокСрезПоследних.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыДействияСкидок.Действует) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ДействиеСкидокНаценокСрезПоследних.Источник КАК Источник, ДействиеСкидокНаценокСрезПоследних.Статус КАК Статус, ДействиеСкидокНаценокСрезПоследних.СкидкаНаценка КАК СкидкаНаценка, ДействиеСкидокНаценокСрезПоследних.СегментПартнеров КАК СегментПартнеров, ДействиеСкидокНаценокСрезПоследних.Период КАК ДатаКон, ВЫБОР КОГДА ДействиеСкидокНаценокСрезПоследних.Источник ССЫЛКА Справочник.СоглашенияСКлиентами ТОГДА ДействиеСкидокНаценокСрезПоследних.Источник ИНАЧЕ ЗНАЧЕНИЕ(Справочник.СоглашенияСКлиентами.ПустаяСсылка) КОНЕЦ КАК Соглашение ПОМЕСТИТЬ ВТ_НеДействует ИЗ РегистрСведений.ДействиеСкидокНаценок.СрезПоследних КАК ДействиеСкидокНаценокСрезПоследних ГДЕ ДействиеСкидокНаценокСрезПоследних.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыДействияСкидок.НеДействует) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_Действует.СкидкаНаценка КАК СкидкаНаценка, ВТ_НеДействует.ДатаКон КАК ДатаКон, ВТ_Действует.ДатаНач КАК ДатаНач, ВТ_Действует.Соглашение КАК Соглашение, ВТ_Действует.СегментПартнеров КАК СегментПартнеров ИЗ ВТ_Действует КАК ВТ_Действует ЛЕВОЕ СОЕДИНЕНИЕ ВТ_НеДействует КАК ВТ_НеДействует ПО ВТ_Действует.СкидкаНаценка = ВТ_НеДействует.СкидкаНаценка И ВТ_Действует.Соглашение = ВТ_НеДействует.Соглашение УПОРЯДОЧИТЬ ПО Соглашение, СкидкаНаценка, СегментПартнеров, ДатаНач |
|||
10
Мисти
27.03.21
✎
22:17
|
как это ужасно - быть тупым программистом.
|
|||
11
Turku
27.03.21
✎
22:23
|
(9) Ваш запрос в УТ11.4 работает нормально. Никакой ругани :-)
|
|||
12
Ненавижу 1С
гуру
27.03.21
✎
22:27
|
(9) если на одно соглашение будут несколько раз включать/отключать одну скидку будет неправильно выводить
|
|||
13
Ненавижу 1С
гуру
27.03.21
✎
22:30
|
(9) хотя... вы два раза берете срезы с противоположными условиями и пытаетесь их соединить, разве не пустой результат всегда будет?
|
|||
14
Ненавижу 1С
гуру
27.03.21
✎
22:31
|
может вам это Вывести значения из периодического регистра сведений с и по надо?
|
|||
15
Мисти
27.03.21
✎
22:32
|
да, ругани нет, ругань в самом запросе, но руками написала - и проехало.
Но отчет не формаируется! В смысле - не добавляет конец к началу. |
|||
16
Мисти
27.03.21
✎
22:33
|
у меня формируется 2 таблицы, я их вижу, таблтца с началом действия и таблица с концом действия, с одникакоывми скидками и соглашениями. Почему я не могу в одну вевести?
|
|||
17
Мисти
27.03.21
✎
22:34
|
(14) похоже, но у меня есть еще статус, поэтому должно быть проще.
|
|||
18
Мисти
27.03.21
✎
22:37
|
01.01.2020 соглашение1 скидка2% действует
01.01.2020 соглашение2 скидка2% действует 31.01.2020 Срнлашение1 Скидка2% НеДействует 31.01.2020 Срнлашение2 Скидка2% НеДействует Я хочу получить 01.01.2020 31.01.2020 соглашение1 скидка2% 01.01.2020 31.01.2020 соглашение2 скидка2% |
|||
19
Ненавижу 1С
гуру
27.03.21
✎
22:40
|
(18) почему-то я не верю, что вы получаете по одним и тем же наборам (источник, скидка) данные в обеих таблицах
посмотрите внимательнее |
|||
20
Ненавижу 1С
гуру
27.03.21
✎
22:40
|
(19) или у вас измерений больше чем два
|
|||
21
Мисти
27.03.21
✎
22:41
|
я же выложила полеый текст. Гляньте, а? Типовая база!
|
|||
22
Мисти
27.03.21
✎
22:42
|
Источник, скидка, в первой таблице - со статусом "действует", во второй - "не действует"
|
|||
23
Ненавижу 1С
гуру
27.03.21
✎
22:46
|
(18) "соглашение1" и "Срнлашение1" это опечатка или реально разные данные?
|
|||
24
Мисти
27.03.21
✎
22:47
|
Выводятся скидки, у которых нет конца!
А у которых конец есть - не выводятся вовсе. Выкинула поле "Источник", вроде, оно и не мешалось, ну и ничего не изменилось. |
|||
25
Мисти
27.03.21
✎
22:47
|
(23) опечатка, конечно, это я набиваю отдельно сейчас пример
|
|||
26
Мисти
27.03.21
✎
22:51
|
Я поняла, глобальная проблема. Они - реально, разные! Надо что-то сделать со срезом? Или как?
Я добралась до сути. У тех, у кого есть конец - выводится только конец, а у кого конца нет - выводится начало! |
|||
27
Ненавижу 1С
гуру
27.03.21
✎
22:56
|
(26) срез вам вообще не поможет, никак
|
|||
28
Мисти
27.03.21
✎
22:57
|
если не срез, а просто регистр, то всё сейчас получилось, у меня пока по 1 периоду на каждую скидку, но я так понимаю, их может быть много! Что тогда? Выбрать дату начала максимальную и дату конца максимальную?
|
|||
29
Ненавижу 1С
гуру
27.03.21
✎
22:57
|
попробуйте вот это:
ВЫБРАТЬ ДействиеСкидокНаценокДействует.Источник КАК Источник, ДействиеСкидокНаценокДействует.СкидкаНаценка КАК СкидкаНаценка, ДействиеСкидокНаценокДействует.Период КАК ПериодНачала, МИНИМУМ(ДействиеСкидокНаценокНеДействует.Период) КАК ПериодОкончания ИЗ РегистрСведений.ДействиеСкидокНаценок КАК ДействиеСкидокНаценокДействует ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДействиеСкидокНаценок КАК ДействиеСкидокНаценокНеДействует ПО (ДействиеСкидокНаценокДействует.Источник = ДействиеСкидокНаценокНеДействует.Источник И ДействиеСкидокНаценокДействует.СкидкаНаценка = ДействиеСкидокНаценокНеДействует.СкидкаНаценка И ДействиеСкидокНаценокНеДействует.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыДействияСкидок.НеДействует) И ДействиеСкидокНаценокДействует.Период < ДействиеСкидокНаценокНеДействует.Период) ГДЕ ДействиеСкидокНаценокДействует.Статус = ЗНАЧЕНИЕ(Перечисление.СтатусыДействияСкидок.Действует) СГРУППИРОВАТЬ ПО ДействиеСкидокНаценокДействует.Источник, ДействиеСкидокНаценокДействует.СкидкаНаценка, ДействиеСкидокНаценокДействует.Период |
|||
30
novichok79
27.03.21
✎
22:58
|
Жесть, конечно. Если запрос верен, проблема в данных, это должно быть очевидно. А там только боженька знает, что у вас в БД записано.
|
|||
31
Ненавижу 1С
гуру
27.03.21
✎
22:58
|
(28) берите за главную таблицу - действующие, они всегда идут раньше не действующих, а у недействующих МИНИМУМ периода из превышающих
|
|||
32
Мисти
27.03.21
✎
23:02
|
да, я ж так и беоу - "действующие" - все.
Попробую Ваш запрос, спасибо! |
|||
33
ДедМорроз
28.03.21
✎
11:06
|
Если скидок и соглашений много, то должно быть непротиворечивое начало и конец.
Тогда ищем к каждому началу ближайший конец,тогда получится. Если интервалы перекрываются,то выбираем покрывающий максимальный интервал. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |