Имя: Пароль:
1C
1С v8
Вопрос по запросу.
0 asder117
 
28.07.22
15:34
ВЫБОР
    КОГДА РАЗНОСТЬДАТ(ВЫБОР
                    КОГДА ВзаиморасчетыСКонтрагентамиОбороты.Регистратор.ДатаПогашениеЗадолженности = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
                            ИЛИ ВзаиморасчетыСКонтрагентамиОбороты.Регистратор.ДатаПогашениеЗадолженности ЕСТЬ NULL
                        ТОГДА ВзаиморасчетыСКонтрагентамиОбороты.Регистратор.Дата
                    ИНАЧЕ ВзаиморасчетыСКонтрагентамиОбороты.Регистратор.ДатаПогашениеЗадолженности
                КОНЕЦ, &КонецПериода, ДЕНЬ) > 7
            И РАЗНОСТЬДАТ(ВЫБОР
                    КОГДА ВзаиморасчетыСКонтрагентамиОбороты.Регистратор.ДатаПогашениеЗадолженности = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
                            ИЛИ ВзаиморасчетыСКонтрагентамиОбороты.Регистратор.ДатаПогашениеЗадолженности ЕСТЬ NULL
                        ТОГДА ВзаиморасчетыСКонтрагентамиОбороты.Регистратор.Дата
                    ИНАЧЕ ВзаиморасчетыСКонтрагентамиОбороты.Регистратор.ДатаПогашениеЗадолженности
                КОНЕЦ, &КонецПериода, ДЕНЬ) <= 14
            И ВЫБОР
                КОГДА ВзаиморасчетыСКонтрагентамиОстатки.СуммаВзаиморасчетовОстаток > 0
                        И РАЗНОСТЬДАТ(ВЫБОР
                                КОГДА ВзаиморасчетыСКонтрагентамиОбороты.Регистратор.ДатаПогашениеЗадолженности = ДАТАВРЕМЯ(1, 1, 1, 0, 0, 0)
                                        ИЛИ ВзаиморасчетыСКонтрагентамиОбороты.Регистратор.ДатаПогашениеЗадолженности ЕСТЬ NULL
                                    ТОГДА ВзаиморасчетыСКонтрагентамиОбороты.Регистратор.Дата
                                ИНАЧЕ ВзаиморасчетыСКонтрагентамиОбороты.Регистратор.ДатаПогашениеЗадолженности
                            КОНЕЦ, &КонецПериода, ДЕНЬ) > 0
                    ТОГДА ИСТИНА
                ИНАЧЕ ЛОЖЬ
            КОНЕЦ = ИСТИНА
        ТОГДА ВзаиморасчетыСКонтрагентамиОбороты.СуммаВзаиморасчетовПриход - ВЫБОР
                КОГДА ВзаиморасчетыСКонтрагентамиОбороты.Регистратор ССЫЛКА Документ.ПлатежноеПоручениеВходящее
                    ТОГДА ВзаиморасчетыСКонтрагентамиОбороты.СуммаВзаиморасчетовРасход
                ИНАЧЕ ВзаиморасчетыСКонтрагентамиОбороты.СуммаВзаиморасчетовРасход
            КОНЕЦ
    ИНАЧЕ 0
КОНЕЦ
Приветствую. Такая конструкция имеет место быть или как-то упростить можно? Цель - проверить если есть установленная в документе дата погашения задолженности то использовать ее в разности дат с текущей если пусто тогда использовать дату дока
1 lubitelxml
 
28.07.22
15:44
(0) зачем здесь выбор?:
            ВЫБОР
                КОГДА ВзаиморасчетыСКонтрагентамиОбороты.Регистратор ССЫЛКА Документ.ПлатежноеПоручениеВходящее
                    ТОГДА ВзаиморасчетыСКонтрагентамиОбороты.СуммаВзаиморасчетовРасход
                ИНАЧЕ ВзаиморасчетыСКонтрагентамиОбороты.СуммаВзаиморасчетовРасход
            КОНЕЦ
2 Ненавижу 1С
 
гуру
28.07.22
15:44
(0)
1. используйте МЕЖДУ
2. вы уже проверили величину, что она больше 7, она тем более будет больше 0 (1 и 3 условие)
3. ВЫБОР
                КОГДА ВзаиморасчетыСКонтрагентамиОбороты.Регистратор ССЫЛКА Документ.ПлатежноеПоручениеВходящее
                    ТОГДА ВзаиморасчетыСКонтрагентамиОбороты.СуммаВзаиморасчетовРасход
                ИНАЧЕ ВзаиморасчетыСКонтрагентамиОбороты.СуммаВзаиморасчетовРасход
            КОНЕЦ //идентичные ветки
3 Ненавижу 1С
 
гуру
28.07.22
15:47
ВЫБОР
    КОГДА РАЗНОСТЬДАТ(ВЫБОР
                    КОГДА ВзаиморасчетыСКонтрагентамиОбороты.Регистратор.ДатаПогашениеЗадолженности> ДАТАВРЕМЯ(1, 1, 1)
                        ТОГДА ВзаиморасчетыСКонтрагентамиОбороты.Регистратор.ДатаПогашениеЗадолженности
                    ИНАЧЕ ВзаиморасчетыСКонтрагентамиОбороты.Регистратор.Дата
                КОНЕЦ, &КонецПериода, ДЕНЬ) МЕЖДУ 8 и 14
    ТОГДА ВзаиморасчетыСКонтрагентамиОбороты.СуммаВзаиморасчетовОборот
    ИНАЧЕ 0
КОНЕЦ
4 asder117
 
28.07.22
15:59
(3) Понял. Спасибо покручу
5 asder117
 
28.07.22
16:39
(3) проверил сработало
У меня идут группировки:
-Контрагент
--Договор
---Заказ
Регистратор (он может быть как реализация так и платежка)
так вот в поле где реализация там все норм стоит 0 а вот в поле платежка стоит -сумма. Я понимаю из-за чего (у дока нет поля даты погашения вообще) я проверкой на NULL данного поля и хотел проверять наличие
ИЛИ ВзаиморасчетыСКонтрагентамиОбороты.Регистратор.ДатаПогашениеЗадолженности ЕСТЬ NULL или ИЛИ ВзаиморасчетыСКонтрагентамиОбороты.Регистратор.ДатаПогашениеЗадолженности = неопределено
вот в чем загвоздка
6 asder117
 
28.07.22
16:43
(5) Переделал так..вроде норм стало
ВЫБОР
        КОГДА РАЗНОСТЬДАТ(ВЫБОР
                    КОГДА ВзаиморасчетыСКонтрагентамиОбороты.Регистратор.ДатаПогашениеЗадолженности = ДАТАВРЕМЯ(1, 1, 1)
                            ИЛИ ВзаиморасчетыСКонтрагентамиОбороты.Регистратор.ДатаПогашениеЗадолженности = НЕОПРЕДЕЛЕНО
                        ТОГДА ВзаиморасчетыСКонтрагентамиОбороты.Регистратор.Дата
                    ИНАЧЕ ВзаиморасчетыСКонтрагентамиОбороты.Регистратор.ДатаПогашениеЗадолженности
                КОНЕЦ, &КонецПериода, ДЕНЬ) МЕЖДУ 8 И 14
            ТОГДА ВзаиморасчетыСКонтрагентамиОбороты.СуммаВзаиморасчетовОборот
        ИНАЧЕ 0
    КОНЕЦ КАК От60До70,
7 Ненавижу 1С
 
гуру
28.07.22
16:51
(6) "От60До70" - Это что означает?
8 asder117
 
28.07.22
16:55
(7) Поле разницы дней (от и до) В СКД я его имя меняю как мне надо (от 7-14). Понимаю что не правильно сейчас переписываю по (3) подсказке все внутренние условия.
9 asder117
 
28.07.22
16:55
(8) ну и поля в том числе как должны быть
10 asder117
 
08.08.22
12:07
(6) Интересная ситуация. Запрос отрабатывает на ура..но блин причина одна есть и я не догоню как ее избежать
ТОГДА ВзаиморасчетыСКонтрагентамиОбороты.СуммаВзаиморасчетовОборот В результате запрос а в консоли вываливается несколько строк. Если в сумме это поле взять получается сумма которая нужна, но в строку в отчете выводит только одну сумму которая находится в строке. Как можно чтобы в поле От60До70 выходила именно сумма по всему взаиморасчету
11 Ненавижу 1С
 
гуру
08.08.22
12:11
(10) не поверишь - суммировать
12 asder117
 
08.08.22
12:12
(11) Имеешь ввиду в самом запросе? В СКД в ресурсах я его суммирую...Или еще дополнительно в запросе надо?
13 Ненавижу 1С
 
гуру
08.08.22
13:32
(12) в запросе
14 asder117
 
08.08.22
13:52
(13) Как я тебя правильно понял поработать с группировками в запросе (их там сейчас нет) суммирование без группировок не работает же
15 Ненавижу 1С
 
гуру
08.08.22
14:10
(14) разумеется
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший