Имя: Пароль:
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) спасибо, особенно приятно что вся "тяжелая артиллерия" форума собралась .... или почти вся ))))
На самом деле подумал, не надо мне хранить лишнее. По моим задачам есть другие пути обхода проблемы
Независимо от того, куда вы едете — это в гору и против ветра!