|
Получение последних закупочных цен по номенклатуре | ☑ | ||
---|---|---|---|---|
0
AndreiRch
12.04.12
✎
21:32
|
Была поставлена задача получить таблицу с колонками (для динамического списка): номенклатура, контрагент (по последней закупке), цена (по последней закупке). Был рожден следующий запрос, который решает задачу:
ВЫБРАТЬ СправочникНоменклатура.Ссылка, ТабПоследняяЗакупка.Цена, ТабПоследняяЗакупка.Контрагент ИЗ Справочник.Номенклатура КАК СправочникНоменклатура ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ Закупки.Номенклатура КАК Номенклатура, Закупки.Контрагент КАК Контрагент, МАКСИМУМ(ВЫБОР КОГДА Закупки.Количество = 0 ТОГДА NULL ИНАЧЕ Закупки.Стоимость / Закупки.Количество КОНЕЦ) КАК Цена ИЗ РегистрНакопления.Закупки КАК Закупки ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ЗакупкиДок.Номенклатура КАК Номенклатура, МАКСИМУМ(ЗакупкиДок.ДокументЗакупки.Дата) КАК ДокументЗакупкиДата ИЗ РегистрНакопления.Закупки КАК ЗакупкиДок СГРУППИРОВАТЬ ПО ЗакупкиДок.Номенклатура) КАК ТабЗакупкиДок ПО Закупки.ДокументЗакупки.Дата = ТабЗакупкиДок.ДокументЗакупкиДата И Закупки.Номенклатура = ТабЗакупкиДок.Номенклатура СГРУППИРОВАТЬ ПО Закупки.Номенклатура, Закупки.Контрагент) КАК ТабПоследняяЗакупка ПО СправочникНоменклатура.Ссылка = ТабПоследняяЗакупка.Номенклатура Естественно, использование вложенных запросов и соединений не добавляет производительности для динамического списка. Задача кажется простой, и была принята попытка оптимизировать запрос. Я сломал голову, но так и не придумал, как можно сделать проще. Может у кого-то есть светлые идеи? Использование временных таблиц, по понятным причинам, не предлагать. |
|||
1
vmv
12.04.12
✎
21:36
|
делаешь два дсписка
справа мастер, т.е. Контрагенты слева деталь, т.е. Цены делаешь обработчик ПриАктивизацииСтрокиКонтрагенты, который обновляет параметры запроса второго дсписка "Цены" Сами запросы этих двух списков просты как собачью яйца на майском солнце. лепить все в одном списке - муторнее и тормознее |
|||
2
ProProg
12.04.12
✎
21:37
|
ВЫБРАТЬ ПЕРВЫЕ 1
..... ..... ..... Упорядочить ПО ...Дата УБЫВ с етбя сто баксов |
|||
3
Jstunner
12.04.12
✎
21:38
|
Нужно сделать по человечески, как в типовых: регистрировать цены в РС и просто соединять со срезом последних
|
|||
4
ProProg
12.04.12
✎
21:39
|
а стоп тебе ж для списка.
тогда немного по другому но смысл тот же |
|||
5
vmv
12.04.12
✎
21:39
|
ну или в мастре Номеклатура или Номеклатура+Контрагент, т.к. это данные состава данных(справочные), а Цены - чистая учетная динамика в деталь.
я всегда стараюсь четко поределить что есть данные состава(статика), а что есть данные учета(динамика) и исходя из вывовод строю вид данных на форме, а запрос уже ерунда |
|||
6
vmv
12.04.12
✎
21:39
|
(3) а у него цены не в регистре, я поленился смотреть код?)
|
|||
7
AndreiRch
12.04.12
✎
21:40
|
1 - так не пойдет, нужен один список
2 - полностью запрос, пожалуйста 3 - я знаю, но с заказчиком не поспоришь |
|||
8
ProProg
12.04.12
✎
21:41
|
(7) полностью запрос стоит денег. или ты думаешь я сейчас кинусь тебе запросы писать от делать нечего
|
|||
9
vmv
12.04.12
✎
21:42
|
(7) мучайся - я не против, хотя можно сделать вид двух списков как один практически
|
|||
10
Jstunner
12.04.12
✎
21:42
|
(0) как минимум, заменить все документзакупки.дата на период
|
|||
11
AndreiRch
12.04.12
✎
21:43
|
8 - я уже думал над вариантами, поэтому предполагаю, что такой вариант работать не будет.
9 - и чтоб они синхроноо прокручивались и сортировались? Не думаю |
|||
12
Jstunner
12.04.12
✎
21:44
|
(7) заказчик прям так круто врубается в регистры?
|
|||
13
ProProg
12.04.12
✎
21:45
|
а в чем у тебя проблемы? с тормозами?
|
|||
14
AndreiRch
12.04.12
✎
21:45
|
12 - добавлять регистры, делать новые обработки проведения - денег стоит, а заказчик платить столько не хочет, чтоб все сделать как надо
10 - это оптимизирует быстродействие? |
|||
15
ProProg
12.04.12
✎
21:46
|
(14) не хочет платить - зачем тогда работать?
|
|||
16
AndreiRch
12.04.12
✎
21:47
|
14 - вариант из первого поста уже сдан. Хочется для себя выяснить, можно ли сделать лучше
|
|||
17
ProProg
12.04.12
✎
21:48
|
База небось файловая поэтому все и тормозит. люди не понимают что файловая - ошибка природы
|
|||
18
Jstunner
12.04.12
✎
21:48
|
(14) ты прикалываешься? Каждое разыменование это дополнительная таблица, а даты там должны быть одинаковые
|
|||
19
AndreiRch
12.04.12
✎
21:48
|
18 - спасибо, попробую
|
|||
20
AndreiRch
12.04.12
✎
21:49
|
17 - клиент сервер у них. Но номенклатуры реально много
|
|||
21
ProProg
12.04.12
✎
21:50
|
ВНутренее соединение к самому себе не вери гуд
Сделай соединение с календарем Аналогичный запрос с календарем используется в УТ10 в отчете по дебиторской задолженности где по расчетным докам получаются даты и идет расчет просрочки |
|||
22
Jstunner
12.04.12
✎
21:53
|
(14) там банальный регистр, простецкие движения, и элементарная обработка, делаящая движения для всех созданных документов. Делов на полчаса. А коль сам криво сделал, то можно и задаром косяки исправить
|
|||
23
AndreiRch
12.04.12
✎
21:56
|
21 - это "ДебиторскаяЗадолженностьПоИнтервалам" отчет? Или про какой идет речь?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |