|
Запрос в запросе 1с 8 | ☑ | ||
---|---|---|---|---|
0
Dohter2010
19.04.18
✎
10:41
|
Нужна помощь в запросе(ах).
ВЫБРАТЬ СотрудникиОрганизацииСрезПоследних.ФизЛицо КАК ФизЛицо, ПаспортныеДанныеФизЛицСрезПоследних.ВидДокумента КАК ВидДокумента, ПаспортныеДанныеФизЛицСрезПоследних.Период КАК Период ИЗ РегистрСведений.СотрудникиОрганизации.СрезПоследних(, ) КАК СотрудникиОрганизацииСрезПоследних ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПаспортныеДанныеФизЛиц.СрезПоследних КАК ПаспортныеДанныеФизЛицСрезПоследних ПО СотрудникиОрганизацииСрезПоследних.ФизЛицо = ПаспортныеДанныеФизЛицСрезПоследних.Физлицо ГДЕ СотрудникиОрганизацииСрезПоследних.Организация = &Организация Делаю запрос по всем сотрудникам срез последних и прилепливаю вид документа - беда в том что видов документа может быть несколько, а надо последний. уменя выходит записей по кажддому виду документа. подскажите как правильно? платформа 8.3 не типовая УФ. |
|||
1
dezss
19.04.18
✎
10:48
|
какая структура у РегистрСведений.ПаспортныеДанныеФизЛиц.СрезПоследних?
|
|||
2
Dohter2010
19.04.18
✎
10:50
|
период
измерения : физлицо |
|||
3
Buster007
19.04.18
✎
10:50
|
ну добавь условие на вид документа
|
|||
4
Dohter2010
19.04.18
✎
10:51
|
0
период измерения : физлицо, организация ресурсы: вид документа,серия ,номер, кем выдан. |
|||
5
dezss
19.04.18
✎
10:51
|
(2) ну так и бери последний период
|
|||
6
Ненавижу 1С
гуру
19.04.18
✎
10:51
|
ВидДокумента у тебя измерение
|
|||
7
Ненавижу 1С
гуру
19.04.18
✎
10:52
|
+(6) а нет, все еще хуже
зачем организация в измерениях и вообще зачем? |
|||
8
dezss
19.04.18
✎
10:53
|
(5) + по физ лицу....а потом соединяй по периоду...
|
|||
9
Dohter2010
19.04.18
✎
10:53
|
Мне надо узнать какой документ последний. а мен выдает по каждому виду.
|
|||
10
dezss
19.04.18
✎
10:55
|
(9) в вт пихаешь запрос по Максимум(период) с группировкой по физ. лицу (не к срезу обращаешься, а к самой таблице).
А потом опять эту таблицу соединяешь с получившейся вт по физ. лицу и периоду. |
|||
11
Йохохо
19.04.18
✎
10:58
|
(10) и еще Первые 1, т.к. на период нет уникальности. А на сотрудникисрез тоже надо выбрать различные, т.к. будут дубли на совместителях
|
|||
12
dezss
19.04.18
✎
11:02
|
(11) Либо во втором запросе тоже минимум-максимум уже по виду документа. Различные - это да.
|
|||
13
Dohter2010
19.04.18
✎
11:13
|
мне бы что нибудь типо :
Запрос = выбрать физлица , ( выбрать первые 1 ВидДокумента из ВТ где физлицовт=физлицо) как виддок из СотрудникиСрезПоследних; Только я не понимаю как соединить и передать туда параметр "физлицо" |
|||
14
Dohter2010
19.04.18
✎
11:16
|
А вт это верхняя таблица
|
|||
15
dezss
19.04.18
✎
11:18
|
(14) значит делай еще более верхнюю вт)))
|
|||
16
dezss
19.04.18
✎
11:19
|
(15) а потом сразу свой запрос...
|
|||
17
Йохохо
19.04.18
✎
11:20
|
(13) тебе не нужно соединение, выбери сотрудникисрез.физики уникальные в вт и передай вт в параметры среза ПаспортныеДанныеФизЛиц
|
|||
18
Dohter2010
19.04.18
✎
11:25
|
Вот такая мутотень получилось - не знаю на сколько это "профессионально"
ВЫБРАТЬ МАКСИМУМ(ПаспортныеДанныеФизЛиц.Период) КАК Период, ПаспортныеДанныеФизЛиц.Физлицо КАК Физлицо ПОМЕСТИТЬ Времянка ИЗ РегистрСведений.ПаспортныеДанныеФизЛиц КАК ПаспортныеДанныеФизЛиц ГДЕ ПаспортныеДанныеФизЛиц.Физлицо.Организация = &Организация СГРУППИРОВАТЬ ПО ПаспортныеДанныеФизЛиц.Физлицо ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ПаспортныеДанныеФизЛицСрезПоследних.ВидДокумента КАК ВидДокумента, МАКСИМУМ(ПаспортныеДанныеФизЛицСрезПоследних.Период) КАК Период, ПаспортныеДанныеФизЛицСрезПоследних.Физлицо КАК Физлицо, ПаспортныеДанныеФизЛицСрезПоследних.Физлицо.Наименование КАК ФизлицоНаименование ИЗ РегистрСведений.СотрудникиОрганизации.СрезПоследних(, ) КАК СотрудникиОрганизацииСрезПоследних ЛЕВОЕ СОЕДИНЕНИЕ Времянка КАК Времянка ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПаспортныеДанныеФизЛиц.СрезПоследних КАК ПаспортныеДанныеФизЛицСрезПоследних ПО (Времянка.Период = ПаспортныеДанныеФизЛицСрезПоследних.Период) И (Времянка.Физлицо = ПаспортныеДанныеФизЛицСрезПоследних.Физлицо) ПО (СотрудникиОрганизацииСрезПоследних.ФизЛицо = Времянка.Физлицо) ГДЕ СотрудникиОрганизацииСрезПоследних.Организация = &Организация СГРУППИРОВАТЬ ПО ПаспортныеДанныеФизЛицСрезПоследних.ВидДокумента, ПаспортныеДанныеФизЛицСрезПоследних.Физлицо УПОРЯДОЧИТЬ ПО ФизлицоНаименование |
|||
19
dezss
19.04.18
✎
11:30
|
(18) во втором запросе убирай максимум по периоду и добавь максимум по виду документа
не делай так...присоедини справочник физ. лица и оттуда возьми наименование, если оно тебе так нужно ПаспортныеДанныеФизЛицСрезПоследних.Физлицо.Наименование КАК ФизлицоНаименование |
|||
20
Dohter2010
19.04.18
✎
11:37
|
(19) Да максимум во втором запросе - лишнее а ФизлицоНаименование - это для сортировки Проверки- так оно мне не нужно !
Всем большое спасибо! |
|||
21
Dohter2010
19.04.18
✎
11:45
|
Чорт и вот так получилось :
ВЫБРАТЬ СотрудникиОрганизацииСрезПоследних.ФизЛицо КАК ФизЛицо, МАКСИМУМ(ПаспортныеДанныеФизЛицСрезПоследних.ВидДокумента) КАК ВидДокумента, МАКСИМУМ(ПаспортныеДанныеФизЛицСрезПоследних.Период) КАК Период, СотрудникиОрганизацииСрезПоследних.ФизЛицо.Наименование КАК ФизЛицоНаименование ИЗ РегистрСведений.СотрудникиОрганизации.СрезПоследних(, ) КАК СотрудникиОрганизацииСрезПоследних ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПаспортныеДанныеФизЛиц.СрезПоследних КАК ПаспортныеДанныеФизЛицСрезПоследних ПО (СотрудникиОрганизацииСрезПоследних.ФизЛицо = ПаспортныеДанныеФизЛицСрезПоследних.Физлицо) ГДЕ СотрудникиОрганизацииСрезПоследних.Организация = &Организация СГРУППИРОВАТЬ ПО СотрудникиОрганизацииСрезПоследних.ФизЛицо УПОРЯДОЧИТЬ ПО ФизЛицоНаименование Может об этом говорил Йохохо в (17) !?? |
|||
22
dezss
19.04.18
✎
12:03
|
(21) нельзя так делать. У тебя Максимум периода не будет связан видом документа (просто возьмет макс период и макс вид документа у данного сотрудника, но не факт, что в этом периоде будет этот вид документа).
И еще раз, избавься от этого: СотрудникиОрганизацииСрезПоследних.ФизЛицо.Наименование КАК ФизЛицоНаименование Присоедини еще и таблицу физ лиц, и уже из нее бери наименование. |
|||
23
dezss
19.04.18
✎
12:07
|
(22) + вообще старайся избегать в запросе обращений через вторую точку
|
|||
24
olegves
19.04.18
✎
13:02
|
(4) и кто такое наваял? Потому у тебя срез и не работает - обращайся ко всей таблице через создание своего среза в ВТ
|
|||
25
olegves
19.04.18
✎
13:04
|
+(24) первая ВТ:
Максимум (Период), Физлицо Вторая - соединение с первой по полям ВТ - туда дотянешь ВидДокумента |
|||
26
Dohter2010
19.04.18
✎
14:42
|
(22) Вот я мозгом понимаю что разные , но выборочное тыкание показала что все верно ((
" СотрудникиОрганизацииСрезПоследних.ФизЛицо.Наименование КАК ФизЛицоНаименование " - это часть мне нужна только на этапе проверки результата запроса - в коде её не будет. (24) есть тут "Ваятели" ((( (25) тогда получается 3 таблицы 1) вытянуть даты последнего документа 2) вытянуть документ и соединить с фио- ? |
|||
27
НЕА123
19.04.18
✎
15:20
|
что-не стыкуется (0) и (4)...
ВидДокумента на измерение похоже... ну так ВЫБРАТЬ СотрудникиОрганизацииСрезПоследних.ФизЛицо КАК ФизЛицо, ПаспортныеДанныеФизЛицСрезПоследних.ВидДокумента КАК ВидДокумента, ПаспортныеДанныеФизЛицСрезПоследних.Период КАК Период ИЗ РегистрСведений.СотрудникиОрганизации.СрезПоследних(,Организация = &Организация ) КАК СотрудникиОрганизацииСрезПоследних ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПаспортныеДанныеФизЛиц.СрезПоследних КАК ПаспортныеДанныеФизЛицСрезПоследних ПО СотрудникиОрганизацииСрезПоследних.ФизЛицо = ПаспортныеДанныеФизЛицСрезПоследних.Физлицо |
|||
28
dezss
19.04.18
✎
15:37
|
(26) выборочное тыканье - не показатель...
подготовь данные, которые дадут заведомо неправильный результат на твоем запросе, и все увидишь на этапе проверки лучше тоже писать оптимально, иначе привыкнешь gbcfnm говнокод))) |
|||
29
dezss
19.04.18
✎
15:37
|
(28) gbcfnm -> писать
|
|||
30
olegves
19.04.18
✎
15:41
|
(26) срез по документам можешь не трогать - делай как в (25) 2 временные таблицы и вторую временную (это твой срез) соединяй с виртуальной по документам
|
|||
31
olegves
19.04.18
✎
15:41
|
+(30) соединяй как в (0)
|
|||
32
dezss
19.04.18
✎
15:47
|
(30) больше ВТ полезных и не очень?
зачем вторая ВТ, если все это можно сделать в результирующем запросе? |
|||
33
olegves
19.04.18
✎
16:03
|
(32) так понятнее объяснять
|
|||
34
Dohter2010
19.04.18
✎
17:08
|
(32)в каком результирующем запросе ?
(31) (30) я так и сделал (28) - не пойму как подготовить заведомо не те данные у меня только виддокумента и период (в базе часто встречаются по несколько доков у человека (до 6) а поскольку там переодический регистр то две записи на одно число не заведешь) Подскажи тогда как без "ФизЛицоНаименование" упорядочить по фамилии. от говнокода конечно стараюсь избавляться ! Спасибо всем, что откликнулись. думал простая задача а растянулось на целый день. |
|||
35
dezss
20.04.18
✎
10:21
|
(34) блин...и ты нам парил мозг...сразу надо было говорить, что 2 дока на одно число не заведешь (руки бы оторвать тому, кто это проектировал).
А данные подготовь 1. Вычисли какой из видов документа возвращается, если в запросе указать Максимум(ВидДокумента). 2. Сделай последней датой другой вид документа, не тот, что получился в пункте 1. 3. Выполни свой запрос из (21) и увидишь, что дата будет из пункта 2, а документ из пункта 1, а это некорректно. По поводу наименования. Делай так (твой 2-й запрос из (18)): ВЫБРАТЬ ПаспортныеДанныеФизЛицСрезПоследних.ВидДокумента КАК ВидДокумента, МАКСИМУМ(ПаспортныеДанныеФизЛицСрезПоследних.Период) КАК Период, ПаспортныеДанныеФизЛицСрезПоследних.Физлицо КАК Физлицо, ФизЛица.Наименование КАК ФизлицоНаименование ИЗ РегистрСведений.СотрудникиОрганизации.СрезПоследних(, ) КАК СотрудникиОрганизацииСрезПоследних ЛЕВОЕ СОЕДИНЕНИЕ Времянка КАК Времянка ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПаспортныеДанныеФизЛиц.СрезПоследних КАК ПаспортныеДанныеФизЛицСрезПоследних ПО (Времянка.Период = ПаспортныеДанныеФизЛицСрезПоследних.Период) И (Времянка.Физлицо = ПаспортныеДанныеФизЛицСрезПоследних.Физлицо) ПО (СотрудникиОрганизацииСрезПоследних.ФизЛицо = Времянка.Физлицо) ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ФизическиеЛица КАК ФизЛица ПО СотрудникиОрганизацииСрезПоследних.ФизЛицо = ФизЛица.Ссылка ГДЕ СотрудникиОрганизацииСрезПоследних.Организация = &Организация СГРУППИРОВАТЬ ПО ПаспортныеДанныеФизЛицСрезПоследних.ВидДокумента, ПаспортныеДанныеФизЛицСрезПоследних.Физлицо, ФизЛица.Наименование УПОРЯДОЧИТЬ ПО ФизлицоНаименование |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |