Имя: Пароль:
1C
1С v8
Регистр накопления включение индексировать по всем измерениям
,
0 Coldboy
 
29.12.13
17:06
Здравствуйте. По умолчанию в конфе для регистра накопления не стоит значение для измерений индексировать, а если их включить, ведь в клиент-серверном быстродействие увеличится, почему изначально такое не включают?
1 ДенисЧ
 
29.12.13
17:14
потому что не увеличтся.
2 Coldboy
 
29.12.13
17:19
(1) с чего это? http://www.gilev.ru/index/
3 Нууф-Нууф
 
29.12.13
17:20
все относительно
4 marvak
 
29.12.13
17:24
(0)
Для каких именно регистров накопления и для каких измерений не стоит индексирование?
5 ДенисЧ
 
29.12.13
17:26
(2) а на создание и обновление этих индексов?
6 Нууф-Нууф
 
29.12.13
17:27
не стоит включать все подряд. перед любым таким действием надо сесть и хорошо подумать
7 EugeniaK
 
29.12.13
17:27
(0) Не обязательно чтение увеличится.
Зависит от того, как основная часть запросов построена.
Но зато в любом случае замедлится запись.
Индексировать надо с умом, а не все подряд.
8 GROOVY
 
29.12.13
18:13
Данные по которым строятся вирт таблицы и так индексируются, а к реальным движениям вроде как не модно обращаться, нафига их индексировать?
9 Coldboy
 
29.12.13
19:01
(8) вирутальный по умолчанию да?
тогда вопрос совсем отпадает.
10 Coldboy
 
29.12.13
19:01
(4) я думал для вирутальных таблиц еще будет строится индекс, думал для них не строится.
11 GROOVY
 
29.12.13
19:08
(9) Для целей расчета показателей виртуальных таблиц значения измерений однозначно проиндексированы.
12 Coldboy
 
29.12.13
19:35
(11) я думал не всегда индексируются, а если индексируются и оптимально, тогда вопросов нет. спасибо.
13 Лефмихалыч
 
29.12.13
19:59
(0) эта распространенная логическая ошибка называется "Предвосхищение основания". Ты не доказал, что быстродействие увеличится, а принял на веру. Индексы - это не бесплатное волшебство. И не бесплатное, и не волшебство
(8) >а к реальным движениям вроде как не модно обращаться
на экзаменте - это сразу минус полтора балла (0)
14 Coldboy
 
29.12.13
20:41
(13) а я тута причем, сама 1С делала такой запрос
Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("Организация", Организация);
    Запрос.УстановитьПараметр("Граница",     Граница);
    Для каждого Фильтр Из ТаблицаФильтров Цикл
        Запрос.УстановитьПараметр(Фильтр.ИмяПоля,     Фильтр.ЗначениеПоля);
    КонецЦикла;
    Текст =
    "ВЫБРАТЬ
    |    РасходыУСН.Организация,
    |    РасходыУСН.ВидРасхода,
    |    РасходыУСН.ЭлементРасхода,
    |    РасходыУСН.СчетУчета,
    |    РасходыУСН.Валюта,
    |    РасходыУСН.ДоговорКонтрагента,
    |    РасходыУСН.РасчетныйДокумент,
    |    РасходыУСН.СтатусыПартийУСН,
    |    РасходыУСН.Партия,
    |    РасходыУСН.ОтражениеВУСН,
    |    РасходыУСН.СтатусыОплатыРасходовУСН,
    |    РасходыУСН.СтатусыОплатыРасходовУСН.Порядок КАК СтатусыОплатыРасходовУСНПорядок,
    |    СУММА(РасходыУСН.КоличествоОстаток) КАК Количество,
    |    СУММА(РасходыУСН.СуммаОстаток) КАК Сумма,
    |    СУММА(РасходыУСН.НДСОстаток) КАК НДС,
    |    РасходыУСН.НомерСтрокиДокумента КАК НомерСтрокиДокумента,
    |    РасходыУСН.РеквизитыДокументаОплаты КАК РеквизитыДокументаОплаты,
    |    РасходыУСН.Партия.Дата КАК ПартияДата,
    |    РасходыУСН.РасчетныйДокумент.Дата КАК РасчетныйДокументДата
    |ИЗ
    |    РегистрНакопления.РасходыПриУСН.Остатки(&Граница, Организация = &Организация";
    
    Для каждого Фильтр Из ТаблицаФильтров Цикл
        Если Найти(Фильтр.Условие, "В") = 0 Тогда
            Текст = Текст + " И " + Фильтр.ИмяПоля + " " + Фильтр.Условие + " &" + Фильтр.ИмяПоля;
        Иначе
            Текст = Текст + " И " + Фильтр.ИмяПоля + " " + Фильтр.Условие + " (&" + Фильтр.ИмяПоля + ")";
        КонецЕсли;
    КонецЦикла;
    
    Текст = Текст + ") КАК РасходыУСН
    |
    |СГРУППИРОВАТЬ ПО
    |    РасходыУСН.Организация,
    |    РасходыУСН.ВидРасхода,
    |    РасходыУСН.ЭлементРасхода,
    |    РасходыУСН.СчетУчета,
    |    РасходыУСН.Валюта,
    |    РасходыУСН.ДоговорКонтрагента,
    |    РасходыУСН.РасчетныйДокумент,
    |    РасходыУСН.СтатусыПартийУСН,
    |    РасходыУСН.Партия,
    |    РасходыУСН.ОтражениеВУСН,
    |    РасходыУСН.СтатусыОплатыРасходовУСН,
    |    РасходыУСН.НомерСтрокиДокумента,
    |    РасходыУСН.РеквизитыДокументаОплаты
    |
    |ДЛЯ ИЗМЕНЕНИЯ
    |
    |УПОРЯДОЧИТЬ ПО
    |    СтатусыОплатыРасходовУСНПорядок,
    |    ПартияДата,
    |    РасчетныйДокументДата,
    |    НомерСтрокиДокумента";

который щас 80% времени при восстановление последоватлельности занимает...
15 ilpar
 
29.12.13
21:25
Порядок Измерений в конфигураторе - это есть кластерный индекс.
Попадайте в индекс в запросах, и все будет нормуль с быстродействием.
16 Coldboy
 
29.12.13
21:37
(15) еще раз для особо одаренных) про кластерный индекс я понял. а что значит попадайй в индекс в запросах? вот типовой запрос, как его ускорить )
17 viraboy
 
29.12.13
21:47
(16) Поля в условии и соединении должны быть в том же порядке как и в индексе
18 m-serg74
 
29.12.13
21:50
(14) кстати всегда не понимал: какой смысл группировать по всем измерениям... на автопилоте?
19 Coldboy
 
29.12.13
21:56
(18) типовая вещь из БП 2.0, жутко по замерам время при закрытии не маленькой базы сьедает ...
(17) выбирать поля в том же порядке, как они в конфигураторе располагаются верно, то есть выборку делать?
20 m-serg74
 
29.12.13
21:56
(19) да я понял что это не ты писал...
21 Coldboy
 
29.12.13
21:57
(20) а зачем вопрос тогда про автопилот )))
22 m-serg74
 
29.12.13
21:58
(21) не к тебе, просто говорю же удивлен...
23 Лефмихалыч
 
29.12.13
21:59
(14) ффу, мерзость!..
24 m-serg74
 
29.12.13
22:00
(21) там РасчетныйДокумент, Партия, РеквизитыДокументаОплаты - составные, реально все документы используются у вас? как варик убрать из регистраторов то чего никогда не будет использоваться
25 echo77
 
29.12.13
22:05
Груви все четко и правильно сказал в (8)
И у меня встречный вопрос: создал регистр сведений,подчиненный регистратору, периодический, ничего не индексировал, а прога "размер таблиц файловых баз" показывает что индексы занимают примерно половину объема данных
Срез последних с отбором в параметрпе ВТ работает шустро.
Что это за индекс?
26 m-serg74
 
29.12.13
22:08
(25) Период, может регистратор, мож еще какие стандартные реквизиты
27 echo77
 
29.12.13
22:08
(19) не выбирать, а накладывать условие
Кстати про эту тему есть статья на ИТС
28 m-serg74
 
29.12.13
22:11
(27) кстати ТС же написал - это типовой запрос из БП, УПП... или писателей типовых эта статья на ИТС не коснулась? :)
29 Coldboy
 
29.12.13
22:16
Функция ВыполнитьЗапросПоРасходам(Граница, Организация, ТаблицаФильтров, ТаблицаБлокировок = Неопределено) Экспорт
    
    УстановитьБлокировкиПоТаблицеФильтров("РасходыПриУСН", ТаблицаФильтров, ТаблицаБлокировок, Организация);
    ОбработатьТаблицуФильтров(ТаблицаФильтров);
    
    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("Организация", Организация);
    Запрос.УстановитьПараметр("Граница",     Граница);
    Для каждого Фильтр Из ТаблицаФильтров Цикл
        Запрос.УстановитьПараметр(Фильтр.ИмяПоля,     Фильтр.ЗначениеПоля);
    КонецЦикла;
    Текст =
    "ВЫБРАТЬ
    |    РасходыУСН.Организация,
    |    РасходыУСН.ВидРасхода,
    |    РасходыУСН.ЭлементРасхода,
    |    РасходыУСН.СчетУчета,
    |    РасходыУСН.Валюта,
    |    РасходыУСН.ДоговорКонтрагента,
    |    РасходыУСН.РасчетныйДокумент,
    |    РасходыУСН.СтатусыПартийУСН,
    |    РасходыУСН.Партия,
    |    РасходыУСН.ОтражениеВУСН,
    |    РасходыУСН.СтатусыОплатыРасходовУСН,
    |    РасходыУСН.СтатусыОплатыРасходовУСН.Порядок КАК СтатусыОплатыРасходовУСНПорядок,
    |    СУММА(РасходыУСН.КоличествоОстаток) КАК Количество,
    |    СУММА(РасходыУСН.СуммаОстаток) КАК Сумма,
    |    СУММА(РасходыУСН.НДСОстаток) КАК НДС,
    |    РасходыУСН.НомерСтрокиДокумента КАК НомерСтрокиДокумента,
    |    РасходыУСН.РеквизитыДокументаОплаты КАК РеквизитыДокументаОплаты,
    |    РасходыУСН.Партия.Дата КАК ПартияДата,
    |    РасходыУСН.РасчетныйДокумент.Дата КАК РасчетныйДокументДата
    |ИЗ
    |    РегистрНакопления.РасходыПриУСН.Остатки(&Граница, Организация = &Организация";
    
    Для каждого Фильтр Из ТаблицаФильтров Цикл
        Если Найти(Фильтр.Условие, "В") = 0 Тогда
            Текст = Текст + " И " + Фильтр.ИмяПоля + " " + Фильтр.Условие + " &" + Фильтр.ИмяПоля;
        Иначе
            Текст = Текст + " И " + Фильтр.ИмяПоля + " " + Фильтр.Условие + " (&" + Фильтр.ИмяПоля + ")";
        КонецЕсли;
    КонецЦикла;
    
    Текст = Текст + ") КАК РасходыУСН
    |
    |СГРУППИРОВАТЬ ПО
    |    РасходыУСН.Организация,
    |    РасходыУСН.ВидРасхода,
    |    РасходыУСН.ЭлементРасхода,
    |    РасходыУСН.СчетУчета,
    |    РасходыУСН.Валюта,
    |    РасходыУСН.ДоговорКонтрагента,
    |    РасходыУСН.РасчетныйДокумент,
    |    РасходыУСН.СтатусыПартийУСН,
    |    РасходыУСН.Партия,
    |    РасходыУСН.ОтражениеВУСН,
    |    РасходыУСН.СтатусыОплатыРасходовУСН,
    |    РасходыУСН.НомерСтрокиДокумента,
    |    РасходыУСН.РеквизитыДокументаОплаты
    |
    |ДЛЯ ИЗМЕНЕНИЯ
    |
    |УПОРЯДОЧИТЬ ПО
    |    СтатусыОплатыРасходовУСНПорядок,
    |    ПартияДата,
    |    РасчетныйДокументДата,
    |    НомерСтрокиДокумента";
Запрос.Текст = текст;
Возврат Запрос.Выполнить().Выгрузить();
КонецФункции

разбавлю наш вечер и возмущения (23) типовая БП 2.0, на ней построен общепит 2.0
30 Coldboy
 
29.12.13
22:18
ОбщмиеМодули.НалоговыйУчетУСН вон там это чудо
(24) каким образом можно убрать думал над этим.
(27) вроде накладываются в том порядке. статья итс где точнее?
31 Coldboy
 
29.12.13
22:19
вот это с помощью мисты работает, быстрее раза в 2 по замерам гилева и так замерам, но все же тоже также не совершенство.
Запрос = Новый Запрос;
    
    Запрос.УстановитьПараметр("Организация", Организация);
    Запрос.УстановитьПараметр("Граница",     Граница);
    Для каждого Фильтр Из ТаблицаФильтров Цикл
        Запрос.УстановитьПараметр(Фильтр.ИмяПоля,  Фильтр.ЗначениеПоля);
    КонецЦикла;
    
    ТекстФильтра = "";
    Для каждого Фильтр Из ТаблицаФильтров Цикл
        Если Найти(Фильтр.Условие, "В") = 0 Тогда
            ТекстФильтра = ТекстФильтра + " И " + Фильтр.ИмяПоля + " " + Фильтр.Условие + " &" + Фильтр.ИмяПоля;
        Иначе
            ТекстФильтра = ТекстФильтра + " И " + Фильтр.ИмяПоля + " " + Фильтр.Условие + " (&" + Фильтр.ИмяПоля + ")";
        КонецЕсли;
    КонецЦикла;
    
    Текст =
    "ВЫБРАТЬ
    |    РасходыУСН.Организация,
    |    РасходыУСН.ВидРасхода,
    |    РасходыУСН.ЭлементРасхода,
    |    РасходыУСН.СчетУчета,
    |    РасходыУСН.Валюта,
    |    РасходыУСН.ДоговорКонтрагента,
    |    РасходыУСН.РасчетныйДокумент,
    |    РасходыУСН.СтатусыПартийУСН,
    |    РасходыУСН.Партия,
    |    РасходыУСН.ОтражениеВУСН,
    |    РасходыУСН.СтатусыОплатыРасходовУСН,
    |    РасходыУСН.СтатусыОплатыРасходовУСН.Порядок КАК СтатусыОплатыРасходовУСНПорядок,
    |    СУММА(РасходыУСН.КоличествоОстаток) КАК Количество,
    |    СУММА(РасходыУСН.СуммаОстаток) КАК Сумма,
    |    СУММА(РасходыУСН.НДСОстаток) КАК НДС,
    |    РасходыУСН.НомерСтрокиДокумента КАК НомерСтрокиДокумента,
    |    РасходыУСН.РеквизитыДокументаОплаты КАК РеквизитыДокументаОплаты
    |ПОМЕСТИТЬ Остатки
    |ИЗ
    |    РегистрНакопления.РасходыПриУСН.Остатки(
    |            &Граница,
    |            Организация = &Организация
    |                И &ТекстФильтра) КАК РасходыУСН
    |
    |СГРУППИРОВАТЬ ПО
    |    РасходыУСН.Организация,
    |    РасходыУСН.ВидРасхода,
    |    РасходыУСН.ЭлементРасхода,
    |    РасходыУСН.СчетУчета,
    |    РасходыУСН.Валюта,
    |    РасходыУСН.ДоговорКонтрагента,
    |    РасходыУСН.РасчетныйДокумент,
    |    РасходыУСН.СтатусыПартийУСН,
    |    РасходыУСН.Партия,
    |    РасходыУСН.ОтражениеВУСН,
    |    РасходыУСН.СтатусыОплатыРасходовУСН,
    |    РасходыУСН.НомерСтрокиДокумента,
    |    РасходыУСН.РеквизитыДокументаОплаты,
    |    РасходыУСН.СтатусыОплатыРасходовУСН.Порядок
    |;
    |
    |////////////////////////////////////////////////////////////////////////////////

    |ВЫБРАТЬ РАЗЛИЧНЫЕ
    |    Остатки.Партия КАК Ссылка
    |ПОМЕСТИТЬ ДокументыВсе
    |ИЗ
    |    Остатки КАК Остатки
    |
    |ОБЪЕДИНИТЬ
    |
    |ВЫБРАТЬ РАЗЛИЧНЫЕ
    |    Остатки.РасчетныйДокумент
    |ИЗ
    |    Остатки КАК Остатки
    |";
    
    Текст = СтрЗаменить(Текст, "И &ТекстФильтра", ТекстФильтра);
    
    МассивИмен = Новый Массив;
    Для каждого Тип Из Метаданные.РегистрыНакопления.РасходыПриУСН.Измерения.Партия.Тип.Типы() Цикл
        ИмяМД = Метаданные.НайтиПоТипу(Тип).Имя;
        Если МассивИмен.Найти(ИмяМД) = Неопределено Тогда
            МассивИмен.Добавить(ИмяМД);
        КонецЕсли;
    КонецЦикла;
    
    ТекстДаты = "";
    Для каждого ИмяМД Из МассивИмен Цикл
    
        ТекстДаты = ТекстДаты
            + ?(ТекстДаты = "", "", Символы.ПС + "ОБЪЕДИНИТЬ ВСЕ")
            + Символы.ПС + "ВЫБРАТЬ Ссылка, Дата "
            + ?(ТекстДаты = "", "ПОМЕСТИТЬ ДокиДаты", "")
            + Символы.ПС + " ИЗ Документ." + ИмяМД + " КАК Док ГДЕ Ссылка В (ВЫБРАТЬ Ссылка ИЗ ДокументыВсе)"
    
    КонецЦикла;
        
    Текст = Текст
    + ";" + ТекстДаты
    + "
    |;
    |    ВЫБРАТЬ
    |    Остатки.Организация,
    |    Остатки.ВидРасхода,
    |    Остатки.ЭлементРасхода,
    |    Остатки.СчетУчета,
    |    Остатки.Валюта,
    |    Остатки.ДоговорКонтрагента,
    |    Остатки.РасчетныйДокумент,
    |    ДатыРасчетныхДокументов.Дата КАК РасчетныйДокументДата,
    |    Остатки.СтатусыПартийУСН,
    |    Остатки.Партия,
    |    ДатыПартий.Дата КАК ПартияДата,
    |    Остатки.ОтражениеВУСН,
    |    Остатки.СтатусыОплатыРасходовУСН,
    |    Остатки.СтатусыОплатыРасходовУСНПорядок,
    |    Остатки.Количество,
    |    Остатки.Сумма,
    |    Остатки.НДС,
    |    Остатки.НомерСтрокиДокумента,
    |    Остатки.РеквизитыДокументаОплаты
    |ИЗ
    |    Остатки КАК Остатки
    |ЛЕВОЕ СОЕДИНЕНИЕ ДокиДаты КАК ДатыПартий
    |    ПО Остатки.Партия = ДатыПартий.Ссылка
    |ЛЕВОЕ СОЕДИНЕНИЕ ДокиДаты КАК ДатыРасчетныхДокументов
    |    ПО Остатки.РасчетныйДокумент = ДатыРасчетныхДокументов.Ссылка
    |УПОРЯДОЧИТЬ ПО
    |    СтатусыОплатыРасходовУСНПорядок,
    |    ПартияДата,
    |    РасчетныйДокументДата,
    |    НомерСтрокиДокумента
    |";
32 m-serg74
 
29.12.13
22:25
(30) /каким образом можно убрать думал над этим/

галки у регистра поснимать что они - регистраторы,
я у себя поснимал с всяких Авизо, ОтчетыКоммитентов и т.п.
а то используется в БД 13-15 документов, а там их чуть ли не под 50... на копии... и проверить результат действа
33 Coldboy
 
29.12.13
22:28
(32) а тупо регистраторы по снимал, с этого регистра ну тоже вариант, но это уже надо с гл. бух согласосывать, т.к. те документы уже фурычить не будут.
34 m-serg74
 
29.12.13
22:34
(33) это по любому но на копии то ничто тебе не мешает проверить без согласований
35 Coldboy
 
29.12.13
22:47
(34) обязательно проверю... ) заранее даже спасибо.