Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 06:36

Нужна помощь в составлении запроса

Автор Gesha, 04 мая 2018, 13:43

0 Пользователей и 2 гостей просматривают эту тему.

alex0402

СрезПоследних('05.05.2018')
Где НекоеБулевоЗначение или НекаяДата > '05.05.2018'
Добавлено: 05 мая 2018, 08:34


Цитата: Gesha от 04 мая 2018, 15:03Это ресурс. Сделал его измерением, но результат тот же.
если может быть две записи в один и тот же период, тогда - измерение, если нет - то ресурс.
Спасибо за Сказать спасибо

Gesha

Цитата: alex0402 от 05 мая 2018, 08:28СрезПоследних('05.05.2018')
Где НекоеБулевоЗначение или НекаяДата > '05.05.2018'

Тот же результат - только Документ3.
Я значение в поле "Период" взял из головы, для упрощения, т.к. срез последних тут не поможет. Возможно ли другим способом как-то получить нужный результат?

P.S. В этой таблице указаны точные данные в "Период".








ИмяДокументаПериодНекоеБулевоЗначениеНекаяДата
Документ104.09.2017 12:56:08ИСТИНА31.12.2017
Документ104.09.2017 12:56:09ЛОЖЬ31.12.2018
Документ230.08.2015 12:00:05ИСТИНА30.12.2015
Документ204.09.2017 12:56:09ЛОЖЬ28.12.2017
Документ330.08.2015 12:00:05ИСТИНА14.12.2017

И если делать СрезПоследних, то и получается что запись с "Документ1" выбирает с значением "ЛОЖЬ", т.к. она последняя по дате/времени. Во всяком случае я так понял...

oleg-x

Именно срез последних, есть и другие варианты, но они по сложнее. Просто тебе надо разобраться с регистрами и понять когда реквизит нужно делать измерением, а когда ресурсом.
Сделай документ и булево измерением и все будет ок, если не получилось, выложи скрины и запрос.
Помог, нажми спасибо. Не помог, нажми спасибо :-)
Если у Вас есть проблема, то её уже кто то решил @Yandex, @Google

Gesha

oleg-x, Я делаю всё это в СКД. Ставлю роль "Измерение" для булево, но результат не меняется, срез как был с Документ1 ЛОЖЬ так и остался. Скрины сделать не могу, к большому моему сожалению :( .Вообще, я хотел сделать так: Пройтись по таблице, и выбрать все строки по каждому документу в отдельную виртуальную таблицу, затем сделать сортировку в этой таблице по полю "НекаяДата", и ВЫБРАТЬ ПЕРВЫЕ 1. Но никак не могу сообразить как это реализовать.

oleg-x

Цитата: Gesha от 05 мая 2018, 11:09
oleg-x, Я делаю всё это в СКД. Ставлю роль "Измерение" для булево, но результат не меняется, срез как был с Документ1 ЛОЖЬ так и остался. Скрины сделать не могу, к большому моему сожалению :( .Вообще, я хотел сделать так: Пройтись по таблице, и выбрать все строки по каждому документу в отдельную виртуальную таблицу, затем сделать сортировку в этой таблице по полю "НекаяДата", и ВЫБРАТЬ ПЕРВЫЕ 1. Но никак не могу сообразить как это реализовать.
Это нужно делать не в скд а в регистре сведений (роль в скд - это совсем не то). У тебя не корректно создан регистр и поэтому в СКД ты не можешь получить нужный результат.
Выбрать первые не подходит. Сейчас у тебя три документа, а завтра 150 документов а потом еще 50 завели.
Помог, нажми спасибо. Не помог, нажми спасибо :-)
Если у Вас есть проблема, то её уже кто то решил @Yandex, @Google

Gesha

УРА ТОВАРИЩИ! :zebzdr: :zebzdr: :zebzdr:
У меня получилось!

Вот код запроса:

ВЫБРАТЬ
Документы.Документ КАК Документ,
МАКСИМУМ(Документы.НекаяДата) КАК НекаяДата
ПОМЕСТИТЬ вт_ДокументыПоследняяНекаяДата
ИЗ
РегистрСведений.Документы КАК Документы
ГДЕ
Документы.НекаяДата <= &ДатаЗапроса
СГРУППИРОВАТЬ ПО
Документы.Документ
;
///////////////////////////////////////////////////////

ВЫБРАТЬ
вт_ДокументыПоследняяНекаяДата.Документ КАК ИмяДокумента,
Документы.НекоеБулевоЗначение КАК НекоеБулевоЗначение,
вт_ДокументыПоследняяНекаяДата.НекаяДата КАК НекаяДата
ИЗ
вт_ДокументыПоследняяНекаяДата
ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.Документы КАК Документы
ПО вт_ДокументыПоследняяНекаяДата.Документ = РегистрСведений.Документы.Документ
И вт_ДокументыПоследняяНекаяДата.НекаяДата = РегистрСведений.Документы.НекаяДата
ГДЕ
Документы.НекоеБулевоЗначение = ИСТИНА


Во временную таблицу я отобрал записи с максимальной датой, за исключением даты, которая ещё не наступила. Затем сделал внутреннее соединение временной таблице и основного регистра по двум полям, документ и некаядата. Проверил на разных регистрах, всё работает!

Отдельное спасибо alex0402 и oleg-x за помощь в решении этой задачи! :ooifh:

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск