Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Помогите с запросом , Динамический список          
vbi Подменю пользователя
сообщение 22.11.12, 13:28
Сообщение #1

Оратор
Иконка группы
Группа: Местный
Сообщений: 381
Из: Украина, Луцк
Спасибо сказали: 74 раз
Рейтинг: 66.6

Есть в запросе таблица с такими реквизитами:
Контрагент ДокументПартии

У одного контрагента может быть несколько документов партии.

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

Например:

Контрагент1 Поступление 1 от 02.10.2012
Контрагент1 Поступление 2 от 20.11.2012
Контрагент1 Поступление 3 от 22.11.2012
Контрагент2 Поступление 4 от 18.11.2012
Контрагент2 Поступление 5 от 19.11.2012

надо только:

Контрагент1 Поступление 3 от 22.11.2012
Контрагент2 Поступление 5 от 19.11.2012

Как построить запрос?
P.S. Запрос используется в динамическом списке управляемого приложения.


Signature
Впроваджую, супроводжую

Vofka Подменю пользователя
сообщение 22.11.12, 13:40
Сообщение #2

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 14050
Из: Киев
Спасибо сказали: 4612 раз
Рейтинг: 3748.8

|ВЫБРАТЬ
|    Контрагент,
|    МАКСИМУМ(ДокументПартии) КАК ДокументПартии
|ИЗ
|    МояТаблица
|СГРУППИРОВАТЬ ПО
|    Контрагент


Но правильней, конечно, добавить в таблицу дату и брать МАКСИМУМ от даты.

Спасибо сказали: vbi,

vbi Подменю пользователя
сообщение 22.11.12, 14:31
Сообщение #3

Оратор
Иконка группы
Группа: Местный
Сообщений: 381
Из: Украина, Луцк
Спасибо сказали: 74 раз
Рейтинг: 66.6

Так почему-то не работает. Берет не последний документ. Возможно документ создавался пожже но задним числом, что порядок ссылок не соответствует порядку дат.
Ну хорошо, добавим дату, а что делать с партией? Ведь так

|ВЫБРАТЬ 
|    Контрагент,
|    МАКСИМУМ(ДокументПартии) КАК ДокументПартии
|    МАКСИМУМ(ДокументПартии.Дата) КАК ДатаПартии
|ИЗ
|    МояТаблица
|СГРУППИРОВАТЬ ПО
|    Контрагент


тоже работает не правильно

Сообщение отредактировал logist - 22.11.12, 14:34


Signature
Впроваджую, супроводжую

logist Подменю пользователя
сообщение 22.11.12, 14:33
Сообщение #4

Про1С-ник
Иконка группы
Квалифицированный бухгалтерГений телепатии и социального моделированияЗа заслуги на форуме в 2010 годуМодератору Про1С (за заслуги в 2011 году)
Группа: Местный
Сообщений: 9564
Из: Kharkiv, UA
Спасибо сказали: 2539 раз
Рейтинг: 0

|ВЫБРАТЬ
|    Контрагент,
|    ДокументПартии,
|    МАКСИМУМ(ДокументПартии.Дата)
|ИЗ
|    МояТаблица
|СГРУППИРОВАТЬ ПО
|    Контрагент




Signature
Личные бесплатные консультации не даю, для этого есть форум!

alex040269 Подменю пользователя
сообщение 22.11.12, 14:34
Сообщение #5

Крутой
Иконка группы
Группа: Местный
Сообщений: 1626
Из: Гуляйполе
Спасибо сказали: 236 раз
Рейтинг: 0

Цитата(vbi @ 22.11.12, 14:31) *
Так почему-то не работает. Берет не последний документ. Возможно документ создавался пожже но задним числом, что порядок ссылок не соответствует порядку дат.
Ну хорошо, добавим дату, а что делать с партией? Ведь так

|ВЫБРАТЬ
| Контрагент,
| МАКСИМУМ(ДокументПартии) КАК ДокументПартии
| МАКСИМУМ(ДокументПартии.Дата) КАК ДатаПартии
|ИЗ
| МояТаблица
|СГРУППИРОВАТЬ ПО
| Контрагент

тоже работает не правильно


|ВЫБРАТЬ
| Контрагент,
| ДокументПартии,
| МАКСИМУМ(ДокументПартии.Дата) КАК ДатаПартии
|ИЗ
| МояТаблица
|СГРУППИРОВАТЬ ПО
| Контрагент,ДокументПартии


Signature
Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник.
ЗиУП

Vofka Подменю пользователя
сообщение 22.11.12, 15:12
Сообщение #6

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 14050
Из: Киев
Спасибо сказали: 4612 раз
Рейтинг: 3748.8

logist, ваш вариант не рабочий уже по синтаксису wink.gif .

alex040269, результат вашего запроса (я так понимаю Логист его же хотел написать) вернет ту же таблицу, которая была. Точно такую же.

Насчет добавить дату я не то имел ввиду. Как-то так:

|ВЫБРАТЬ
|    Контрагент,
|    МАКСИМУМ(ДокументПартии.Дата) КАК ДатаПартии
|ПОМЕСТИТЬ ХЗ
|ИЗ
|    МояТаблица КАК МояТаблица
|СГРУППИРОВАТЬ ПО
|    Контрагент
|;
|ВЫБРАТЬ
|    МояТаблица.Контрагент,
|    МАКСИМУМ(МояТаблица.ДокументПартии) КАК ДокументПартии,
|ИЗ
|    МояТаблица КАК МояТаблица
|    ВНУТРЕННЕЕ СОЕДИНЕНИЕ ХЗ КАК ХЗ
|        ПО МояТаблица.Контрагент = ХЗ.Контрагент
|        ПО МояТаблица.ДатаПартии = ХЗ.ДокументПартии.Дата
|СГРУППИРОВАТЬ ПО
|    МояТаблица.Контрагент


Признаться, я удивлен, что никто из авторов выше (включая ТС) не знал как правильно запрос составить.

Я вот только не помню можно ли в динамическом списке использовать временные таблицы. Если нет, то запрос можно переписать так:

|ВЫБРАТЬ
|    МояТаблица.Контрагент,
|    МАКСИМУМ(МояТаблица.ДокументПартии) КАК ДокументПартии,
|ИЗ
|    МояТаблица КАК МояТаблица
|    ВНУТРЕННЕЕ СОЕДИНЕНИЕ (
|                ВЫБРАТЬ
|                    Контрагент,
|                    МАКСИМУМ(ДокументПартии.Дата) КАК ДатаПартии
|                ИЗ
|                    МояТаблица КАК МояТаблица
|                СГРУППИРОВАТЬ ПО
|                    Контрагент
|                ) КАК ХЗ
|        ПО МояТаблица.Контрагент = ХЗ.Контрагент
|        ПО МояТаблица.ДатаПартии = ХЗ.ДокументПартии.Дата
|СГРУППИРОВАТЬ ПО
|    МояТаблица.Контрагент


Сообщение отредактировал Vofka - 22.11.12, 15:12

Спасибо сказали: vbi,

vbi Подменю пользователя
сообщение 22.11.12, 15:38
Сообщение #7

Оратор
Иконка группы
Группа: Местный
Сообщений: 381
Из: Украина, Луцк
Спасибо сказали: 74 раз
Рейтинг: 66.6

Спасибо Вофка, временные таблицы в дин. списке использовать нельзя. А вот второй вариант поинтересней. Сейчас попробуем. Вот еще лучше было бы соединять не по дате а по моменту времени, только как его в запросе получить?..


Signature
Впроваджую, супроводжую

Vofka Подменю пользователя
сообщение 22.11.12, 15:59
Сообщение #8

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 14050
Из: Киев
Спасибо сказали: 4612 раз
Рейтинг: 3748.8

Цитата(vbi @ 22.11.12, 15:38) *
Вот еще лучше было бы соединять не по дате а по моменту времени

Я не думаю, что это было бы лучше, т.к. я лично не знаю как будет отрабатывать функция МАКСИМУМ для момента времени. Я догадываюсь, но надо понимать, что это инфа не 100%. К тому же, динамический список подразумевает работу с пользователем. А пользователь работает с датой (число-месяц-год часы-минуты-секунды) и все, что меньше секунды ним не будет восприниматься. Поэтому, собственно, не вижу в этом смысла.

Спасибо сказали: vbi,

vbi Подменю пользователя
сообщение 22.11.12, 16:33
Сообщение #9

Оратор
Иконка группы
Группа: Местный
Сообщений: 381
Из: Украина, Луцк
Спасибо сказали: 74 раз
Рейтинг: 66.6

МАКСИМУМ для момента времени - нельзя добавить. Ошибка.


Signature
Впроваджую, супроводжую

Vofka Подменю пользователя
сообщение 22.11.12, 16:36
Сообщение #10

У нас здесь своя атмосфера...
***********
Группа: Основатель
Сообщений: 14050
Из: Киев
Спасибо сказали: 4612 раз
Рейтинг: 3748.8

Цитата(vbi @ 22.11.12, 16:33) *
МАКСИМУМ для момента времени - нельзя добавить. Ошибка.

Ну тем более smile.gif

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 15.06.25, 13:40
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!