Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема 1SQLITE:DBF:Выборка из табличной части документа (число прочтений - 2736 )
Andrey (sttt)
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 49
Зарегистрирован: 10. Января 2009
Пол: Мужской
1SQLITE:DBF:Выборка из табличной части документа
02. Сентября 2015 :: 12:15
Печать  
Как можно быстро выбрать документы, содержащие за все периоды, необходимый элемент справочника - например товар?
Табличные части часто превышают 10 000 строк (так необходимо), и документов достаточно много. Сейчас выборка занимает больше 30 секунд.
Читал, что можно 1Cv77.DD править, тем самым создавая необходимые индексы. Может есть еще варианты?

Запрос примерно такой:
Код
Выбрать все
SELECT
d.IDDOC
,s.Комментарий
FROM
[ДокументСтроки.Поступление] as s
LEFT JOIN [Документ.Поступление] as d
ON s.IDDOC = d.IDDOC
WHERE
s.Комментарий <> ''
UNION ALL
SELECT
d.IDDOC
,d.Комментарий
FROM
[Документ.Поступление] as d
WHERE
d.Комментарий <> '' 

  
Наверх
 
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 634
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: 1SQLITE:DBF:Выборка из табличной части документа
Ответ #1 - 02. Сентября 2015 :: 15:47
Печать  
Файловая база sqlite или справочник 1С,  +обработка переформирования справочника, +формирование таких записей при записи документа.
Других вариантов не вижу, разве что в регистр засунуть, но в регистр данные непроведенного документа не попадут.
  
Наверх
www  
IP записан
 
Sserj
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 77
Зарегистрирован: 25. Октября 2010
Re: 1SQLITE:DBF:Выборка из табличной части документа
Ответ #2 - 03. Сентября 2015 :: 02:43
Печать  
Совсем не понял зачем вот эта часть:

UNION ALL
SELECT
d.IDDOC
,d.Комментарий
FROM
[Документ.Поступление] as d
WHERE
d.Комментарий <> ''
  
Наверх
 
IP записан
 
Andrey (sttt)
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 49
Зарегистрирован: 10. Января 2009
Пол: Мужской
Re: 1SQLITE:DBF:Выборка из табличной части документа
Ответ #3 - 03. Сентября 2015 :: 11:03
Печать  
Djelf писал(а) 02. Сентября 2015 :: 15:47:
Файловая база sqlite или справочник 1С,  +обработка переформирования справочника, +формирование таких записей при записи документа.
Других вариантов не вижу, разве что в регистр засунуть, но в регистр данные непроведенного документа не попадут.

к сожалению только документы, с большим количеством строк и необходимо найти все нужные строки, и за все периоды, с необходимым условно "товаром". комментарии устанавливают, как в справочнике Товары, так и в шапке документа и строках документа. регистров нет, только документ. зачем так сделано не интересовался, но так необходимо, возможно есть решение сделать лучше, но пока необходимо сделать выборку быстрее из того, что есть.
  
Наверх
 
IP записан
 
Andrey (sttt)
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 49
Зарегистрирован: 10. Января 2009
Пол: Мужской
Re: 1SQLITE:DBF:Выборка из табличной части документа
Ответ #4 - 03. Сентября 2015 :: 11:07
Печать  
Sserj писал(а) 03. Сентября 2015 :: 02:43:
Совсем не понял зачем вот эта часть:

UNION ALL
SELECT
d.IDDOC
,d.Комментарий
FROM
[Документ.Поступление] as d
WHERE
d.Комментарий <> ''


Потому, что, комментарии есть в шапке документа, и в табличной части. А LEFT JOIN для того чтобы типизация была нормальная, если оставить IDDOC табличной части, тогда в отчетах расшифровка не работает нормально. Возможно чего не знаю...
  
Наверх
 
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 634
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: 1SQLITE:DBF:Выборка из табличной части документа
Ответ #5 - 03. Сентября 2015 :: 18:55
Печать  
Andrey (sttt) писал(а) 03. Сентября 2015 :: 11:07:
Возможно чего не знаю...

типизацию надо делать s.IDDOC [Поступление $Документ.Поступление]

а ,s.Комментарий небось еще и строка неогранигенной длинны?

Тогда вообще никакие индексы не помогут, только выгружать d.IDDOC и s.Комментарий и т.п. в файл sqlite, его индексировать и из него уже дергать информацию.


  
Наверх
www  
IP записан
 
Andrey (sttt)
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 49
Зарегистрирован: 10. Января 2009
Пол: Мужской
Re: 1SQLITE:DBF:Выборка из табличной части документа
Ответ #6 - 03. Сентября 2015 :: 19:22
Печать  
Djelf писал(а) 03. Сентября 2015 :: 18:55:
Andrey (sttt) писал(а) 03. Сентября 2015 :: 11:07:
Возможно чего не знаю...

типизацию надо делать s.IDDOC [Поступление $Документ.Поступление]

а ,s.Комментарий небось еще и строка неогранигенной длинны?

Тогда вообще никакие индексы не помогут, только выгружать d.IDDOC и s.Комментарий и т.п. в файл sqlite, его индексировать и из него уже дергать информацию.

))) конечно, как-же без этого...
да, мне приходила мысль в файл сохранять. похоже придется писать

типизацию тоже делал - это не помогло, открывает невесть, что. может нужно было местами поменять...
  
Наверх
 
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 634
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: 1SQLITE:DBF:Выборка из табличной части документа
Ответ #7 - 03. Сентября 2015 :: 20:05
Печать  
Andrey (sttt) писал(а) 03. Сентября 2015 :: 19:22:
да, мне приходила мысль в файл сохранять. похоже придется писать

Это не так сложно, как кажется поначалу!
Я вообще весь хлам (типа всяких интеграций) в базы sqlite засовываю - с 1sqlite проблем в такой работе не возникает.
  
Наверх
www  
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать