Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) А что если добавить свой Индекс в .DD? (число прочтений - 14038 )
lustin
1c++ power user
Отсутствует


1C *.*, ROR, Java - на
этом остановимся

Сообщений: 907
Местоположение: Москва
Зарегистрирован: 20. Октября 2006
Пол: Мужской
А что если добавить свой Индекс в .DD?
29. Августа 2007 :: 11:31
Печать  
Вот вопрос, так вопрос:

Ради интереса взял я и добавил простой индекс к таблице ПартийТМЦ (дв.) вручную в файл словаря
Удалил файл cdx - запустил базу - и 1С этот индексный тэг создала.

Цитата:
I=GOODS    |SP6556        |0     |SP6556               |GOODS


SP6556 = Регистр.Партии.Товар

Количество записей в таблице 1.608.246, после введения индекса, индексный файл увеличился на 18 мегабайт

Время запроса: 18,585 сек
Код
Выбрать все
|SELECT
|	$Партии.Товар
|FROM
|	$Регистр.ПартииТоваров as Партии
|WHERE
|	$Партии.Товар IN (SELECT val FROM <ИмяВременнойТаблицыТоваров>)

 



Снёс индекс GOODS, и снова запустил запрос
Время запроса: 29,567 сек.

Вот теперь и думай:
1. Изменит ли 1С индекс созданный вручную при записи в таблицу Партий ?
2. Как перехватить реорганизацию DD-шника для долбавления в него ручной записи
3. И надо ли вообще совсем этим заморачиваться
  

бизнес-процесс как техническое задание прекрасно, только у бизнеса нет процессов; у бизнеса есть желание выжить
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: А что если добавить свой Индекс в .DD?
Ответ #1 - 29. Августа 2007 :: 12:06
Печать  
Кажется при обновлении базы индексы будут снесены в стандартные.
Каждый раз придется вручную править.
На мисте видел ветку , где писали, что таким образом серьезно ускорялись,
но сейчас не смог найти (и через гугл тоже) Печаль
Убиение индекса вроде не на что не влияет
http://www.kb.mista.ru/article.php?id=444&edition=1

Вообще мысль интересная - тогда не надо заморачиваться с индексными выражениями.
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: А что если добавить свой Индекс в .DD?
Ответ #2 - 29. Августа 2007 :: 12:10
Печать  
А вот нашел
http://www.forum.mista.ru/topic.php?id=254267&kb=1
(для SQL)
  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: А что если добавить свой Индекс в .DD?
Ответ #3 - 29. Августа 2007 :: 12:54
Печать  
Скуль или dbf?
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: А что если добавить свой Индекс в .DD?
Ответ #4 - 29. Августа 2007 :: 12:59
Печать  
Arta писал(а) 29. Августа 2007 :: 12:54:
Скуль или dbf?


DD - по ДБФ
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: А что если добавить свой Индекс в .DD?
Ответ #5 - 29. Августа 2007 :: 14:45
Печать  
Провел тестирование.
В DD в секцию
Цитата:
Регистр (Дв.) ОстаткиТоваров

была добавлена запись
Цитата:
I=IIDDOC   |of IDDOC      |0     |IDDOC                                                       |IIDDOC

т.е. прописан индекс по IDDOC для табл движений регистра ОстаткиТоваров
Потом удален файл CDX для этого регистра. При монопольном входе 1С создала этот индекс
в новом файле CDX.

Тестовый запрос :
Код
Выбрать все
    |SELECT
   |		$РегДвижений.IDDOC as IDDOC
   |
   |FROM <ПодЗапросПоЖурналу>
   |
   | LEFT JOIN    $Регистр.ОстаткиТоваров as РегДвижений
   |
   | ON  РегДвижений.iddoc = Подзапрос_Журнал.ИДЖур 



Где <ПодЗапросПоЖурналу> - просто выборка ID за период
Код
Выбрать все
|(Select
	|  Жур.IDDoc  as ИДЖур
	|  from   1sjourn    as Жур
	|  WHERE
	|     DTOS(Жур.date)+Жур.time+Жур.iddoc BETWEEN (DTOS(:НачДата~~)+'		   ')
	|					    AND (DTOS(:КонДата~~)+'ZZZZZZZZZZZZZZZ')
	|     AND (Жур.$ФлагРегистра.ОстаткиТоваров = 1)
	|   ) as Подзапрос_Журнал 



Т.е. Тестируется соединение 
Код
Выбрать все
 ON  РегДвижений.iddoc =  


Результаты
1. Без этого индекса        0.217 с
2.С индексом                     0.037 с

Т.е. в 7 раз! И это в тестовой базе, на живой обычно результаты еще больше.

Был проведен документ.
Результат : Индекс обновился.

Был изменен документ в конфигурации, т.е. даже не регистр.
Результат : Индекс был удален.

Итого : Наверно целесообразно писать скрипт по правке DD и удалению CDX.
Тогда не нужно применять сложного программирования чтобы попадать в индекс.
Достаточно стандартного SQL.
Файлы CDX будут существенно уменьшены.
Левые соединения регистров вообще по 1С индексам невозможно реализовать - а так это будет сразу.
  
Наверх
 
IP записан
 
dnp
Senior Member
****
Отсутствует


.

Сообщений: 479
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: А что если добавить свой Индекс в .DD?
Ответ #6 - 29. Августа 2007 :: 15:22
Печать  
kiruha писал(а) 29. Августа 2007 :: 14:45:
Файлы CDX будут существенно уменьшены.

Вроде увеличиться дожны?..
  
Наверх
ICQ  
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: А что если добавить свой Индекс в .DD?
Ответ #7 - 29. Августа 2007 :: 16:25
Печать  
Это если только добавлять.
А если еще порезать ненужные - то уменьшатся .
Стандартный 1С-кий индекс - это сложение по 5-10 полям размером каждого 4-13 символов.

Правда это решение для "ленивых" Улыбка
Тут еще поразмыслив немного, думаю, что 1С-ких индексов мне вполне хватает,
не хватает нормальных индексов по регистру движений - но их можно добавить штатными "отборами".
  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: А что если добавить свой Индекс в .DD?
Ответ #8 - 29. Августа 2007 :: 17:00
Печать  
kiruha писал(а) 29. Августа 2007 :: 12:59:
DD - по ДБФ



Логично. Улыбка
А для SQL есть более удобное решение.
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: А что если добавить свой Индекс в .DD?
Ответ #9 - 29. Августа 2007 :: 17:08
Печать  
И как-то мелькал скрипт Опенконфа для решения подобной задачи - авто-сохранение индексов и/или ДД-файла при сохранении конфы.
Поищите в наборе скриптов Опенконфа.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: А что если добавить свой Индекс в .DD?
Ответ #10 - 30. Августа 2007 :: 05:16
Печать  
скрипт называется ExtDD.vbs
  

ExtDD.rar ( 1 KB | Загрузки )

1&&2&&3
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: А что если добавить свой Индекс в .DD?
Ответ #11 - 04. Августа 2009 :: 10:40
Печать  
Решил выложить немного исправленную версию скрипта.
Дело в том что если строки индексов (I=) добавлять в секцию Fields (как в вышеуказанной версии) тогда 1С при открытии документов у которых добавлены индексы не считывает реквизиты использованные в этих индексах, что приводит к неприятным последствиям. Все таки правильнее писать индексы в их "родную" секцию. Исправления коснулись одной строчки.
  

ExtDD_001.rar ( 1 KB | Загрузки )

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
maljaev
Senior Member
****
Отсутствует


Классический секс с 1С
надоел. Хочется изврата...

Сообщений: 405
Местоположение: Нижний Новгород
Зарегистрирован: 19. Октября 2006
Пол: Мужской
Re: А что если добавить свой Индекс в .DD?
Ответ #12 - 04. Августа 2009 :: 11:07
Печать  
Я даже пробовал DBF-файлы раскидывать по разным папкам и винтам, а в DD назначал полный путь к этим файлам. Например:

T=1SCONST |Константы                     |A          |d:\base1s\1SCONST    |1

Теоретически можно ускорить дисковые операции даже при отсутствии рэйда. Жаль, что при изменении структуры БД все изменения DD слетают.

И индексы тоже менял. Можно сортировку в журналах поменять таким образом, и в журналах расчета. Только менять существующие индексы чревато разными нежелательными последствиями, т.к. они не только для отображения списков используются.
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: А что если добавить свой Индекс в .DD?
Ответ #13 - 04. Августа 2009 :: 11:43
Печать  
база sql.
А может кто пробовал и может можно реализовать
скажем реквизит справочника ( документа )

sp100 char(200) заменить на sp100 varchar(200)
на этом реквизите нет никаких индексов.
  
Наверх
 
IP записан
 
Anreko
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 3
Зарегистрирован: 05. Августа 2009
Re: А что если добавить свой Индекс в .DD?
Ответ #14 - 05. Августа 2009 :: 05:18
Печать  
trad писал(а) 30. Августа 2007 :: 05:16:
скрипт называется ExtDD.vbs


Будет ли нормальное исправление скрипта в связи с проблемой
1cpp.ru/forum/YaBB.pl?num=1211029650

Решение vandalsvq не совсем корректное и решает только частный случай проблемы, а как быть, если я хочу добавить новые поля или индексов по умолчанию у таблицы нет, проверка на то, что первый должен быть обязательно уникальным.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать