![]() |
![]() |
![]() |
|
v8: как убрать повторяющиеся строки в запросе? | ☑ | ||
---|---|---|---|---|
0
ЭЦ
08.07.09
✎
15:51
|
Здравствуйте.
Имеется регистр наколения ФактическиеОтпускаОрганизаций с полями : Сотрудник, Период Движения в регистр вводятся документами -регистраторами. Требуетмся найти все джвижения выполненными разными регистраторами с одинаковым значенимм сотрудника и периода. имеем запрос : //-------------------------- "ВЫБРАТЬ |ФОО.Сотрудник, |ФОО.Период, |ФОО.Регистратор, |ФОО1.Регистратор | |ИЗ |РегистрНакопления.ФактическиеОтпускаОрганизаций КАК ФОО |ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ФактическиеОтпускаОрганизаций КАК ФОО1 |ПО ФОО.Сотрудник = ФОО1.Сотрудник |И ФОО.Период = ФОО1.Период |И ФОО.Регистратор <> ФОО1.Регистратор //----------------------------------------- все вроденормально за исключением того что в результатах все записи задвоены т.е имеются строки Рег1 Рег2 Сотр Пер и Рег2 Рег1 Сотрпер прошу подсказать как лучше отфильтровать повторяющиесястроки. СПАСИБО |
|||
1
ТелепатБот
гуру
08.07.09
✎
15:51
|
||||
2
чувак
08.07.09
✎
15:52
|
Счась забанят
|
|||
3
mikecool
08.07.09
✎
15:53
|
Сгруппировать по
|
|||
4
mikecool
08.07.09
✎
15:53
|
+3 выбрать различные
|
|||
5
ЭЦ
08.07.09
✎
15:54
|
По чему группировать?
|
|||
6
GenV
08.07.09
✎
15:55
|
(0) Можно попробывать добавить условие в соединение, что первый регистратор раньше второго
|
|||
7
mikecool
08.07.09
✎
15:55
|
(5) по чему надо, по тому и группируй
|
|||
9
GenV
08.07.09
✎
15:59
|
6+ а вообще достаточно итогов по Сотрудник+Период, и получать регистраторы, если уж дважды в отпуск отправили.
|
|||
10
acsent
08.07.09
✎
16:00
|
Это классическая задача
из таблицы Сделать таблицу |
|||
11
ЭЦ
08.07.09
✎
16:11
|
(9) Имеется вв виду чтото вроде:
================ сначчала во вложенном запросе получаем сотрудников и периоды для которых имеются различные регистраторы, затем для них выбираем всех регистраторов? ========== тоже склоняюсь к этому, но кажется несколько громоздко, помоему должно быть чтото попроще. Например отобрать толькочетные записи в результате запроса ? |
|||
12
ЭЦ
08.07.09
✎
16:15
|
(9) Имеется в виду
вовложенном запросе получить всех сотрудников и периоды для которых имеются различные регистраторы. а затем уже для них выбирать регистраторы? ----------- Думал также но кажется громозлко, хотелосьбы попроще - например отобрать тлько четные строми |
|||
13
ЭЦ
08.07.09
✎
16:17
|
(10) ну и как ее решать?
|
|||
14
Ненавижу 1С
гуру
08.07.09
✎
16:18
|
(13) тебе ж сказали, вместо:
|И ФОО.Регистратор <> ФОО1.Регистратор поставь: |И ФОО.Регистратор.МоментВремени < ФОО1.Регистратор.МоментВремени |
|||
15
ЭЦ
08.07.09
✎
16:28
|
(14) ТОЛКОВО
|
|||
16
ЭЦ
08.07.09
✎
16:51
|
(14) Мысль хорошая но не работает т.к. Момнт времени для регистра это строка
врт такого типа --------------------------- 18.07.2007 0:00:00; Начисление отпуска работникам организаций ЕВ000000066 от 11.07.2007 12:02:10 ------------------ и сравнение на "<" не срабатывает будем пробовать ФОО.Период<ФОО1.Период |
|||
17
ЭЦ
08.07.09
✎
16:58
|
(14) ПОПРАВКА 15
Мысль хорошая но не работает т.к. Момнт времени для регистра это строка врт такого типа --------------------------- 18.07.2007 0:00:00; Начисление отпуска работникам организаций ЕВ000000066 от 11.07.2007 12:02:10 ------------------ и сравнение на "<" не срабатывает будем пробовать ФОО..Регистратор.Дата<ФОО1..Регистратор.Дата |
|||
18
Ненавижу 1С
гуру
08.07.09
✎
16:59
|
(16) с каких пор момент времени стал строкой?
и вообще там писалось о моменте времени регистратора, а не регистра |
|||
19
ЭЦ
08.07.09
✎
17:05
|
(18) Пардонте, но у регистратора нету момента времени - у него дата
а моментВремени как раз у регистра и он имеет вид приведенный в 17 |
|||
20
ЭЦ
08.07.09
✎
17:05
|
+19 но мысль у вас все равно хорошая.
|
|||
21
Ненавижу 1С
гуру
08.07.09
✎
17:08
|
(18) когда это у регистратора исчез момент времени? у меня отлично есть
и это его пользовательское представление, а сам он это Период+Ссылка |
|||
22
Ненавижу 1С
гуру
08.07.09
✎
17:08
|
(21) к (19)
|
|||
23
Terv
08.07.09
✎
17:16
|
можно так
ВЫБРАТЬ ФактическиеОтпускаОрганизаций.Сотрудник КАК Сотрудник, ФактическиеОтпускаОрганизаций.Период, ФактическиеОтпускаОрганизаций.Регистратор ИЗ (ВЫБРАТЬ ФОО.Сотрудник КАК Сотрудник, ФОО.Период КАК Период ИЗ РегистрНакопления.ФактическиеОтпускаОрганизаций КАК ФОО СГРУППИРОВАТЬ ПО ФОО.Сотрудник, ФОО.Период ИМЕЮЩИЕ КОЛИЧЕСТВО(РАЗЛИЧНЫЕ ФОО.Регистратор) > 1) КАК ВложенныйЗапрос ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ФактическиеОтпускаОрганизаций КАК ФактическиеОтпускаОрганизаций ПО ВложенныйЗапрос.Период = ФактическиеОтпускаОрганизаций.Период И ВложенныйЗапрос.Сотрудник = ФактическиеОтпускаОрганизаций.Сотрудник ИТОГИ ПО Сотрудник |
|||
24
ЭЦ
08.07.09
✎
17:17
|
Вот так обратитьсям можно :
//-------------------- ФОО.Регистратор.МоментВремени //-------------------- но Вот это не работает //----------------------- |И ФОО.Регистратор.МоментВремени < ФОО1.Регистратор.МоментВремени //---------------------- а вот так работает //------------------------- И ФОО.Регистратор.Дата < ФОО1.Регистратор.Дата //---------------------------------- |
|||
25
Ненавижу 1С
гуру
08.07.09
✎
17:20
|
а у меня и так работает:
ФОО.Регистратор.МоментВремени < ФОО1.Регистратор.МоментВремени а так некооректно вообщето: ФОО.Регистратор.Дата < ФОО1.Регистратор.Дата (не все пары получишь) |
|||
26
Terv
08.07.09
✎
17:21
|
(25) а что будет если в одном периоде 3 или 4 регистратора?
|
|||
27
Ненавижу 1С
гуру
08.07.09
✎
17:23
|
(26) будут выданы все пары с точностью до следования в них элементов
|
|||
28
Terv
08.07.09
✎
17:27
|
(27) а-а.. сдается что (0) еще до этого не дошел... это будет следующая просьба.. как убрать их ;)
|
|||
29
ЭЦ
08.07.09
✎
17:29
|
(25)
ЧИТАЕМ HELP : --------------------- МоментВремени : Предназначен для получения и хранения момента времени для объекта в базе данных. Содержит дату и время, а также ссылку на объект базы данных. Используется в качестве значений свойств и параметров методов других объектов, имеющих тип МоментВремени. ------------------------------------ у меня // ФОО.Регистратор.МоментВремени < ФОО1.Регистратор.МоментВремени // не сработало, вероятно надо както преобразовывать к какому нибудь типу для которого выполняется сравнение на больше/меньше |
|||
30
Ненавижу 1С
гуру
08.07.09
✎
17:32
|
(29) не сработало: ошибку выдало или неправильно сработало?
у меня сработало: ВЫБРАТЬ АвансовыйОтчет.Ссылка, АвансовыйОтчет1.Ссылка КАК Ссылка1 ИЗ Документ.АвансовыйОтчет КАК АвансовыйОтчет ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.АвансовыйОтчет КАК АвансовыйОтчет1 ПО АвансовыйОтчет.МоментВремени < АвансовыйОтчет1.МоментВремени |
|||
31
ЭЦ
08.07.09
✎
17:35
|
(27) Это меня устраивает.
Но тут выплывает другая проблема - оказывается, что имеются документы с одинаковой датой. :-( (они видетели были созданы программно) так, что как советует 23 наверное придется вернуться к вложенным запросам |
|||
32
ЭЦ
08.07.09
✎
17:35
|
(30) не был выполнен отбор по условию
|
|||
33
ЭЦ
08.07.09
✎
17:43
|
(30+)
// АвансовыйОтчет.МоментВремени // это ссылка на таблицу документов, а у меня таблица регистра накопления тут МоментВремени несколько другой |
|||
34
Ненавижу 1С
гуру
08.07.09
✎
19:06
|
(33) ты меня достал! сначала говоришь что моменты времени регистраторов (читай документов) нельзя сравнивать, я показываю, что моменты времени документов вполне сравнимы. Теперь ссылаясь на этот пример, что у тебя регистр. Я вообще то в курсе, что там тоже есть момент времени.
Короче, я про фому, он про ерему |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |