|
оптимальность запроса бух регистра | ☑ | ||
---|---|---|---|---|
0
Александр056
23.12.15
✎
12:58
|
запрос к регистру бухгалтерии...
ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Контрагент, ХозрасчетныйОстаткиИОбороты.Субконто2 КАК ДоговорКонтрагента, ХозрасчетныйОстаткиИОбороты.СуммаОборотДт КАК Отгружено, ХозрасчетныйОстаткиИОбороты.СуммаОборотКт КАК Оплачено, как пример, видно что из регистра выбираются поля, но вот момент, ХозрасчетныйОстаткиИОбороты.Субконто2.ВидВзаиморасчетов.КоличествоДнейОтсрочки обращение идет к другим таблицам, не этого регистра, вопрос оптимальности, если дает так обратиться запрос - не заморачиваться? или для всех контрагентов, получить отдельной таблицей виды взаиморасчетов(справочник) и оттуда получить кол-во дней? на сколько оптимальнее тут использование 2х таблиц? |
|||
1
Aleksandr N
23.12.15
✎
13:01
|
(0) Оптимальнее вторую таблицу левым соединением. И если остатки не нужны, то использовать вирт. регистр оборотов.
|
|||
2
ViSo76
23.12.15
✎
13:03
|
После получения остатков и оборотов будет левое соединение .ВидВзаиморасчетов. быстрее не напишешь. Проблема в вычислении остатков и оборотов
|
|||
3
Александр056
23.12.15
✎
13:05
|
остатки нужны в разрезе Дт и Кт
|
|||
4
GROOVY
23.12.15
✎
13:06
|
ХозрасчетныйОстаткиИОбороты.Субконто2.ВидВзаиморасчетов.КоличествоДнейОтсрочки - Жесть.
|
|||
5
GROOVY
23.12.15
✎
13:06
|
Типизируйте субконто2.
|
|||
6
ДенисЧ
23.12.15
✎
13:07
|
А что, ВЫРАЗИТЬ сегодня уже не модно?
|
|||
7
ViSo76
23.12.15
✎
13:10
|
(4) Ты считаешь что Субконто2 имеет составной тип?
|
|||
8
Александр056
23.12.15
✎
13:10
|
(5) Павел сейчас через вашу консоль с замером производительности пробую, с Левым соединением и без него, с ВЫРАЗИТЬ Субконто 2 и без него, чет разница прям совсем маленькая..... хотя строк в результате не мало
|
|||
9
Александр056
23.12.15
✎
13:10
|
(7) оно имеет составной тип
|
|||
10
ViSo76
23.12.15
✎
13:13
|
(8) А с чего будет ускорение то? Ну не одно левое, два или три будет сути не меняет.
|
|||
11
Александр056
23.12.15
✎
13:14
|
(5) ВЫРАЗИТЬ(ХозрасчетныйОстаткиИОбороты.Субконто2 как Справочник.ДоговорыКонтрагентов) КАК ДоговорКонтрагента,
чет по-моему тоже не дало особого прироста.... в замере отличается время выполнения несколько раз одного и того же запроса почти на секкунду |
|||
12
ViSo76
23.12.15
✎
13:19
|
Чтобы ускорить думай что тебе нужно от этой виртуальной таблицы "ХозрасчетныйОстаткиИОбороты". Возможно что можно выбрав из физических таблиц + остатки будет быстрее или других регистров.
|
|||
13
GROOVY
23.12.15
✎
13:20
|
Смотрите план запроса http://expert.chistov.pro/public/328469/ Без ВЫРАЗИТЬ совсем все плохо будет.
|
|||
14
ViSo76
23.12.15
✎
13:23
|
(13) Если справочники копеечные то хоть какой план это будет экономия на спичках
|
|||
15
GROOVY
23.12.15
✎
13:25
|
(14) То есть 1 левое соединение в плане и 120 - разницы никакой?
|
|||
16
ViSo76
23.12.15
✎
13:26
|
(15) Ты там увидел 120? Или максимум 3 левых. Определись сколько левых
|
|||
17
GROOVY
23.12.15
✎
13:29
|
(16) Коллекция характеристик ВидыСубконто из скольки типов образована?
|
|||
18
ViSo76
23.12.15
✎
13:32
|
(17) Я не в курсе из сколько у меня не типовое решение. И даже в выразить экономия в секунду как я понимаю не спасает.
Вы как в анекдоте: Врач опаздывает к больному и он умирает. Врач спрашивает у родственников: "Покойный перед смертью потел?" - Потел... - Это очень хорошо! |
|||
19
GROOVY
23.12.15
✎
13:36
|
Тоже вспомнился анекдот:
... Чукча не читатель, чукча - писатель! |
|||
20
Александр056
23.12.15
✎
13:38
|
(13) жаль нет у меня акка, да и не УФ у меня....но спасибо
|
|||
21
Александр056
23.12.15
✎
13:38
|
в принципе оставил так:
ВЫБРАТЬ ВЫРАЗИТЬ(ХозрасчетныйОстаткиИОбороты.Субконто1 КАК Справочник.Контрагенты) КАК Контрагент, ВЫРАЗИТЬ(ХозрасчетныйОстаткиИОбороты.Субконто2 КАК Справочник.ДоговорыКонтрагентов) КАК ДоговорКонтрагента, ХозрасчетныйОстаткиИОбороты.СуммаОборотДт КАК Отгружено, ХозрасчетныйОстаткиИОбороты.СуммаОборотКт КАК Оплачено, ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокДт КАК ТекущаяЗадолженность, ВидыВзаиморасчетов.КоличествоДнейОтсрочки ИЗ РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&ДатаНачала, &ДатаОкончания, Период, , Счет В ИЕРАРХИИ (&СписокСчетов), , Организация = &Организация) КАК ХозрасчетныйОстаткиИОбороты ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВидыВзаиморасчетов КАК ВидыВзаиморасчетов ПО ХозрасчетныйОстаткиИОбороты.Субконто2.ВидВзаиморасчетов = ВидыВзаиморасчетов.Ссылка УПОРЯДОЧИТЬ ПО ХозрасчетныйОстаткиИОбороты.Субконто1.Наименование |
|||
22
Александр056
23.12.15
✎
13:40
|
(13) а есть халява?) и не на УФ?)
|
|||
23
GROOVY
23.12.15
✎
13:40
|
(20) Можно профайлеров МССКЛ глянуть.
(21) Условие соединения сводит на нет предполагаемую выгоду. (22) Там этих консолей как у дурака фантиков. Думаю можно найти. |
|||
24
Александр056
23.12.15
✎
13:41
|
(23) т.е. не левым соединением а выразить и через точку?
|
|||
25
GROOVY
23.12.15
✎
13:43
|
Как только нетипизированное "СубконтоТОЧКА" появляется, неважно где, в условии, в поле выбора, в УПОРЯДОЧИТЬ, реальный план запроса будет делать столько левых соединений, сколько типов в коллекции характеристик есть. А в типовой тих там много, очень много.
|
|||
26
GROOVY
23.12.15
✎
13:43
|
(24) Да, тут пофигу, либо явно делать соединение, либо неявно через точку.
|
|||
27
Александр056
23.12.15
✎
13:47
|
(26) понял, главное типизировать а дальше хоть Регистр.точка хоть ЛЕВЫМ
|
|||
28
Александр056
23.12.15
✎
13:49
|
всем спасибо большое!
|
|||
29
sash-ml
23.12.15
✎
13:52
|
не там выражать нужно а в параметрах запроса, при этом договор станет субконо №1
ВЫБРАТЬ ХозрасчетныйОстаткиИОбороты.Субконто1 КАК ДоговорКонтрагента, ХозрасчетныйОстаткиИОбороты.СуммаОборотДт КАК Отгружено, ХозрасчетныйОстаткиИОбороты.СуммаОборотКт КАК Оплачено, ХозрасчетныйОстаткиИОбороты.СуммаКонечныйОстатокДт КАК ТекущаяЗадолженность ИЗ РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&ДатаНачала, &ДатаОкончания, Период, &ВидСубконтоДоговор , Счет В ИЕРАРХИИ (&СписокСчетов), , Организация = &Организация) КАК ХозрасчетныйОстаткиИОбороты |
|||
30
GROOVY
23.12.15
✎
13:55
|
(29) Сюрприз: без ВЫРАЗИТЬ параметр в запросе только лишь отбирает нужные по типу субконто и упорядочивает их в нужном порядке, но обращение через точку к субконто будет как с параметрои так и без делать кучу левых соединений.
|
|||
31
sash-ml
23.12.15
✎
14:02
|
(30) но не указывать вид субконто еще хуже. +(29) можно выразить, поместить в ВТ, из которой уже вытянуть контрагента и КоличествоДнейОтсрочки через точку, всего два левых неявно приатачится. должно быть быстро
|
|||
32
ViSo76
23.12.15
✎
14:04
|
(28) Так тебе помогло левое соединение в (21) или так моральная помощь помогает?
|
|||
33
Александр056
23.12.15
✎
14:13
|
(32) в итоге выразить и через точку сделал.... не увидел я большой разницы в замере производительности, не стабильны показатели...
|
|||
34
Александр056
23.12.15
✎
14:13
|
(32) и моральная тоже) голову поднял, интересные вещи / мнения почитал, дальше пошел ....)
|
|||
35
Александр056
23.12.15
✎
14:17
|
(29) если я так сделаю, то у меня остается только то субконто которео указал в параметре, мне как бы и договор и контрагент нужен
|
|||
36
ViSo76
23.12.15
✎
14:21
|
Посмотри в консоле из чего состоит виртуальная таблица "Остатки и обороты". Может проще выбрать отдельно остатки и присоединив позже обороты отсеяв лишнее и присоединив позже субконто. Продажи можно и в регистре накопления взять, а денежный приход отдельно. В общем всё зависит от конкретного случая.
|
|||
37
hhhh
23.12.15
✎
14:22
|
(35) делай параметр &ВидыСубконто массив. И в нем пиши свои виды. КАкие напишешь, в таком порядке и будут субконто
|
|||
38
Александр056
23.12.15
✎
14:22
|
а и кстати как быть с полем Регистратор у которого так же оч много типов, а мне надо несколько только, дату документа, но только нужного(ых), если в условии сделаю то все равно будет запрос ко всем типам
|
|||
39
ViSo76
23.12.15
✎
14:25
|
Сто-то подобное не проверял но по идее будет работать.
РегистрБухгалтерии.Хозрасчетный.ОстаткиИОбороты(&ДатаНачала, &ДатаОкончания, Период, Регистратор, ( Регистратор ССЫЛКА Документ.МойДокумент Или Регистратор ССЫЛКА Документ.МойДокумент1 ) И Счет В ИЕРАРХИИ (&СписокСчетов), , Организация = &Организация) КАК ХозрасчетныйОстаткиИОбороты |
|||
40
Александр056
23.12.15
✎
14:26
|
(36) дебиторку надо, взаиморасчет по договору в целом, УУ и БУ отличаются( по УУ работало до меня, щас сотрудник нашел этот момент и говорит сделатй по БУ вот с этим регистром и колдую
|
|||
41
sash-ml
23.12.15
✎
14:26
|
(35) контрагента из договора получишь,
(38) при регистратор ничего не понятно, что получить то хочешь? |
|||
42
Александр056
23.12.15
✎
14:27
|
(41) выразить как несколько типов нельзя, мне надо отобрать 2 типа документов и получить их дату, через точку, соответственно если не типизировать поле получится очень неправильно обращение....
|
|||
43
ViSo76
23.12.15
✎
14:31
|
Забей на выразить. Если у тебя в субконто больше справочников просто присоедени левым соединением со справочниками и в ГДЕ отфильтруй лишнее. Главное фильтрануть правильно движения.
|
|||
44
hhhh
23.12.15
✎
14:31
|
обычно поле период в регистре равно дате регистратора. Чего вы там понакрутили?
|
|||
45
sash-ml
23.12.15
✎
14:32
|
а бывает дебиторка не по всем регистраторам?
|
|||
46
ViSo76
23.12.15
✎
14:34
|
(44) Если ты про (39) то там только идея я не правильно накидал текст запроса. И к стати я не курю чего и тебе желаю.
|
|||
47
Александр056
23.12.15
✎
14:34
|
(44) (45) пойду пройдусь, уже сам чет вытворяю....тайм аут надо 15 мин. (37) кстати да, загнал два типа субконто, отобрал....
|
|||
48
Александр056
23.12.15
✎
14:38
|
(45) бывает надо выбрать дату последней отгрузки, и дату последней оплаты
|
|||
49
sash-ml
23.12.15
✎
14:45
|
(48) вот только выбирать эти даты из ОстаткиИОбороты не нужно. тогда теряется весь смысл оборотного регистра
|
|||
50
Александр056
23.12.15
✎
14:47
|
(49) а брать из РН Взаиморасчеты с контрагентами, там могут быть не все документы, если в УУ не отразят их
|
|||
51
ViSo76
23.12.15
✎
14:49
|
(50) Ты можешь выбрать РН и получить Ссылки, а затем по ссылкам движения
|
|||
52
Александр056
23.12.15
✎
15:01
|
(51) не совсем понял, получу ссылки, в том числе не получу тех которые мне нужны...и?
|
|||
53
sash-ml
23.12.15
✎
15:12
|
конфа то какая?
|
|||
54
ViSo76
23.12.15
✎
16:06
|
Если задача узнать последний расход / приход то можно так. По аналогии расширить:
ВЫБРАТЬ ПЕРВЫЕ 1 Период, Регистратор ПОМЕСТИТЬ тзРН ИЗ РегистрБухгалтерии.Управленческий.Субконто ГДЕ Вид = ЗНАЧЕНИЕ( ПланВидовХарактеристик.ВидыСубконтоУправленческие.Контрагенты ) И Значение = &Контрагент И Регистратор ССЫЛКА Документ.РасходнаяНакладная УПОРЯДОЧИТЬ ПО Период УБЫВ ; ВЫБРАТЬ ПЕРВЫЕ 1 Период, Регистратор ПОМЕСТИТЬ тзПриход ИЗ РегистрБухгалтерии.Управленческий.Субконто ГДЕ Вид = ЗНАЧЕНИЕ( ПланВидовХарактеристик.ВидыСубконтоУправленческие.Контрагенты ) И Значение = &Контрагент И Регистратор ССЫЛКА Документ.ПриходныйКассовыйОрдер УПОРЯДОЧИТЬ ПО Период УБЫВ ; ВЫБРАТЬ * ИЗ тзРН ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ * ИЗ тзПриход |
|||
55
Александр056
23.12.15
✎
16:09
|
(53) УПП, отвлекся....
|
|||
56
ViSo76
23.12.15
✎
16:17
|
(55) Ты бы хотя бы задачу обрисовал что в конечном итоге хочешь получить?
|
|||
57
Александр056
24.12.15
✎
06:27
|
(56) дебиторку, взаиморасчет по дог в целом, берем то что отгружено за период, то что оплачено, кол-во дней отсрочки,
далее смотрим кол-во отгруженного на кол-во дней отсрочки назад и текущее состояние оплаты, вычитаем, получаем сколько висит не оплачено... ну и так же дату посл отгрузки и посл оплаты.... |
|||
58
ViSo76
24.12.15
✎
08:15
|
Делал точно такую же задачу бери остатки по 62.1 в разрезе договоров, а затем уже движения, можно по документам и вычисляй
|
|||
59
ViSo76
24.12.15
✎
08:25
|
Остатки на конец периода. Движуху брать документы или регистр накопления наверняка что-то есть и отнимать легальный оборот. Остальное просрочка. У меня так же просрочка через 5 дней отражается. И другие моменты.
|
|||
60
Александр056
24.12.15
✎
09:16
|
(59) ок спасибо!
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |