Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Очень популярная тема (более 25 ответов) Программное обновление журнала документов?! (число прочтений - 5765 )
ReLock
Full Member
***
Отсутствует



Сообщений: 155
Местоположение: За компом
Зарегистрирован: 01. Февраля 2007
Пол: Мужской
Программное обновление журнала документов?!
02. Сентября 2010 :: 11:36
Печать  
Добрый день. Измените, если не в ту ветку вопрос, но все же: как программно обновить общий журнал документов? Сделал обработку, в которой устанавливаю фильтры по реквизитам шапки любого документа. А далее мне нужно обновить журнал. Вот только как не знаю. Вернее есть решение с использованием граф отбора через УстановитьОтбор(""), но работает медленно. Пока установится отбор по колонке, потом отключится...
Может быть в библиотеках 1cpp или FormEx есть уже готовое решение???
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Программное обновление журнала документов?!
Ответ #1 - 02. Сентября 2010 :: 11:44
Печать  
Посмотрите ЭТО
  
Наверх
 
IP записан
 
ReLock
Full Member
***
Отсутствует



Сообщений: 155
Местоположение: За компом
Зарегистрирован: 01. Февраля 2007
Пол: Мужской
Re: Программное обновление журнала документов?!
Ответ #2 - 02. Сентября 2010 :: 12:19
Печать  
Цитата:
Внимание
Поставщик данных «Журнал» не поддерживает создание журнала с типом «Общий».
Похоже не подходит.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Программное обновление журнала документов?!
Ответ #3 - 02. Сентября 2010 :: 12:23
Печать  
Ну тогда рассказывай, как ты сделал свой Журнал с отбором по любому реквизиту Шапки любого документа.
ЗЫ: ТЗ на форме что ли ?
Улыбка

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



Сообщений: 155
Местоположение: За компом
Зарегистрирован: 01. Февраля 2007
Пол: Мужской
Re: Программное обновление журнала документов?!
Ответ #4 - 02. Сентября 2010 :: 12:36
Печать  
Есть стандартный общий журнал. На нем я расположил кнопку "Фильтр"
  

001_001.png ( 28 KB | Загрузки )
001_001.png
Наверх
 
IP записан
 
ReLock
Full Member
***
Отсутствует



Сообщений: 155
Местоположение: За компом
Зарегистрирован: 01. Февраля 2007
Пол: Мужской
Re: Программное обновление журнала документов?!
Ответ #5 - 02. Сентября 2010 :: 12:37
Печать  
При нажатии кнопки открывается модально окно, где я указываю необходимые фильтры.
  

002.png ( 10 KB | Загрузки )
002.png
Наверх
 
IP записан
 
ReLock
Full Member
***
Отсутствует



Сообщений: 155
Местоположение: За компом
Зарегистрирован: 01. Февраля 2007
Пол: Мужской
Re: Программное обновление журнала документов?!
Ответ #6 - 02. Сентября 2010 :: 12:40
Печать  
Включаю в этом окне флажок "Фильтр активен" и нажимаю кнопку "Закрыть". Вот в этот момент после закрытия модального окна и хотелось бы вызывать переобновление журнала документов.

Для подмены запросов используется компонента ToySQL.
  
Наверх
 
IP записан
 
ReLock
Full Member
***
Отсутствует



Сообщений: 155
Местоположение: За компом
Зарегистрирован: 01. Февраля 2007
Пол: Мужской
Re: Программное обновление журнала документов?!
Ответ #7 - 02. Сентября 2010 :: 12:48
Печать  
Кусочек кода подмены:
Код
Выбрать все
ТекстSQL = "Select * from _1SJOURN(NOLOCK INDEX=ACDATETIME) where DATE_TIME_IDDOC>=? and DATE_TIME_IDDOC<=? order by DATE_TIME_IDDOC";
НовыйSQL = "Select * from _1SJOURN(NOLOCK INDEX=ACDATETIME) where DATE_TIME_IDDOC between ? and ? " + глТекст + " order by DATE_TIME_IDDOC";
глЗапрос.ДобавитьЗамену(ТекстSQL,НовыйSQL,1);

ТекстSQL = "Select COUNT(*) from _1SJOURN(NOLOCK INDEX=ACDATETIME) where  (DATE_TIME_IDDOC>=? and DATE_TIME_IDDOC<=?) and DATE_TIME_IDDOC<=?";
НовыйSQL = "Select COUNT(*) from _1SJOURN(NOLOCK INDEX=ACDATETIME) where (DATE_TIME_IDDOC between ? and ?) and DATE_TIME_IDDOC<=? " + глТекст;
глЗапрос.ДобавитьЗамену(ТекстSQL,НовыйSQL,1);
глЗапрос.Перехват(1);
УстановкаОтбора("Клиент");
УстановкаОтбора("");
 



Последние 2 строчки обновление делают, но очень долго. Особенно, если ставить фильтр не на локальной базе, а на сетевой.
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Программное обновление журнала документов?!
Ответ #8 - 02. Сентября 2010 :: 12:57
Печать  
Если Вы делаете подмены такие то хинты  индексов не ставьте
sql сделает это вместо Вас гораздо лучше.
  
Наверх
 
IP записан
 
ReLock
Full Member
***
Отсутствует



Сообщений: 155
Местоположение: За компом
Зарегистрирован: 01. Февраля 2007
Пол: Мужской
Re: Программное обновление журнала документов?!
Ответ #9 - 02. Сентября 2010 :: 13:11
Печать  
Z1 писал(а) 02. Сентября 2010 :: 12:57:
Если Вы делаете подмены такие то хинты  индексов не ставьте
sql сделает это вместо Вас гораздо лучше.

К сожалению, если я не буду использовать индексы, то план выполнения запроса будет не самым оптимальным. Я в этом не раз убеждался, вернее меня убеждала утилита от SQL (Microsoft SQL Server Management Studio - Query - Analyze Query in Database Engine Tuning Advisor)
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Программное обновление журнала документов?!
Ответ #10 - 02. Сентября 2010 :: 13:25
Печать  
если Вы напишете
глТекст = " and IDDOC = КонкректныйID";

то ваш подмененный запрос все равно будет использовать индекс
INDEX=ACDATETIME и просмотрит все документы в заданном интервале.
Ну и от таких запросов у sql2005 "сносит крышу" потому что база
работает в режиме 80.

PS Если нет хинтов в запросе это не значит что индексы не используются а это значит что sql сервер сам подберет индекс.
  
Наверх
 
IP записан
 
ReLock
Full Member
***
Отсутствует



Сообщений: 155
Местоположение: За компом
Зарегистрирован: 01. Февраля 2007
Пол: Мужской
Re: Программное обновление журнала документов?!
Ответ #11 - 02. Сентября 2010 :: 13:28
Печать  
1) А почему тогда профайлер не показывает использование индексов в запросах, если их не описывать?
2) Т.е. ты предлагаешь не использовать хинты индексов в запросах?
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Программное обновление журнала документов?!
Ответ #12 - 02. Сентября 2010 :: 13:35
Печать  
ReLock писал(а) 02. Сентября 2010 :: 13:28:
1) А почему тогда профайлер не показывает использование индексов в запросах, если их не описывать?
2) Т.е. ты предлагаешь не использовать хинты индексов в запросах?

Конкретно для твоего случая да.
хинты рекомендуется ставить в особых случаях когда либо из-за каких-то особенностей данных или каких то особенностей задач их нужно применять. Общая рекомендация MS использовать хинты в крайних случаях и когда Вы точно знаете что хотите.
А тут как Вы это можете знать когда у Вас из-за фильтров запрос может меняться очень в широком диапозоне.


Если есть проблемы что на правильных запросах sql медленно работает то обновите статистику и/или перестройте индексы.

PS вопрос 1 я не понял.
  
Наверх
 
IP записан
 
ReLock
Full Member
***
Отсутствует



Сообщений: 155
Местоположение: За компом
Зарегистрирован: 01. Февраля 2007
Пол: Мужской
Re: Программное обновление журнала документов?!
Ответ #13 - 02. Сентября 2010 :: 13:41
Печать  
Z1 писал(а) 02. Сентября 2010 :: 13:25:
если Вы напишете
глТекст = " and IDDOC = КонкректныйID";

то ваш подмененный запрос все равно будет использовать индекс
INDEX=ACDATETIME и просмотрит все документы в заданном интервале.

PS Если нет хинтов в запросе это не значит что индексы не используются а это значит что sql сервер сам подберет индекс.

Почему SQL Server Profiler не показывает использование индексов (если он их по-любому использует), если они не описаны в запросе?

P.S. А по сабжу рекомендации или, хотя бы, предположения какие-нибудь есть?
  
Наверх
 
IP записан
 
ReLock
Full Member
***
Отсутствует



Сообщений: 155
Местоположение: За компом
Зарегистрирован: 01. Февраля 2007
Пол: Мужской
Re: Программное обновление журнала документов?!
Ответ #14 - 02. Сентября 2010 :: 13:46
Печать  
Если только план выполнения покажет использование индексов...
http://www.comprog.ru/SQLQueriesLanguage/article_1390.htm

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