|   |   | 
| 
 | подскажите по запросу | ☑ | ||
|---|---|---|---|---|
| 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 | 
        Если скидок и соглашений много, то должно быть непротиворечивое начало и конец.
 Тогда ищем к каждому началу ближайший конец,тогда получится. Если интервалы перекрываются,то выбираем покрывающий максимальный интервал. | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |