|
Выбрать пару контактных лиц контрагентов. | ☑ | ||
---|---|---|---|---|
0
Падаван в среде 1с
09.12.13
✎
15:39
|
Добрый день. Помогите советом, как в запросе отобрать контактных лиц контрагентов.
Ситуация следующая: За период отбираются документы продажи, из каждого документа берется контрагент и необходимо вывести по 2 контактных для каждого. Суть в том, что на данный момент у кого-то 10 контактных лиц, у кого-то меньше. Выводить всех - нет необходимости. Достаточно 2-х. Хотел в запросе поставить параметр ПЕРВЫЕ 2. Но в этом случае выборка вернет всего 2 записи. Как правильнее сделать, посоветуйте. |
|||
1
Ёпрст
09.12.13
✎
15:43
|
Нам отсюда не видно, как хотел и что получилось.. Текст запроса показывай.
|
|||
2
wms
09.12.13
✎
15:43
|
в запросе никак
|
|||
3
Ёпрст
09.12.13
✎
15:45
|
(2) та ну ?
:)) |
|||
4
bootini
09.12.13
✎
15:48
|
Соединяй с Контактными лицами два раза, в одном поставь функцию в группировке максимум, в другом минимум.
|
|||
5
mikecool
09.12.13
✎
15:50
|
(0) выпирай первые 2 для каждого конрагента, я не против )
|
|||
6
catena
09.12.13
✎
15:52
|
(4)Зачем два раза?
|
|||
7
mikecool
09.12.13
✎
15:54
|
(6) да хоть три раза )))
|
|||
8
wms
09.12.13
✎
15:54
|
ну искл. извращения типа (4)
|
|||
9
Падаван в среде 1с
09.12.13
✎
15:55
|
Вот это изначальный запрос, возвращающий всех контактных лиц.
ВЫБРАТЬ РеализацияАвтомобилейАвтомобили.Ссылка.Дата КАК ДатаОтгрузки, РеализацияАвтомобилейАвтомобили.Автомобиль.Модель КАК МодельАвтомобиля, РеализацияАвтомобилейАвтомобили.Ссылка.СуммаДокумента КАК СтоимостьСделки, КонтактныеЛица.Фамилия + " " + КонтактныеЛица.Имя + " " + КонтактныеЛица.Отчество КАК КонтактноеЛицо, КонтактнаяИнформация.Представление КАК ТелефонКонтактногоЛица, КонтактнаяИнформация1.Представление КАК ЮридическийАдрес, РеализацияАвтомобилейАвтомобили.Ссылка ИЗ Документ.РеализацияАвтомобилей.Автомобили КАК РеализацияАвтомобилейАвтомобили ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КонтактныеЛица КАК КонтактныеЛица ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация ПО КонтактныеЛица.Ссылка = КонтактнаяИнформация.Объект ПО РеализацияАвтомобилейАвтомобили.Ссылка.Контрагент = КонтактныеЛица.Владелец ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация1 ПО РеализацияАвтомобилейАвтомобили.Ссылка.Контрагент = КонтактнаяИнформация1.Объект ГДЕ РеализацияАвтомобилейАвтомобили.Ссылка.Дата МЕЖДУ &Дата И &Дата1 И РеализацияАвтомобилейАвтомобили.Ссылка.Проведен И (НЕ РеализацияАвтомобилейАвтомобили.Ссылка.ПометкаУдаления) И КонтактнаяИнформация.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыконтактнойИнформации.Телефон) И КонтактнаяИнформация1.Тип = ЗНАЧЕНИЕ(Перечисление.ТипыконтактнойИнформации.Адрес) И КонтактнаяИнформация1.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.АдресЮридический) . Хотел сделать так: Нет кода как хотел. Снова повис я - даже выразить не могу то,что в голове крутиться. (4) мысль нравится, минимум и максимум - первого и последнего по-логике получим. Связать достаточно один раз вроде. |
|||
10
wms
09.12.13
✎
15:58
|
через день захотят 3 контактных выводить среднее будем выводить?
а если 4? :-) цикл в цикле сразу делай |
|||
11
Падаван в среде 1с
09.12.13
✎
16:00
|
(10)Это логично... Но иначе как?! Вне запроса обработать можно было бы, но у меня отчет... Поэтому все желательно именно в запросе сделать.
|
|||
12
wms
09.12.13
✎
16:01
|
(11)Если СКД, то можно функцию вызывать из общего модуля и там выбирать нужное количество
|
|||
13
Падаван в среде 1с
09.12.13
✎
16:04
|
В СКД есть настройка - кол-во записей. В ней можно ограничить кол-во записей в каждой группировке
|
|||
14
bootini
09.12.13
✎
16:09
|
ВЫБРАТЬ
Контрагенты.Ссылка, ВложенныйЗапрос.Ссылка КАК Ссылка1, ВложенныйЗапрос.Наименование, ВложенныйЗапрос.Должность, ВложенныйЗапрос.Комментарий, ВложенныйЗапрос.КонтактноеЛицо, ВложенныйЗапрос.Владелец ИЗ Справочник.Контрагенты КАК Контрагенты ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ПЕРВЫЕ 2 КонтактныеЛицаКонтрагентов.Ссылка КАК Ссылка, КонтактныеЛицаКонтрагентов.Наименование КАК Наименование, КонтактныеЛицаКонтрагентов.Должность КАК Должность, КонтактныеЛицаКонтрагентов.Комментарий КАК Комментарий, КонтактныеЛицаКонтрагентов.КонтактноеЛицо КАК КонтактноеЛицо, КонтактныеЛицаКонтрагентов.Владелец КАК Владелец ИЗ Справочник.КонтактныеЛицаКонтрагентов КАК КонтактныеЛицаКонтрагентов) КАК ВложенныйЗапрос ПО Контрагенты.Ссылка = ВложенныйЗапрос.Владелец |
|||
15
Падаван в среде 1с
09.12.13
✎
17:35
|
Увы, данный код отбирает всего 2 первые записи из контактныхЛиц, и далее пытается связаться с КОнтрагентами.В итоге имеем, что записей нет.
Мой вариант с ограничением в СКД - оказался проблемным. Не все записи попадают(Вроде в запросе стоит Левое соединение у реализации, но тем не менее записи с пустыми контактными лицами в отчет не попали), плюс ограничение уровня ограничивает и данные(некоторые данные могут быть ниже, а их не увидим) |
|||
16
The_SpecialOne
09.12.13
✎
18:09
|
Вот пример. По каждому контрагенту отбирается 2 контактных лица:
ВЫБРАТЬ
|
|||
17
Падаван в среде 1с
09.12.13
✎
21:06
|
(16) премного благодарен. Значительно лучше выглядит, нежели как сделал я(минимум и максимум)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |