Гость
Форумы / [игнор отключен] [закрыт для гостей] / Как запросом выбрать самую последнюю запись регистра / 25 сообщений из 27, страница 1 из 2
13.08.2009, 16:45
    #36142452
Albert777
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запросом выбрать самую последнюю запись регистра
Такой вопрос! Есть запрос:
ВЫБРАТЬ
Абоненты.ЛицевойСчет КАК ЛС,
Абоненты.Наименование КАК ФИО,
ИспользованиеУслугСрезПоследних.Тариф
ИЗ
Справочник.Абоненты КАК Абоненты
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИспользованиеУслуг.СрезПоследних КАК ИспользованиеУслугСрезПоследних
ПО (ИспользованиеУслугСрезПоследних.Абонент = Абоненты.Ссылка)
ГДЕ
Абоненты.ПометкаУдаления = ЛОЖЬ
И Абоненты.ЭтоГруппа = ЛОЖЬ
И Абоненты.Ссылка = &Абонент

в результат запроса выводится 2 строки, т.к. в регистре сведений "ИспользованиеУслуг" 2 записи для данного абонента(Пусть будет "Петров"). А как сделать, чтобы бралась только одна самая последняя запись???
...
Рейтинг: 0 / 0
13.08.2009, 18:32
    #36142809
Программист 1с
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запросом выбрать самую последнюю запись регистра
Добавить Абоненты.период
Сортировать по нему и брать только первый элемент.
...
Рейтинг: 0 / 0
13.08.2009, 23:42
    #36143204
TopManager
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запросом выбрать самую последнюю запись регистра
Здравствуйте, Коллеги!

В запросе есть конструкция ВЫБРАТЬ ПЕРВЫЕ 1, используя ее и не используя виртуальную таблицу (СрезПоследних), а взяв настоящую (РегистрСведений.ИспользованиеУслуг), отсортировав по периоду в обратном порядке - вы достигните цели!

Бизнес-консультант ,
Красовский Юрий.
...
Рейтинг: 0 / 0
14.08.2009, 08:27
    #36143435
leaf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запросом выбрать самую последнюю запись регистра
ну вообще вроде бы в срезе последних
по определению храниться срез по измерениям?
если так - определите какой срез вам нужен ...
например Абонент и тариф
проще говоря нужно допусловие

Код: plaintext
отсортировав по периоду в обратном порядке - вы достигните цели

а что виртуальная таблица делает? я просто староват у меня память плохая
объясните кто знает как оно работает?
...
Рейтинг: 0 / 0
14.08.2009, 08:32
    #36143440
leaf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запросом выбрать самую последнюю запись регистра
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
ВЫБРАТЬ
Абоненты.ЛицевойСчет КАК ЛС,
Абоненты.Наименование КАК ФИО,
ИспользованиеУслугСрезПоследних.Тариф
ИЗ
Справочник.Абоненты КАК Абоненты
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ИспользованиеУслуг.СрезПоследних КАК ИспользованиеУслугСрезПоследних
ПО (ИспользованиеУслугСрезПоследних.Абонент = Абоненты.Ссылка)
ГДЕ
Абоненты.ПометкаУдаления = ЛОЖЬ
И Абоненты.ЭтоГруппа = ЛОЖЬ
И Абоненты.Ссылка = &Абонент

Код: plaintext
Абоненты.Ссылка = &Абонент
Код: plaintext
Справочник.Абоненты КАК Абоненты

з.ы.
что бы я так жил ... как он тратит машинные ресурсы ...
а почему не напрямую из регистра?
...
Рейтинг: 0 / 0
14.08.2009, 08:49
    #36143460
Albert777
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запросом выбрать самую последнюю запись регистра
Добавил период и отсортировал, получилось:
ВЫБРАТЬ
Абоненты.ЛицевойСчет КАК ЛС,
Абоненты.Наименование КАК ФИО,
ЗапросТариф.Тариф КАК Тариф
ИЗ
Справочник.Абоненты КАК Абоненты
ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ПЕРВЫЕ 1
ИспользованиеУслугСрезПоследних.Тариф КАК Тариф,
ИспользованиеУслугСрезПоследних.Абонент КАК Абонент,
ИспользованиеУслугСрезПоследних.Период КАК Период,
ИспользованиеУслугСрезПоследних.Абонент.Ссылка КАК АбонентСсылка
ИЗ
РегистрСведений.ИспользованиеУслуг.СрезПоследних КАК ИспользованиеУслугСрезПоследних
//ГДЕ
// ИспользованиеУслугСрезПоследних.Абонент = &абонент

УПОРЯДОЧИТЬ ПО
Период УБЫВ) КАК ЗапросТариф
ПО Абоненты.Ссылка = ЗапросТариф.Абонент.Ссылка
ГДЕ
Абоненты.ПометкаУдаления = ЛОЖЬ
И Абоненты.ЭтоГруппа = ЛОЖЬ
// ИспользованиеУслугСрезПоследних.Абонент = &абонент

В итоге, если закоментировать строки с условием во вложенном запросе, тогда в результат запроса выводятся ЛС, ФИО нормально, а вот тариф везде пустой. Но если для конкретного абонента, то тариф выводится нормально. Не пойму в чем дело!
...
Рейтинг: 0 / 0
14.08.2009, 08:57
    #36143476
Albert777
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запросом выбрать самую последнюю запись регистра
leaf,На прямую из регистра не получится, потому что есть абоненты, у которых тариф не проставлен, их тоже надо выбрать.
...
Рейтинг: 0 / 0
14.08.2009, 09:06
    #36143490
leaf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запросом выбрать самую последнюю запись регистра
Код: plaintext
leaf,На прямую из регистра не получится, потому что есть абоненты, у которых тариф не проставлен, их тоже надо выбрать

а если запрос пустой - у вас есть ссылка ) вы же условие жесткое ставите на справочник?
ладно растите дальше ...

а ничего не выводится потому :

Код: plaintext
ВЫБРАТЬ ПЕРВЫЕ  1 
и
Код: plaintext
ЗапросТариф.Абонент = &абонент
разберитесь что такое виртуальная таблица и с чем ее едят - потом прийдете
...
Рейтинг: 0 / 0
14.08.2009, 09:12
    #36143499
leaf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запросом выбрать самую последнюю запись регистра
точнее ...
Код: plaintext
а вот тариф везде пустой
вы плохо смотрите
должен быть один не пустой абонент
...
Рейтинг: 0 / 0
14.08.2009, 09:49
    #36143552
Albert777
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запросом выбрать самую последнюю запись регистра
ну да точно, один абонент не пустой))
...
Рейтинг: 0 / 0
14.08.2009, 10:40
    #36143672
Albert777
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запросом выбрать самую последнюю запись регистра
Все, понял свою ощибку. Все спасибо!
...
Рейтинг: 0 / 0
14.08.2009, 15:56
    #36144931
Как запросом выбрать самую последнюю запись регистра
Тариф, как я понимаю, является в данный момент измерением регистра? Если так, то, сделайте его ресурсом и в СрезеПоследних будет именно последнее значение тарифа. А то, что записи двоят при текущем положении дел, объясняется особенностью работы СрезаПоследних, т.к. он выбирает последние значения по всем наборам измерений
...
Рейтинг: 0 / 0
14.08.2009, 15:56
    #36144937
Как запросом выбрать самую последнюю запись регистра
неточность. по всем уникальным наборам измерений
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
03.03.2014, 19:20
    #38577204
Apt Dima
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запросом выбрать самую последнюю запись регистра
Добрый день.
Не пинайте сильно, но я так и не понял, как сделать такой запрос ???
помогите примером.
...
Рейтинг: 0 / 0
04.03.2014, 12:59
    #38577660
Владимир Лазурко
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запросом выбрать самую последнюю запись регистра
Apt Dima,

СрезПоследних выдаст последнюю запись периодического регистра сведений
...
Рейтинг: 0 / 0
07.03.2014, 11:22
    #38580933
Apt Dima
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запросом выбрать самую последнюю запись регистра
[quot Владимир Лазурко
СрезПоследних выдаст последнюю запись периодического регистра сведений[/quot]

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

РегистрСведений.ЗаказНаряды двигаются и другими документами.

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

такой запрос не работает ((
...
Рейтинг: 0 / 0
07.03.2014, 12:03
    #38580987
Последний выдох ГПЖ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запросом выбрать самую последнюю запись регистра
Apt Dima[quot Владимир Лазурко
СрезПоследних выдаст последнюю запись периодического регистра сведений

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

РегистрСведений.ЗаказНаряды двигаются и другими документами.

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

такой запрос не работает (([/quot]

ежу понятно что оно работать не будет... ибо вы берете только 1 запись из всего среза
...
Рейтинг: 0 / 0
07.03.2014, 12:05
    #38580993
AHDP
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запросом выбрать самую последнюю запись регистра
Apt Dima,

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

Зачем получать дату и ссылку в результатах запроса? Получайте сразу необходимое представление документа и статуса работы.
...
Рейтинг: 0 / 0
07.03.2014, 12:12
    #38581000
Последний выдох ГПЖ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запросом выбрать самую последнюю запись регистра
>РегистрСведений.ЗаказНаряды.СрезПоследних(, ЗаказНаряд = ДокЗаказНаряд.Ссылка)

и это будет работать? да еще в подзапросе?
...
Рейтинг: 0 / 0
07.03.2014, 12:22
    #38581014
Apt Dima
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запросом выбрать самую последнюю запись регистра
AHDPApt Dima,


| РегистрСведений.ЗаказНаряды.СрезПоследних(, ЗаказНаряд = ДокЗаказНаряд.Ссылка) КАК ЗН)


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

Такая штука не работает, это же не параметр запроса.
...
Рейтинг: 0 / 0
07.03.2014, 13:07
    #38581076
Apt Dima
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запросом выбрать самую последнюю запись регистра
[quot Последний выдох ГПЖ]Apt Dimaпропущено...


ежу понятно что оно работать не будет... ибо вы берете только 1 запись из всего среза

Может вы предположите, то что будет работать ???
...
Рейтинг: 0 / 0
07.03.2014, 13:19
    #38581090
Программист 1с
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запросом выбрать самую последнюю запись регистра
1. Левое соединение правильное.
2. соединить с всеми записями регистра сведений.
3. Выбрать по документам минимальную запись по периоду.
4. Получить значение из регистра сведений по этой минимальной дате.

Все.
...
Рейтинг: 0 / 0
07.03.2014, 14:49
    #38581191
Apt Dima
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запросом выбрать самую последнюю запись регистра
Программист 1с1. Левое соединение правильное.
2. соединить с всеми записями регистра сведений.
3. Выбрать по документам минимальную запись по периоду.
4. Получить значение из регистра сведений по этой минимальной дате.

Все.

вроде как то так получилось....

Запрос.Текст = "
|ВЫБРАТЬ
...
| ДокЗаказНаряд.Дата КАК Дата,
| ДокЗаказНаряд.Ссылка КАК ЗаказНаряд,
| РегЗаказНаряд.СтатусРаботы КАК СтатусРаботы,
| РегЗаказНаряд.Реализация КАК Реализация
|ИЗ
| Документ.ЗаказНаряд КАК ДокЗаказНаряд
|
|ЛЕВОЕ СОЕДИНЕНИЕ
|
|(ВЫБРАТЬ
| ЗНСрезПоследних.ЗаказНаряд КАК ЗаказНаряд,
| ЗНСрезПоследних.СтатусРаботы КАК СтатусРаботы,
| ЗНСрезПоследних.Реализация КАК Реализация
| ИЗ
| РегистрСведений.ЗаказНаряды.СрезПоследних() КАК ЗНСрезПоследних
| ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
| МАКСИМУМ(ЗН.Период) КАК Период,
| ЗН.ЗаказНаряд КАК ЗаказНаряд
| ИЗ
| РегистрСведений.ЗаказНаряды.СрезПоследних() КАК ЗН
|
| СГРУППИРОВАТЬ ПО
| ЗН.ЗаказНаряд) КАК ПоследняяЗаписьЗН
| ПО (ПоследняяЗаписьЗН.ЗаказНаряд = ЗНСрезПоследних.ЗаказНаряд)
| И (ПоследняяЗаписьЗН.Период = ЗНСрезПоследних.Период)) КАК РегЗаказНаряд
|ПО ДокЗаказНаряд.Ссылка = РегЗаказНаряд.ЗаказНаряд
|";
...
Рейтинг: 0 / 0
07.03.2014, 15:33
    #38581257
Последний выдох ГПЖ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запросом выбрать самую последнюю запись регистра
вариация на тему "срез последних на каждую дату"
...
Рейтинг: 0 / 0
07.03.2014, 16:02
    #38581303
javapecker
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как запросом выбрать самую последнюю запись регистра
Apt Dima, если вы уже сами пишете как вам выбирать последние записи из регистра, не используйте виртуальную таблицу среза последних. Быстрее работать будет.
...
Рейтинг: 0 / 0
Форумы / [игнор отключен] [закрыт для гостей] / Как запросом выбрать самую последнюю запись регистра / 25 сообщений из 27, страница 1 из 2
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]