Имя: Пароль:
1C
 
Передача даты в виртуальную таблицу в запросе
0 НоваяВолна
 
09.12.21
08:48
Запрос который надо исправить:

ВЫБРАТЬ
    Событие.ЛицевойСчет КАК ЛицевойСчет,
    Событие.Дата КАК ДатаСобытия,
    Событие.Ответственный,
    МАКСИМУМ(ПДАСрезПоследних.ДатаАктуальности) КАК ДатаАктуальности,
    ВЫБОР
        КОГДА Событие.Дата <= ПДАСрезПоследних.ДатаАктуальности
                ИЛИ ПДАСрезПоследних.ДатаАктуальности ЕСТЬ NULL
            ТОГДА 0
        ИНАЧЕ 1
    КОНЕЦ КАК АктуальноНаМоментСобытия,
    ВЫБОР
        КОГДА ПДАСрезПоследних.ДатаАктуальности >= Событие.Дата
            ТОГДА 1
        ИНАЧЕ 0
    КОНЕЦ КАК ПроставленоПДА
ИЗ
    Документ.Событие КАК Событие
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПДА.СрезПоследних(&ОкончаниеПериода, ) КАК ПДАСрезПоследних
        ПО Событие.ЛицевойСчет = ПДАСрезПоследних.ЛицевойСчет
ГДЕ
    Событие.Дата МЕЖДУ &НачалоПериода И КОНЕЦПЕРИОДА(&ОкончаниеПериода, ДЕНЬ)
    И НЕ Событие.ПометкаУдаления
    И Событие.Ответственный В(&СписокСотрудников)
    И Событие.Проведен = ИСТИНА
    И Событие.ЛицевойСчет <> ЗНАЧЕНИЕ(Справочник.ЛицевыеСчета.ПустаяСсылка)

проблема в том, что в Левом Соединении к РегистрСведений.ПДА.СрезПоследних(&ОкончаниеПериода, ) вместо &ОкончаниеПериода нужна Событие.Дата из этого же запроса. Каким образом переформировать запрос через ВТ или подзапросы?
1 Мультук
 
гуру
09.12.21
08:54
(0)

Ты спросил у гугла? на мисте есть даже закрепленный ответ
2 НоваяВолна
 
09.12.21
09:08
3 НоваяВолна
 
10.12.21
06:26
Добавлю в тему немного другой вопрос.... Если хранить в РС дату + время, на сколько процентов вырастит база? Другими словами Есть РС.ПДА Независимый, с периодичностью в пределах секунды. В нем Реквизит ПДАС.ДатаАктуальности Тип - Дата ... потребовалось сравнивать значения ДатаВремя в документе с этим реквизитом РС
4 НоваяВолна
 
10.12.21
06:28
(3) ** немного очепяток ))) смысл в том что надо сравнить дату документа до секунды с реквизитом РС в котором секунд нет, хотя сам он с периодикой до секунды.
5 Мультук
 
гуру
10.12.21
07:17
(3)


1) Математика уровня кол-во записей умножить на размер поля
2) Взять тестовую базу добавить поле, с помощью известной функции/обработки посмотреть насколько выросла искомая таблица
3) Вспомнить что на дворе уже 2021 год гигабайтами базу не напугаешь
4) Если это реквизит, то там уже на уровне запроса проблема с производительностью, поэтому наверное его просто можно привести к КОНЕЦПЕРИОДА прямо в запросе.

P.S.
Написано на автопилоте, меряй производительность и думай, плиз сам.
6 НоваяВолна
 
10.12.21
07:31
(5) спасибо, особенно приятно что вся "тяжелая артиллерия" форума собралась .... или почти вся ))))
На самом деле подумал, не надо мне хранить лишнее. По моим задачам есть другие пути обхода проблемы