Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Необходимы данные с регистра сведений по заданным датам

Необходимы данные с регистра сведений по заданным датам
Я
   KIraA
 
12.06.19 - 07:00
Доброго времени суток. Вот запрос...не взлетает :-((

Необходимо с регистра сведений взять данные на срез последних по определенным датам. Подскажите где что подправить?

"ВЫБРАТЬ РАЗЛИЧНЫЕ
|    НАЧАЛОПЕРИОДА(РегистрСтатусовСрезПоследних.Регистратор.Дата, МЕСЯЦ) КАК РегистраторДата
|ПОМЕСТИТЬ Даты
|ИЗ
|    РегистрСведений.РегистрСтатусов.СрезПоследних КАК РегистрСтатусовСрезПоследних
|ГДЕ
|    РегистрСтатусовСрезПоследних.Регистратор.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| &Даты КАК Даты,
| КОЛИЧЕСТВО(РегистрСтатусовСрезПоследних.ОбъектДом) КАК ОбъектДом
|ИЗ
|    Даты КАК Даты
|        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РегистрСтатусов.СрезПоследних(&Даты) КАК РегистрСтатусовСрезПоследних
|        ПО Даты.РегистраторДата = РегистрСтатусовСрезПоследних.Период
|ГДЕ
|    РегистрСтатусовСрезПоследних.СтатусПомещения = ЗНАЧЕНИЕ(перечисление.СБ_СтатусыОбъектов.Активен)"
 
 
   МимохожийОднако
 
1 - 12.06.19 - 07:02
(0) В формулировке "срез последних по определенным датам" заложено противоречие. Если между, то бери не срезы, а просто записи регистра.
   KIraA
 
2 - 12.06.19 - 07:13
"ВЫБРАТЬ РАЗЛИЧНЫЕ
|    НАЧАЛОПЕРИОДА(РегистрСтатусов.Регистратор.Дата, МЕСЯЦ) КАК РегистраторДата
|ПОМЕСТИТЬ Даты
|ИЗ
|    РегистрСведений.РегистрСтатусов КАК РегистрСтатусов
|ГДЕ
|    РегистрСтатусов.Регистратор.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
|;
|
////////////////////////////////////////////////////////////////////////////////

|ВЫБРАТЬ
| &Даты КАК Даты,
| КОЛИЧЕСТВО(РегистрСтатусов.ОбъектДом) КАК ОбъектДом
|ИЗ
|    Даты КАК Даты
|        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РегистрСтатусов(&Даты) КАК РегистрСтатусов
|        ПО Даты.РегистраторДата = РегистрСтатусов.Период
|ГДЕ
|    РегистрСтатусов.СтатусПомещения = ЗНАЧЕНИЕ(перечисление.СБ_СтатусыОбъектов.Активен)"


не сработало
   catena
 
3 - 12.06.19 - 07:17
(2)Переформулируйте задачу, непонятно, что пытаетесь сделать.
   Пузан
 
4 - 12.06.19 - 07:21
СрезПоследних не поможет. Если в цикле решать задачу нельзя, то придется писать запрос получающий срез последних по датам (или любому другому набору данных) самостоятельно. Через соединение регистра с самим собой по максимуму дат и выборкой нужных реквизитов для соединения с набором данных. Как то так.
   МимохожийОднако
 
5 - 12.06.19 - 07:25
(2) Пока не сформулируешь для себя (и ,возможно, для нас), не взлетит. Возможно, тебе нужны данные по датам по каждому регистратору. Но это называется по - другому. Нажми красную Я, там есть на эту тему.
   KIraA
 
6 - 12.06.19 - 07:26
Есть запрос который отрабатывает правильно, но с конкретным указанием даты.
|ВЫБРАТЬ
| КОЛИЧЕСТВО(РегистрСтатусовСрезПоследних.ОбъектДом) КАК ОбъектДом
|ИЗ
|    Даты КАК Даты
|        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РегистрСтатусов.СрезПоследних(&Дата) КАК РегистрСтатусовСрезПоследних
|        ПО Даты.РегистраторДата = РегистрСтатусовСрезПоследних.Период
|ГДЕ
|    РегистрСтатусовСрезПоследних.СтатусПомещения = ЗНАЧЕНИЕ(перечисление.СБ_СтатусыОбъектов.Активен)"

Теперь нужно получить такие же данные но по нескольким датам. Не прибегая к циклу.
   МимохожийОднако
 
7 - 12.06.19 - 07:43
   Вася Теркин
 
8 - 12.06.19 - 12:09
проще всего динамически текст запроса сформировать через ОБЪЕДИНИТЬ
   Вася Теркин
 
9 - 12.06.19 - 12:14
ТекстЗапроса = "&&";
Для каждого текДата из массивДат Цикл

ТекстЗапроса = ТекстЗапроса + "ОБЪЕДИНИТЬ ВСЕ
|ВЫБРАТЬ
| КОЛИЧЕСТВО(РегистрСтатусовСрезПоследних.ОбъектДом) КАК ОбъектДом
|ИЗ
|    Даты КАК Даты
|        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РегистрСтатусов.СрезПоследних("+ ВернутьДатуОтформитированной(текДата ) + ") КАК РегистрСтатусовСрезПоследних
|        ПО Даты.РегистраторДата = РегистрСтатусовСрезПоследних.Период
|ГДЕ
|    РегистрСтатусовСрезПоследних.СтатусПомещения = ЗНАЧЕНИЕ(перечисление.СБ_СтатусыОбъектов.Активен)";
КонецЦикла;
ТекстЗапроса = СтрЗаменить(ТекстЗапроса,"&&ОБЪЕДИНИТЬ ВСЕ","");
   Вася Теркин
 
10 - 12.06.19 - 12:16
Как-то так
А зачем тебе Даты КАК Даты? Запрос странный
   PuhUfa
 
11 - 12.06.19 - 13:12
   Amfiaray
 
12 - 12.06.19 - 14:27
ВЫБРАТЬ
    ТабдицаДат.Дата
ПОМЕСТИТЬ ВТ_Даты
ИЗ
    &ТабдицаДат КАК ТабдицаДат
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    ВТ_Даты.Дата,
    ДокументыФизическихЛиц.Физлицо,
    МАКСИМУМ(ДокументыФизическихЛиц.Период) КАК Период,
    ДокументыФизическихЛиц.ВидДокумента
ПОМЕСТИТЬ ВТ_МаксимальныеПериоды
ИЗ
    ВТ_Даты КАК ВТ_Даты
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ДокументыФизическихЛиц КАК ДокументыФизическихЛиц
        ПО ВТ_Даты.Дата >= ДокументыФизическихЛиц.Период

СГРУППИРОВАТЬ ПО
    ДокументыФизическихЛиц.Физлицо,
    ВТ_Даты.Дата,
    ДокументыФизическихЛиц.ВидДокумента
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    ВТ_МаксимальныеПериоды.Дата,
    ДокументыФизическихЛиц.Физлицо,
    ДокументыФизическихЛиц.ВидДокумента,
    ДокументыФизическихЛиц.Серия,
    ДокументыФизическихЛиц.Номер,
    ДокументыФизическихЛиц.ДатаВыдачи,
    ДокументыФизическихЛиц.СрокДействия,
    ДокументыФизическихЛиц.КемВыдан,
    ДокументыФизическихЛиц.КодПодразделения,
    ДокументыФизическихЛиц.ЯвляетсяДокументомУдостоверяющимЛичность,
    ДокументыФизическихЛиц.Представление
ИЗ
    ВТ_МаксимальныеПериоды КАК ВТ_МаксимальныеПериоды
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ДокументыФизическихЛиц КАК ДокументыФизическихЛиц
        ПО ВТ_МаксимальныеПериоды.Период = ДокументыФизическихЛиц.Период
            И ВТ_МаксимальныеПериоды.Физлицо = ДокументыФизическихЛиц.Физлицо
            И ВТ_МаксимальныеПериоды.ВидДокумента = ДокументыФизическихЛиц.ВидДокумента

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.