как решить проблему дублирования ячеек при соединении в запросе
Только учусь, поэтому не пинайте сильно.
Клиентом была поставлена задача, сделать отчет, который выводил бы взаиморасчеты с контрагентами исходя из периода событий (часть договоров предусматривает отсрочку платежа по 14 дней, часть по 30 и т.д.).
Но появилась 1 проблема, которую я не знаю как решить. Если запрос находит по первой таблице контрагента и в нем было 3 движения(3 регистратора), то при соединении к нему 2 таблици, которая находит по этому контрагенту только одно движение в указанный период(1 регистратор), в соединенной таблице в колонке регистратор2 создаються 3 идентичные строки. Я не могу придумать, что бы при соединении создавался 1 элемент и 2 null.
Понимаю что проблема для Вас элементарная, но я не вижу выхода.
мой запрос который вставляю в скд
Заранее спс.
Клиентом была поставлена задача, сделать отчет, который выводил бы взаиморасчеты с контрагентами исходя из периода событий (часть договоров предусматривает отсрочку платежа по 14 дней, часть по 30 и т.д.).
Но появилась 1 проблема, которую я не знаю как решить. Если запрос находит по первой таблице контрагента и в нем было 3 движения(3 регистратора), то при соединении к нему 2 таблици, которая находит по этому контрагенту только одно движение в указанный период(1 регистратор), в соединенной таблице в колонке регистратор2 создаються 3 идентичные строки. Я не могу придумать, что бы при соединении создавался 1 элемент и 2 null.
Понимаю что проблема для Вас элементарная, но я не вижу выхода.
мой запрос который вставляю в скд
ВЫБРАТЬ
ВЫБОР
КОГДА ЕСТЬNULL(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОборо ты1.Контрагент, 0) <> 0
ТОГДА ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОборо ты1.Контрагент
ИНАЧЕ ВложенныйЗапрос.Контрагент
КОНЕЦ КАК контрагент,
ВЫБОР
КОГДА ЕСТЬNULL(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОборо ты1.ДоговорКонтрагента.Номер, 0) <> 0
ТОГДА ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОборо ты1.ДоговорКонтрагента.Номер
ИНАЧЕ ВложенныйЗапрос.ДоговорКонтрагентаНомер
КОНЕЦ КАК ДоговорКонтрагентаНомер,
ВЫБОР
КОГДА ЕСТЬNULL(ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОборо ты1.Контрагент.ОсновнойМенеджерПокупателя, 0) <> 0
ТОГДА ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОборо ты1.Контрагент.ОсновнойМенеджерПокупателя
ИНАЧЕ ВложенныйЗапрос.ОсновнойМенеджерПокупателя
КОНЕЦ КАК ОсновнойМенеджерПокупателя,
ВложенныйЗапрос.ДокументРасчетовСКонтрагентом КАК Регистратор14дней,
ВложенныйЗапрос.СуммаВзаиморасчетовКонечныйОстаток КАК Остаток14дней,
ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОборо ты1.Сделка,
ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОборо ты1.ДокументРасчетовСКонтрагентом КАК Регистратор15_30дней,
ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОборо ты1.СуммаВзаиморасчетовКонечныйОстаток КАК Остаток15_30дней
ИЗ
РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.ОстаткиИОбороты(
,
&ДатаКон,
,
ДвиженияИГраницыПериода,
ДокументРасчетовСКонтрагентом.Дата <= ДОБАВИТЬКДАТЕ(&ДатаКон, ДЕНЬ, -15)
И ДокументРасчетовСКонтрагентом.Дата >= ДОБАВИТЬКДАТЕ(&ДатаКон, ДЕНЬ, -30)) КАК ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОборо ты1
ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОборо ты.Контрагент КАК Контрагент,
ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОборо ты.ДоговорКонтрагента.Номер КАК ДоговорКонтрагентаНомер,
ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОборо ты.Контрагент.ОсновнойМенеджерПокупателя КАК ОсновнойМенеджерПокупателя,
ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОборо ты.ДокументРасчетовСКонтрагентом КАК ДокументРасчетовСКонтрагентом,
ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОборо ты.СуммаВзаиморасчетовКонечныйОстаток КАК СуммаВзаиморасчетовКонечныйОстаток
ИЗ
РегистрНакопления.ВзаиморасчетыСКонтрагентамиПоДокументамРасчетов.ОстаткиИОбороты(
,
&ДатаКон,
,
,
ДокументРасчетовСКонтрагентом.Дата <= &ДатаКон
И ДокументРасчетовСКонтрагентом.Дата >= ДОБАВИТЬКДАТЕ(&ДатаКон, ДЕНЬ, -14)) КАК ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОборо ты) КАК ВложенныйЗапрос
ПО ВзаиморасчетыСКонтрагентамиПоДокументамРасчетовОстаткиИОборо ты1.Контрагент = ВложенныйЗапрос.Контрагент
ПоказатьЗаранее спс.
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
По мне так тут не нужно соединение, нужны два поля остатков, одно остаток с просрочкой до 15 дней, другое от 15 до 30.
Сами поля вычисляются выбором:
Выбор когда ДокументРасчетовСКонтрагентом.Дата <= ДОБАВИТЬКДАТЕ(&ДатаКон, ДЕНЬ, -15)
И ДокументРасчетовСКонтрагентом.Дата >= ДОБАВИТЬКДАТЕ(&ДатаКон, ДЕНЬ, -30) Тогда ВложенныйЗапрос.СуммаВзаиморасчетовКонечныйОстаток Иначе 0 конец
Сами поля вычисляются выбором:
Выбор когда ДокументРасчетовСКонтрагентом.Дата <= ДОБАВИТЬКДАТЕ(&ДатаКон, ДЕНЬ, -15)
И ДокументРасчетовСКонтрагентом.Дата >= ДОБАВИТЬКДАТЕ(&ДатаКон, ДЕНЬ, -30) Тогда ВложенныйЗапрос.СуммаВзаиморасчетовКонечныйОстаток Иначе 0 конец
32ops
я думал над этим, скажите, не будет ли ошибкой что в разные поля система будет тянуть одни и те же данные ?
ведь в первой колонке будет -
Тогда ВложенныйЗапрос.СуммаВзаиморасчетовКонечныйОстаток Иначе 0 конец
и во второй -
Тогда ВложенныйЗапрос.СуммаВзаиморасчетовКонечныйОстаток Иначе 0 конец
а фактически все будет идти с одной и той же таблици, то есть данные будут одинаковы.
я думал над этим, скажите, не будет ли ошибкой что в разные поля система будет тянуть одни и те же данные ?
ведь в первой колонке будет -
Тогда ВложенныйЗапрос.СуммаВзаиморасчетовКонечныйОстаток Иначе 0 конец
и во второй -
Тогда ВложенныйЗапрос.СуммаВзаиморасчетовКонечныйОстаток Иначе 0 конец
а фактически все будет идти с одной и той же таблици, то есть данные будут одинаковы.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот