Имя: Пароль:
1C
1С v8
Как ускорить работу с регистром бухгалтерии
0 Coldboy
 
23.12.13
12:37
Здравствуйте. СЛышал есть такая проблема, что сами запросы медленно работаю с регистром бухгалтерии, ну то есть не быстро даже, простые по сравнению с регистром накопления. Есть ли методы по ускорению, Хотя бы частичному? Увидел такие вещи как УстновитьЧтоТоСИтогами, но не понял к чему это? Как вообще быть, чтобы допустим запрос работал по шустрее
            Запрос.Текст = "ВЫБРАТЬ
            |    ХозрасчетныйОстатки.КоличествоОстаток
            |ИЗ
            |    РегистрБухгалтерии.Хозрасчетный.Остатки(
            |            &КонПериода,
            |            Счет В ИЕРАРХИИ (&Счет),
            |            ,
            |            Организация = &Организация
            |                И Субконто1 = &Номенклатура
            |                И Субконто2 = &Склад) КАК ХозрасчетныйОстатки";

да и другие обращнения ...
1 Coldboy
 
23.12.13
12:57
up
2 ДенисЧ
 
23.12.13
12:58
на субконты ВЫРАЗИТЬ поставь
3 Coldboy
 
23.12.13
12:59
(2) зачем выразить?
и на такой тоже             Запрос.Текст = "ВЫБРАТЬ
                           |    ЕСТЬNULL(ХозрасчетныйОстатки.КоличествоОстатокДт, 0) КАК КоличествоОстатокДт
                           |ИЗ
                           |    РегистрБухгалтерии.Хозрасчетный.Остатки(
                           |            &МоментВремени,
                           |            Счет = &Счет,
                           |            &видысубконто,
                           |            Организация = &Организация
                           |                И Субконто1 = &Субконто1
                           |                И Субконто2 = &Субконто2) КАК ХозрасчетныйОстатки";
и будет быстрее?
4 ДенисЧ
 
23.12.13
13:00
(3) А ты поставь и проверь....
5 zak555
 
23.12.13
13:00
(3) зачем ЕСТЬNULL ?
6 Coldboy
 
23.12.13
13:01
(5) ну как, если null То сделать 0, если не null то пусть будет количествоОстатокДт тута на форуме утверждали это, неправильно?
7 Coldboy
 
23.12.13
13:01
(4) еще бы знать, как правильно сделать Выразить на субконто
8 bolobol
 
23.12.13
13:04
Кхм... А с чего Остатки должны вернуть запись с отсутствующим значением запрашиваемого значения? Вернутся только те записи, по которым есть остаток, а если кривизна в таблице, то получите 0, конечно же, но это не будет правильным данным.
9 ДенисЧ
 
23.12.13
13:04
(7) ВЫРАЗИТЬ(Субконто КАК Справочник.Номенклатура)

И вообзе продам кнопку F1 в конфигураторе.
10 MKZM
 
23.12.13
13:05
(7) Приведи субконто к нужным типам
11 ИС-2
 
naïve
23.12.13
13:07
1) в иерархии убрать
2) а самое главное сделать пересчет итогов на SQL

вопрос на засыпку. Регистры бухгалтерии не закрываются же?
12 bolobol
 
23.12.13
13:11
ВЫРАЗИТЬ требуется для того, чтобы создавая виртуальную таблицу не тянуть множество заведомо ненужных данных. А система сама сравнение произведёт по правильной колонке составного поля.

Во всяком случае, в условии соединения - команда ВЫРАЗИТЬ вешает базу намертво отчётом, что без ВЫРАЗИТЬ выполняется секунд за 30. На более быстрых отчётах я и не догадался ни разу проверить.

А вот когда составное поле уже отбирается и по нему новый индекс создаётся, то для оптимизации количества колонок разного типа составного объекта - ВЫРАЗИТЬ и эффективно может быть применимо.
13 bolobol
 
23.12.13
13:12
(11) Отличный вопрос! Чего ж базы не растут геометрически тогда? ))
14 Coldboy
 
23.12.13
13:13
(9) спасибо уже разобрался)
(11) почему убрать, если на счете 41.01 или 41.02 могут быть данные и так сразу не угадаешь, так вроде разработчики Раруса заложили что массив счетов, из 41 или 10.
15 Coldboy
 
23.12.13
13:18
(12) составной тип субконто, регистратор используется, хотя значения, заведомо даю уже нужные, типа справочники.номенклатура или тд. щас попробую с выразить. так же и остатки беру тоже срезы даю.
16 Coldboy
 
23.12.13
13:19
и не скажу, что стало быстрее исполняться
"ВЫБРАТЬ
                           |    ХозрасчетныйОстатки.КоличествоОстаток
                           |ИЗ
                           |    РегистрБухгалтерии.Хозрасчетный.Остатки(
                           |            &КонПериода,
                           |            Счет В ИЕРАРХИИ (&Счет),
                           |            ,
                           |            Организация = &Организация
                           |                И (ВЫРАЗИТЬ(Субконто1 КАК Справочник.Номенклатура)) = &Номенклатура
                           |                И (ВЫРАЗИТЬ(Субконто2 КАК Справочник.Склады)) = &Склад) КАК ХозрасчетныйОстатки"
17 Лефмихалыч
 
23.12.13
13:20
отбор по видам субконто установить в параметрах ВТ
18 piter3
 
23.12.13
13:21
(16) выбери сразу нужные счета. итоги пересчитай, обслуживание делается?
19 Лефмихалыч
 
23.12.13
13:21
+(17) это ТРЕТИЙ параметр. Тот самы, про которыы, (0), ни чорта не знаешь
20 Sammo
 
23.12.13
13:24
(14) Тогда сначала отбираешь счета, а затем в.
В иерархии может привести к не очень красивом плану запроса.
21 МихаилМ
 
23.12.13
13:24
(17)
отбот по видам для оборотов
22 ИС-2
 
naïve
23.12.13
13:28
(13) т.е закрываются? Или закрываются при закрытии месяца?
23 bolobol
 
23.12.13
13:35
(22) Тут, походу, необходимо определиться в терминах. Закрытие месяца - операция пользовательского интерфейса, будут делать - будут закрывать определённые счета, не будут - счета станут накопительными)
24 ИС-2
 
naïve
23.12.13
13:39
(23) понятно
25 acsent
 
23.12.13
13:40
Этот запрос ничем уже не ускоришь.
26 hhhh
 
23.12.13
13:51
(16) это когда с точкой Субконто1.Наименование например, тогда нужно ВЫРАЗИТЬ, а так ВЫРАЗИТЬ не нужно
27 mzelensky
 
23.12.13
13:57
(16) Можешь еще для эксперимента поиграться порядком условий:

Организация = &Организация
И (ВЫРАЗИТЬ(Субконто1 КАК Справочник.Номенклатура)) = &Номенклатура
И (ВЫРАЗИТЬ(Субконто2 КАК Справочник.Склады)) = &Склад

Т.е. меняешь условия местами и смотришь как меняется производительность (через замер). У меня на одном запросе из большой таблицы очень значительная разница была.
28 mzelensky
 
23.12.13
13:58
(26) Ты ошибаешься, как мне кажется.
Если Параметры имеет сосавной тип данных (а ты юзаешь ток один из них), то ВЫРАЗИТЬ нужно обязательно.
29 Coldboy
 
23.12.13
14:11
(28) а есть вариант отключение управления итогами или как то, так что ускорит еще работу с регистром бухгалтерии.
(17) а ускорит ли работу этого запроса?
30 acsent
 
23.12.13
14:16
(27) Такие игрище не могут помочь в принципе.
31 acsent
 
23.12.13
14:16
(28) Только для выбора через точку. Для сравнения не обязательно
32 acsent
 
23.12.13
14:17
(29) без итогов не получшь остатки
33 mzelensky
 
23.12.13
14:18
(30) Ну как сказать. Я замерял - получалась ощутимая разница. Но ток я это на РС делал.
34 MrStomak
 
23.12.13
14:19
(25) "В иерархии" всегда создает проблемы, т.к. это подзапрос...
35 Coldboy
 
23.12.13
14:21
(34) ну сильно нагружает скорость работы запроса?
36 MrStomak
 
23.12.13
14:22
(33) Когда идёт разыменование через точку субконто, то СУБД делает 100500 соединений по всем возможным типам. При "выразить" только 1 соединение. Без разыменования соединений вообще нет.
37 acsent
 
23.12.13
14:24
(33) порядок полей может в регистре иметь дело.
И то несколько ты покрываешь первые поля условием
38 MrStomak
 
23.12.13
14:24
(35) Иногда очень сильно, иногда никак. Система не знает сколько записей вернет В ИЕРАРХИИ, в результате может использоваться scan вместо seek.
39 Coldboy
 
23.12.13
14:26
так вопрос, есть ли инструкция еще по оптимтизация SQL Server 2008 R2, там еще мб с настройками поиграть?
40 Armando
 
23.12.13
14:27
(0) Какой физический порядок субконто у счетов, которые попадают в условие В ИЕРАРХИИ (&Счет)?
41 Coldboy
 
23.12.13
14:27
Номенклатура, склада
у 41 счета
42 Maxus43
 
23.12.13
14:30
кстати периодичсеки исправляют, например в последней 8.2 пофиксили
Проблема:
Запросы, использующие виртуальную таблицу движений с субконто регистра бухгалтерии, выполняются неоправданно продолжительное время.
43 Coldboy
 
23.12.13
14:30
(42) у меня остатки, а не движения субконто :(
44 Maxus43
 
23.12.13
14:33
(43) я для примера - от платформы тоже может зависеть + не забываем про РЛС если есть... по эту случаю уже нафлудили впринципе,
45 Coldboy
 
23.12.13
14:38
1С:Предприятие 8.2 (8.2.18.109) версия платформы.
46 Coldboy
 
23.12.13
14:54
РЛС да вроде нет.
47 Coldboy
 
23.12.13
16:11
запрос с ВЫРАЗИТЬ, выполнился на 40% дольше чем просто было ...
48 MadHead
 
23.12.13
16:29
(47) тут особо тормозить нечему. Попробуйте вот так
ВЫБРАТЬ
    Хозрасчетный.Ссылка КАК Ссылка
ПОМЕСТИТЬ врем
ИЗ
    ПланСчетов.Хозрасчетный КАК Хозрасчетный
ГДЕ
    Хозрасчетный.Ссылка В(&Счета)

ИНДЕКСИРОВАТЬ ПО
    Ссылка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ХозрасчетныйОстатки.КоличествоОстаток
ИЗ
    РегистрБухгалтерии.Хозрасчетный.Остатки(
            &КонПериода,
            Счет В
                (ВЫБРАТЬ
                    врем.Ссылка
                ИЗ
                    врем КАК врем),
            &ВидыСубконто,
            Организация = &Организация
                И Субконто1 = &Номенклатура
                И Субконто2 = &Склад) КАК ХозрасчетныйОстатки

дополнительно надо передать виды субконто
49 MadHead
 
23.12.13
16:32
И рекомендую посмотреть план запроса. Везде ли index seek
50 MadHead
 
23.12.13
16:38
запрос точно не в цикле используется? )
Основная теорема систематики: Новые системы плодят новые проблемы.