|
Запрос | ☑ | ||
---|---|---|---|---|
0
Clown
02.03.12
✎
17:14
|
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ | ПриборыУчета.Владелец.Владелец КАК Контрагент, | ПриборыУчета.Владелец КАК ОбъектВодопотребления, | ПриборыУчета.Ссылка КАК Водомер, | ПриборыУчета.ВидРасчета КАК ВидРасчета, | ЕСТЬNULL(ПоказанияПриборовУчетаСрезПоследних.Показание, 0) КАК Показание, | ПоказанияПриборовУчетаСрезПоследних.Период КАК Период, | ЕСТЬNULL(ПоказанияПриборовУчетаСрезПоследних.Потребление, 0) КАК Потребление |ИЗ | Справочник.ПриборыУчета КАК ПриборыУчета | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПоказанияПриборовУчета.СрезПоследних(&Дата,) КАК ПоказанияПриборовУчетаСрезПоследних | ПО (ПоказанияПриборовУчетаСрезПоследних.ПриборУчета = ПриборыУчета.Ссылка) | И ПриборыУчета.Владелец.Владелец = ПоказанияПриборовУчетаСрезПоследних.Контрагент | |УПОРЯДОЧИТЬ ПО | ПриборыУчета.Владелец.Владелец.Код, | ПриборыУчета.Владелец.Владелец, | ПриборыУчета.Ссылка, | ПриборыУчета.Владелец.НаселенныйПункт.Код, | ПриборыУчета.Владелец.Улица.Код, | ПриборыУчета.Владелец.Дом, | ПриборыУчета.Владелец.Корпус, | ПриборыУчета.Владелец.Квартира"; Запрос.УстановитьПараметр("Дата", Документ.Дата); |
|||
1
Clown
02.03.12
✎
17:15
|
Проблема в том то что идут двойные записи по водомер,где не могу понять ошибка,подскажите плиз
|
|||
2
rbcvg
02.03.12
✎
17:15
|
молодец
|
|||
3
alexandrius
02.03.12
✎
17:15
|
красивый какой...а че собственно нужно?
|
|||
4
Beduin
02.03.12
✎
17:16
|
(0) Посказываю, двойные записи по водомер во второй таблице(которая не справочник)
|
|||
5
alexandrius
02.03.12
✎
17:17
|
может еще измерения у регистра какие есть? которые как раз записи и двоит...
|
|||
6
Clown
02.03.12
✎
17:17
|
Беру все приборы учета из справочника и смотрю последние данные по ним это показание и потребление
|
|||
7
Clown
02.03.12
✎
17:18
|
Измерения: Контрагент,приборыУчета и видрасчета
|
|||
8
hhhh
02.03.12
✎
17:18
|
(6) регистр сведений изучи, сколько у него измерений?
|
|||
9
hhhh
02.03.12
✎
17:19
|
(7) ну вот. Что ты нам мозг паришь? У тебя же еще измерение "видрасчета".
|
|||
10
Clown
02.03.12
✎
17:19
|
3
|
|||
11
Beduin
02.03.12
✎
17:20
|
(9) Он не мозг парит а зрение.
У него даже в полях, которые запрос выдаст будут видны отличия в строках. |
|||
12
Ненавижу 1С
гуру
02.03.12
✎
17:22
|
разные виды расчета
|
|||
13
Clown
02.03.12
✎
17:22
|
так там и двоит где одинаковые поля контрагент,приборучета и вид расчета...
Значит надо так? | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПоказанияПриборовУчета.СрезПоследних(&Дата,) КАК ПоказанияПриборовУчетаСрезПоследних | ПО (ПоказанияПриборовУчетаСрезПоследних.ПриборУчета = ПриборыУчета.Ссылка) | И ПриборыУчета.Владелец.Владелец = ПоказанияПриборовУчетаСрезПоследних.Контрагент | И ПриборыУчета.ВидРасчета = ПоказанияПриборовУчетаСрезПоследних.ВидРасчета |
|||
14
hhhh
02.03.12
✎
17:23
|
(13) издеваешься уже. Пятница
|
|||
15
alexandrius
02.03.12
✎
17:24
|
| И ПриборыУчета.ВидРасчета = ПоказанияПриборовУчетаСрезПоследних.ВидРасчета
эта строчка не факт что правильно отработает, если бы ВидРасчета хранился в справочнике не добавляли бы в регистр.. |
|||
16
alexandrius
02.03.12
✎
17:24
|
кидай скрин РС где записи двоятся
|
|||
17
Clown
02.03.12
✎
17:28
|
А прям сюда нельзя прикрепить картинку да?
|
|||
18
КМ155
02.03.12
✎
17:29
|
(17) прямо сюда разрешено только девушкам
|
|||
19
Clown
02.03.12
✎
17:30
|
||||
20
Clown
02.03.12
✎
17:31
|
там где номера первого столбца 3
|
|||
21
adron
02.03.12
✎
17:32
|
Задай конкретное значение ВидРасчета а параметрах регистра или сгруппируй отчет по ВидРасчета, если параметр не известен
|
|||
22
Clown
02.03.12
✎
17:35
|
||||
23
alexandrius
02.03.12
✎
17:39
|
на самом деле не совсем он сторчки двоит, а почему у тебя показания разные? если бы он их двоил то было бы одинаковые, какое правильное или должно суммироваться?
|
|||
24
Clown
02.03.12
✎
17:39
|
конкретного значения нету,Если группировать то и сумма 2 записей суммируется
|
|||
25
Clown
02.03.12
✎
17:40
|
они не суммироваться должны,должно быть последние данные на дату,т.е. какое движение по этим приборам было последние то и вносить
|
|||
26
adron
02.03.12
✎
17:41
|
ну так добавь условие соединения "И ПриборыУчета.ВидРасчета = ПоказанияПриборовУчетаСрезПоследних.ВидРасчета" и будет тебе счастье
|
|||
27
Clown
02.03.12
✎
17:43
|
в 15 ответили что не прокатит
|
|||
28
Humandra
02.03.12
✎
17:43
|
(25) Что-то подсказывает мне, что либо они таки должны суммироваться, либо должен быть отбор или соединение по виду расчета. :)
Вид расчета это что? "Общедомовой" и "квартирный"? Или что-то другое? |
|||
29
alexandrius
02.03.12
✎
17:43
|
не факт что прокатит, может и прокатить...
|
|||
30
alexandrius
02.03.12
✎
17:45
|
(28) судя по картинке: 1) Водоснабжение 2) Водоснабжение + водоотведение
|
|||
31
adron
02.03.12
✎
17:45
|
Посмотри храниться ли ВидРасчета в справочнике. Если храниться - используй доп. условие соединения
|
|||
32
Humandra
02.03.12
✎
17:45
|
(27) У конкретного прибора - железки, которая стоит у абонента - могут быть показания одновременно по двух видам расчета?
|
|||
33
Humandra
02.03.12
✎
17:46
|
(30) А, понятно. Картинку не смотрела, сорри. Сейчас подумаю.
|
|||
34
alexandrius
02.03.12
✎
17:46
|
(29) не факт, что НЕ прокатит
|
|||
35
Humandra
02.03.12
✎
17:48
|
(34) Скорее всего - не прокатит, так как скорее всего такой признак действующего на дату вида расчета - хранится где-то еще в одном регистре сведений или что-то типа.
|
|||
36
adron
02.03.12
✎
17:49
|
(25) "они не суммироваться должны,должно быть последние данные на дату,т.е. какое движение по этим приборам было последние то и вносить"
Тут нужен вложенный запрос с группировкой по периоду, функция группировки "Максимум". А затем соединение справочника с вложенным запросом - доп. условие соединение по периоду. Если по двум разным ВидРачета не бывает записей в один и тот же период - то вышеописанный вариант прокатит. |
|||
37
Clown
02.03.12
✎
17:49
|
попробовал так, все хорошо но теперь показаний самих нету
|
|||
38
Humandra
02.03.12
✎
17:50
|
Короче, в твоем случае нельзя брать СрезПоследних, а надо заменять его на свой запрос поиска последнего значения.
|
|||
39
Clown
02.03.12
✎
17:51
|
по двум разным видарасчета записи есть
|
|||
40
Clown
02.03.12
✎
17:54
|
как будет выглядеть в коде че то врублюсь как пишется
|
|||
41
Clown
02.03.12
✎
17:54
|
не могу врублюсь
|
|||
42
Clown
02.03.12
✎
17:55
|
ой ,не могу короче врубиться
|
|||
43
alexandrius
02.03.12
✎
17:55
|
а вообще странно что у него записи двоятся под номером 3, т.к все 3 измерения совпадают...
может все таки покажешь скрин регистра сведений с отбором по прибору учета и контранента(без вида расчета) по строчке 3 ??? |
|||
44
adron
02.03.12
✎
17:57
|
(25) точнее вот так:
Вложенный запрос с группировкой по периоду, функция группировки "Максимум". А затем соединение ВЛОЖЕННОГО ЗАПРОСА запроса с регистром - доп. условие соединение по периоду. Если по двум разным ВидРачета не бывает записей в один и тот же период - то вышеописанный вариант прокатит. |
|||
45
Clown
02.03.12
✎
18:00
|
(43)так этот скрин и есть по двум
|
|||
46
alexandrius
02.03.12
✎
18:00
|
Кстати а ты в запросе замени эту строчку на такую:
| ПриборыУчета.ВидРасчета КАК ВидРасчета, | ЕСТЬNULL(ПоказанияПриборовУчетаСрезПоследних.ВидРасчета , 0) КАК ВидРасчета , как мне кажется взлетит. |
|||
47
Clown
02.03.12
✎
18:01
|
(44)записи есть на 3 видам расчета
|
|||
48
Clown
02.03.12
✎
18:03
|
(46)Это надо добавить? И ПриборыУчета.ВидРасчета = ПоказанияПриборовУчетаСрезПоследних.ВидРасчета
|
|||
49
Humandra
02.03.12
✎
18:04
|
(44) А если даже есть на одну и ту же дату две записи по разным видам расчета, то можно так:
ВЫБРАТЬ Регистр.Прибор , МАКСИМУМ(Регистр.Показание) ИЗ Регистр ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ Регистр.Прибор КАК Прибор , МАКСИМУМ(Регистр.Период) КАК Период ИЗ Регистр КАК Регистр СГРУППИРОВАТЬ ПО Регистр.Прибор ) КАК Запрос ПО Запрос.Прибор = Регистр.Прибор И Запрос.Период = Регистр.Период СГРУППИРОВАТЬ ПО Регистр.Прибор |
|||
50
Humandra
02.03.12
✎
18:05
|
(49) Весь запрос было лень писать :), но думаю, идея понятна
|
|||
51
alexandrius
02.03.12
✎
18:05
|
(48) нет, в поле выборки где строкчка:
ПриборыУчета.ВидРасчета КАК ВидРасчета, заменить ее на | ЕСТЬNULL(ПоказанияПриборовУчетаСрезПоследних.ВидРасчета , 0) КАК ВидРасчета , т.е тебе вид расчета надо тянуть из регистра, и они не должны после этого двоиться. |
|||
52
Humandra
02.03.12
✎
18:06
|
(49) Естественно, в внутреннем запросе - ограничитель по дате
|
|||
53
Humandra
02.03.12
✎
18:08
|
ГДЕ Регистр.Период <= &Дата (или строго <, в зависимости от предметной логики)
|
|||
54
Clown
02.03.12
✎
18:09
|
(51)Не прокатило
|
|||
55
alexandrius
02.03.12
✎
18:09
|
(49) фига ты намудрил, только думаю ему это не нужно, все должно обойтись простым соединением, и ничего у него не двоится.
|
|||
56
alexandrius
02.03.12
✎
18:10
|
(54) и что совсем ничего не изменилось? все также двоит?
|
|||
57
Humandra
02.03.12
✎
18:12
|
(49) Не совсем правильно написала, кстати. Такой запрос прокатит, если надо только одно значение получить (показание).
Если более одного - то получаем ВЫБРАТЬ Регистр.Прибор , МАКСИМУМ(Регистр.ВидРасчета) ИЗ Регистр ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ Регистр.Прибор КАК Прибор , МАКСИМУМ(Регистр.Период) КАК Период ИЗ Регистр КАК Регистр СГРУППИРОВАТЬ ПО Регистр.Прибор ) КАК Запрос ПО Запрос.Прибор = Регистр.Прибор И Запрос.Период = Регистр.Период СГРУППИРОВАТЬ ПО Регистр.Прибор И снова соединяем с регистром уже по ПО Запрос.Прибор = Регистр.Прибор И Запрос.Период = Регистр.Период И Запрос.ВидРасчета = Регистр.ВидРасчета |
|||
58
Clown
02.03.12
✎
18:12
|
да,только вид расчета теперь пустые значения
|
|||
59
Humandra
02.03.12
✎
18:13
|
(55) Если я правильно понимаю задачу, то простым соединением не обойдешься, так как на одну дату могут (и скорее всего и будут) писаться начисления по одному и тому же прибору, но разным видам расчета. И если при этом надо брать только одну из строчек - то только примерно так. Ну, может как-то оптимальнее можно, надо подумать еще...
|
|||
60
alexandrius
02.03.12
✎
18:16
|
судя по документу который он заполняет(опять же на картинке) ему надо по разным Видам расчета свою строчку, а не одну.
Т.е если по прибору вид расчета в регистре: 1) водоотсчет 2) водоотвод то в доке должно быть 2 строчки |
|||
61
Clown
02.03.12
✎
18:17
|
Еще спалил, когда документы предыдущие делаешь не проведенными, а предпоследний остается проведенным то все норм, и все заполняется ок
|
|||
62
Humandra
02.03.12
✎
18:23
|
(60) У меня картинка его не открывается :(
Если так, то все вообще элементарно, чисто через срез последних А если как я подумала, то полный запрос такой: ВЫБРАТЬ Прибор.Ссылка , Прибор.Наименование , Показания.Показание , Показание.Период // и так далее ИЗ Справочник.ПриборыУчета Прибор ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПоказанияПриборовУчета Показания ПО Прибор.Ссылка = Показания.Прибор ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ Регистр.Прибор , МАКСИМУМ(Регистр.Период) КАК Период , МАКСИМУМ(Регистр.ВидРасчета) КАК ВидРасчета ИЗ РегистрСведений.ПоказанияПриборовУчета ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ Регистр.Прибор КАК Прибор , МАКСИМУМ(Регистр.Период) КАК Период ИЗ РегистрСведений.ПоказанияПриборовУчета КАК Регистр СГРУППИРОВАТЬ ПО Регистр.Прибор ) КАК ПоследниеДатыПоказаний ПО ПоследниеДатыПоказаний.Прибор = Регистр.Прибор И ПоследниеДатыПоказаний.Период = Регистр.Период СГРУППИРОВАТЬ ПО Регистр.Прибор) Запрос ПО Показания.Прибор = Запрос.Прибор И Показания.Период = Запрос.Период И Показания.ВидРасчета = Запрос.ВидРасчета |
|||
63
Clown
02.03.12
✎
18:24
|
Хотя нет не должно быть за один и тот же период 2 прибора с разными видрасчета
|
|||
64
Humandra
02.03.12
✎
18:26
|
(62) На баги не тестировала, писала в блокноте :) Но вроде ничего не потеряла
(63) Мой запрос гарантированно получит именно последнюю запись (до тех пор, пока в регистре только 2 измерения, конечно). Если в сутках будет две записи по двум видам расчета, то возьмет только по одному (с максимальным идентификатором вида расчета) |
|||
65
Humandra
02.03.12
✎
18:28
|
(64) Короче, для обоих задач мой вариант должен работать (если соединения не потеряла :)). Но если задача проще - то запрос можно упростить тоже, будет попроще и пошустрее.
|
|||
66
alexandrius
02.03.12
✎
18:34
|
(63) а от чего зависит этот Вид расчета, откуда заполняется и как часто меняется?
|
|||
67
Humandra
02.03.12
✎
18:49
|
О, наконец у меня картинка открылась :)
И я наконец обратила внимание, что в исходном запросе было так: ВЫБРАТЬ ПриборыУчета.ВидРасчета КАК ВидРасчета То есть таки ВидРасчета хранится в приборе. Он изменяется? Если по прибору было ВидРасчета = "Водоснабжение", а стало "Водоснабжение, водоотведение", то в регистре показания по старым датам останется "Водоснабжение", по новым будет "Водоснабжение, водоотведение"? Так? А если были показания по виду расчета "Водоснабжение", вид расчета в приборе изменили на "Водоснабжение, водоотведение", но новых показаний по новому виду расчета не приняли, то что мы должны увидеть? Показания по старому виду расчета, или ничего? |
|||
68
Humandra
02.03.12
✎
18:52
|
(51) Они будут все равно двоиться, но зато покажут правильные виды расчета.
То есть если по моему примере из (67) - когда есть старые показания по старому виду расчета и новые по новому - сейчас оно показывает по одному прибору "Водоотведение" дважды, а если сделать как в (51), то оно покажет "Водоотведение" - одна строка, "Водоотведение, водоснабжение" - другая строка, и последние показания по каждому виду расчета. |
|||
69
alexandrius
02.03.12
✎
19:00
|
в общем автор пропал, а мы гадаем как может быть, все пора бухать....всем пятницы
|
|||
70
Clown
02.03.12
✎
20:38
|
каждый прибор по своему виду расчета идет и не меняется
|
|||
71
Clown
02.03.12
✎
20:39
|
В общем я выгрузил в таблицузначений там сортировал,потом сравнивал если все 3 измерения совпадают то в табличную часть не выгружаю
|
|||
72
Humandra
02.03.12
✎
21:04
|
(71) Зачем работать с ТЗ, если быстрее и меньше памяти скушает - при работе с запросом.
Кстати, если ты выгрузил запрос из (0) и в ТЗ сортируешь его, то показания ты какие берешь? Надо брать тогда уж с максимальным периодом. А вообще, если 100% - вид расчета не меняется вообще у прибора - то правильно будет делать таки как в (13). Но если вид расчета таки поменяется - то покажет 0 показания. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |