1С:Предприятие
:: 1С:Предприятие 8 общая
|
|
| ||
asder117 30.09.20 - 17:08 | Допиливаю огроменный отчет по дебиторской задолженности
Есть кусок запроса ВЫБРАТЬ ВзаиморасчетыСКонтрагентамиОбороты.ДоговорКонтрагента, ВзаиморасчетыСКонтрагентамиОбороты.Сделка КАК Сделка, ВзаиморасчетыСКонтрагентамиОбороты.Регистратор, ВзаиморасчетыСКонтрагентамиОбороты.Организация, ВзаиморасчетыСКонтрагентамиОбороты.Контрагент КАК Контрагент, ВзаиморасчетыСКонтрагентамиОбороты.СуммаВзаиморасчетовОборот КАК СуммаВзаиморасчетовОборот, ВзаиморасчетыСКонтрагентамиОбороты.СуммаВзаиморасчетовПриход КАК СуммаВзаиморасчетовПриход, ВзаиморасчетыСКонтрагентамиОбороты.СуммаВзаиморасчетовРасход КАК СуммаВзаиморасчетовРасход, ВзаиморасчетыСКонтрагентамиОбороты.СуммаУпрОборот КАК СуммаУпрОборот, ВзаиморасчетыСКонтрагентамиОбороты.СуммаУпрПриход КАК СуммаУпрПриход, ВзаиморасчетыСКонтрагентамиОбороты.СуммаУпрРасход КАК СуммаУпрРасход, ВЫБОР КОГДА РАЗНОСТЬДАТ(ВЫБОР КОГДА ВзаиморасчетыСКонтрагентамиОбороты.Регистратор.ДатаПогашениеЗадолженности = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) ТОГДА ВзаиморасчетыСКонтрагентамиОбороты.Регистратор.Дата ИНАЧЕ ВзаиморасчетыСКонтрагентамиОбороты.Регистратор.ДатаПогашениеЗадолженности КОНЕЦ, &КонецПериода, ДЕНЬ) > 14 И РАЗНОСТЬДАТ(ВЫБОР КОГДА ВзаиморасчетыСКонтрагентамиОбороты.Регистратор.ДатаПогашениеЗадолженности = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) ТОГДА ВзаиморасчетыСКонтрагентамиОбороты.Регистратор.Дата ИНАЧЕ ВзаиморасчетыСКонтрагентамиОбороты.Регистратор.ДатаПогашениеЗадолженности КОНЕЦ, &КонецПериода, ДЕНЬ) <= 30 И ВЫБОР КОГДА РАЗНОСТЬДАТ(ВЫБОР КОГДА ВзаиморасчетыСКонтрагентамиОбороты.Регистратор.ДатаПогашениеЗадолженности = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) ТОГДА ВзаиморасчетыСКонтрагентамиОбороты.Регистратор.Дата ИНАЧЕ ВзаиморасчетыСКонтрагентамиОбороты.Регистратор.ДатаПогашениеЗадолженности КОНЕЦ, &КонецПериода, ДЕНЬ) > 0 ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ = ИСТИНА ТОГДА ВзаиморасчетыСКонтрагентамиОбороты.СуммаВзаиморасчетовПриход - ВзаиморасчетыСКонтрагентамиОбороты.СуммаВзаиморасчетовРасход ИНАЧЕ 0 КОНЕЦ КАК От60До70Дубль2 ИЗ РегистрНакопления.ВзаиморасчетыСКонтрагентами.Обороты(, &КонецПериода, Регистратор, ) КАК ВзаиморасчетыСКонтрагентамиОбороты ГДЕ ВзаиморасчетыСКонтрагентамиОбороты.Контрагент = &Контрагент И ВзаиморасчетыСКонтрагентамиОбороты.Сделка = &Сделка ИТОГИ СУММА(СуммаВзаиморасчетовОборот), СУММА(СуммаВзаиморасчетовПриход), СУММА(СуммаВзаиморасчетовРасход), СУММА(СуммаУпрОборот), СУММА(СуммаУпрПриход), СУММА(СуммаУпрРасход), СУММА(От60До70Дубль2) ПО Контрагент, Сделка Сразу оговорюсь это кусок большого запроса, который я выдернул в консоль. В Итогах Эта конструкция не отрабатывает "ВзаиморасчетыСКонтрагентамиОбороты.СуммаВзаиморасчетовПриход - ВзаиморасчетыСКонтрагентамиОбороты.СуммаВзаиморасчетовРасход" Если убрать итоги то выходят 2 строки в одной платежка как приход на 150 700 в другой реализация как расход на 31500 В итоге в поле От60До70Дубль2 он тянет 31 500 а должен тянуть 31500-150700. В платежке это поле должно быть пусто по реализации стоит 31 500 Это правильно так.как реализация приход не делает Что не так в запросе может кто подскажет. Спасибо | ||
Жан Пердежон 1 - 30.09.20 - 17:18 | у тебя в поле От60До70Дубль2 выбор и куча условий - с ними разберись | ||
asder117 2 - 30.09.20 - 17:24 | (1) вот и не могу понять что не так | ||
palpetrovich 3 - 30.09.20 - 17:27 | проверь за 2 раза, не меняя параметров так ТОГДА ВзаиморасчетыСКонтрагентамиОбороты.СуммаВзаиморасчетовПриход и так ТОГДА ВзаиморасчетыСКонтрагентамиОбороты.СуммаВзаиморасчетовРасход | ||
Жан Пердежон 4 - 30.09.20 - 17:27 | выведи все значения все значения в отдельные колонки и увидишь как вариант - у какого-то регистратора нет поля "ДатаПогашениеЗадолженности " | ||
asder117 5 - 30.09.20 - 17:29 | (4) ИЛИ ВзаиморасчетыСКонтрагентамиОбороты.Регистратор.ДатаПогашениеЗадолженности ЕСТЬ NULL и проверяет это | ||
asder117 6 - 30.09.20 - 17:31 | (3) В первом случае показал 31 500 во втором 0 | ||
Жан Пердежон 7 - 30.09.20 - 17:32 | |||
palpetrovich 8 - 30.09.20 - 17:35 | (6) ну дык, все верно показывает, ищи где NULL получился | ||
asder117 9 - 30.09.20 - 17:36 | (5) ВЫБОР КОГДА ВзаиморасчетыСКонтрагентамиОбороты.Регистратор.ДатаПогашениеЗадолженности = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) ИЛИ ВзаиморасчетыСКонтрагентамиОбороты.Регистратор.ДатаПогашениеЗадолженности ЕСТЬ NULL  //И ВзаиморасчетыСКонтрагентамиОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг ТОГДА ВзаиморасчетыСКонтрагентамиОбороты.Регистратор.Дата ИНАЧЕ ВзаиморасчетыСКонтрагентамиОбороты.Регистратор.ДатаПогашениеЗадолженности КОНЕЦ КАК ДатаПОгашения, Эта конструкция проверяет если пусто или null подставляет значение даты документа | ||
asder117 10 - 30.09.20 - 17:37 | (8) NULL нет а 0 есть | ||
Жан Пердежон 11 - 30.09.20 - 17:40 | |||
asder117 12 - 30.09.20 - 17:42 | (11) Я это уже поправил....но проблему не решил этим | ||
Жан Пердежон 13 - 30.09.20 - 17:48 | ну так выведи эти четыре даты и посмотри что к чему | ||
asder117 14 - 30.09.20 - 21:13 | (13) Ввел и ничего особого не заметил..в одно месте пустая дата (реализация) в другом NULL в результате оператора выбор проставилась датадокумента | ||
hhhh 15 - 01.10.20 - 00:17 | (14) вообще-то так правильно
КОГДА ЕСТЬNULL(ВзаиморасчетыСКонтрагентамиОбороты.Регистратор.ДатаПогашениеЗадолженности, ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)) = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0) и не нужно никаких ИЛИ | ||
asder117 16 - 01.10.20 - 14:10 | (15) И зачем мне пустую дату...в той конструкции я проверяю если дата пустая или поле нет такого то берется дата документа | ||
Жан Пердежон 17 - 01.10.20 - 14:44 | (14) то есть ты всё равно предлагаешь нам поугадывать какие у тебя там даты и посчитать за тебя разность дат? | ||
asder117 18 - 01.10.20 - 15:13 | (17) У документа поле дата погашения есть но иногда ее не заполняют, у документа платежка ее нет..почему и стоит эта проверка что если пусто или NULL то брать за первую дату дату документа | ||
Жан Пердежон 19 - 01.10.20 - 15:17 | Просто
Выпиши Даты | ||
asder117 20 - 01.10.20 - 15:31 | (19) Разобрался вроде спасибо..все взлетело..в поле последнем не то тянулось..Удачи всем |
|
Список тем форума |