Переключение на Главную Страницу Страницы: [1] 2 3  ОтправитьПечать
Очень популярная тема (более 25 ответов) ТП+Запрос как альтернатива Журналам 1с (число прочтений - 10746 )
pavlo
1c++ donor
1c++ power user
Отсутствует



Сообщений: 712
Местоположение: г. Новосибирск
Зарегистрирован: 10. Ноября 2006
Пол: Мужской
ТП+Запрос как альтернатива Журналам 1с
01. Декабря 2009 :: 05:33
Печать  
народ кто нить реально без проблем переписывал какой нить журнал на ТП+Запрос или еще что?
смысл вот в чем, есть журнал переписанный в ТП+Запрос, еще там есть поле так сказать расчетное с формулой как у обычных журналов (данные этой колонки получаю параметаризированым запросом) отсюда 2 не хороших и не приятных момента:
1. при бегании мышкой или стрелкой клавы по списку документов в ТП при переходах от видимой области к следующей на секунды 2 тормозит и естественно раз юзер жал на стрелку клавы в итоге резко перелетает на пол страницы вниз.
2. более серьезный на мой взгляд момент, когда документ человек проводит родной журнал тутже засекает его статус и выставляет значек проведение или удаления и т.д. в ТП же все работает ровно так как журнал у соседнего юзера, все появляется только после периода обновления ТП, что зачастую юзера вводит в ступор при быстрой работе Печаль

Есть у кого какие идеи на этот счет? Озадачен
  

1с++     3.2.4.1
Formex  2.0.5.99b
Наверх
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: ТП+Запрос как альтернатива Журналам 1с
Ответ #1 - 01. Декабря 2009 :: 06:02
Печать  
Я не то чтобы переписывал. Просто один раз комплекс классов разработал и с ними и вожусь. Улыбка
Хотелось бы видеть что в "расчетной" колонке у тебя отображается. В смысле запрос какой.
Что касается периода обновления и т.д. можно конечно реализовать аналогично "штатному" 1С-овскому механизму, т.е. отслеживать таблицу 1susers (вроде бы, точно не помню).
Я озадачивался данной проблемой как то, но собственно забил, ибо период обновления можно поставить достаточно небольшой чтобы были и пользователю "сносно" и системе "приятно".
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
novichek
Экс-Участник


Re: ТП+Запрос как альтернатива Журналам 1с
Ответ #2 - 01. Декабря 2009 :: 06:08
Печать  
можно подумать над тем, как журналу сообщить что ему нужно обновиться "внеочередной" раз. С перехватчиком попробовать "покрутить" или даже через генерацию и обработку внешнего события.

А с вычисляемой колонкой, тут целиком и полностью запрос виноват. Либо его текст нуждается в оптимизации, либо структуры данных надо подгонять для более легкого получения интересующего результата.
  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: ТП+Запрос как альтернатива Журналам 1с
Ответ #3 - 01. Декабря 2009 :: 06:13
Печать  
И все таки я не уверен что это прямо уж такая важная задача, сообщать журналу об изменения в программе. Стандартно в 1С какой период опроса стоит? 10 секунд? И почему бы просто не дать возможность пользователю самостоятельно рулить периодом автообновления? Ну конечно не ниже допустимого значения (с точки зрения нагрузки). Сам настроит как ему "приятно" и все тут.
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
pavlo
1c++ donor
1c++ power user
Отсутствует



Сообщений: 712
Местоположение: г. Новосибирск
Зарегистрирован: 10. Ноября 2006
Пол: Мужской
Re: ТП+Запрос как альтернатива Журналам 1с
Ответ #4 - 01. Декабря 2009 :: 06:15
Печать  
vandalsvq писал(а) 01. Декабря 2009 :: 06:02:
Я не то чтобы переписывал. Просто один раз комплекс классов разработал и с ними и вожусь. Улыбка
Хотелось бы видеть что в "расчетной" колонке у тебя отображается. В смысле запрос какой.
Что касается периода обновления и т.д. можно конечно реализовать аналогично "штатному" 1С-овскому механизму, т.е. отслеживать таблицу 1susers (вроде бы, точно не помню).
Я озадачивался данной проблемой как то, но собственно забил, ибо период обновления можно поставить достаточно небольшой чтобы были и пользователю "сносно" и системе "приятно".



Как то так и оно вызывается в ПривыводеСтроки():
Код
Выбрать все
Процедура ПодготовитьПарамЗапрос()

	рс2=СоздатьОбъект("ODBCRecordSet");
	рс2.ДобПараметр(1,14,8,0);
	рс2.ДобПараметр(1,14,4,0);
	рс2.ДобПараметр(1,14,9,0);
	рс2.ДобПараметр(1,14,9,0);
	ТекстЗапроса="-- Получить Сумму Кассового отчета по старой схеме
		|select top 1
		|	case when (sum($КассаСтроки.Сертификат)=0) then cast(sum($КассаСтроки.Выручка)-sum($КассаСтроки.СуммаВозврата) as char) else '*'+cast(sum($КассаСтроки.Выручка)-sum($КассаСтроки.СуммаВозврата) as char) end as КассовыйОтчет
		|from _1sjourn as jur (nolock)
		|	left join $ДокументСтроки.КассовыйОтчет as КассаСтроки (nolock) on jur.iddoc=КассаСтроки.iddoc
		|where (jur.iddocdef=$ВидДокумента.КассовыйОтчет)
		|	and (left(jur.date_time_iddoc,8)=?)
		|	and (substring(jur.$ОбщийРеквизит.ОтборДока,2,4)=?)
		|	and (jur.$ОбщийРеквизит.Фирма=?)
		|	and ($КассаСтроки.Секция=?)
		|	and (jur.closed &1=1)
		|";
	рс2.Подготовить(ТекстЗапроса);

КонецПроцедуры // ПодготовитьПарамЗапрос
 

  

1с++     3.2.4.1
Formex  2.0.5.99b
Наверх
IP записан
 
pavlo
1c++ donor
1c++ power user
Отсутствует



Сообщений: 712
Местоположение: г. Новосибирск
Зарегистрирован: 10. Ноября 2006
Пол: Мужской
Re: ТП+Запрос как альтернатива Журналам 1с
Ответ #5 - 01. Декабря 2009 :: 06:17
Печать  
Цитата:
можно подумать над тем, как журналу сообщить что ему нужно обновиться "внеочередной" раз. С перехватчиком попробовать "покрутить" или даже через генерацию и обработку внешнего события.

А с вычисляемой колонкой, тут целиком и полностью запрос виноват. Либо его текст нуждается в оптимизации, либо структуры данных надо подгонять для более легкого получения интересующего результата.


ну получается что если до срочно как то обновлять (не понятно пока как) то штатный никто не отменяет и в итоге может накладываться обновить и тут же штатный ТП обновить и юзер изведется ждать Печаль
  

1с++     3.2.4.1
Formex  2.0.5.99b
Наверх
IP записан
 
pavlo
1c++ donor
1c++ power user
Отсутствует



Сообщений: 712
Местоположение: г. Новосибирск
Зарегистрирован: 10. Ноября 2006
Пол: Мужской
Re: ТП+Запрос как альтернатива Журналам 1с
Ответ #6 - 01. Декабря 2009 :: 06:19
Печать  
vandalsvq писал(а) 01. Декабря 2009 :: 06:13:
И все таки я не уверен что это прямо уж такая важная задача, сообщать журналу об изменения в программе. Стандартно в 1С какой период опроса стоит? 10 секунд? И почему бы просто не дать возможность пользователю самостоятельно рулить периодом автообновления? Ну конечно не ниже допустимого значения (с точки зрения нагрузки). Сам настроит как ему "приятно" и все тут.


Как раз так и сделано, он может сам рулить но не ниже 10 сек обновления, но народ быстрее работает и после проведения документа не видя что он провелся заходят и снова тыкают и так очень долго, и начинают звонить мол тот журнал был удобнее хоть и открывался сначала долго, а этот тормознутый (хотя оно просто по времени обновляется) но для юзера это тормоза типа Печаль
  

1с++     3.2.4.1
Formex  2.0.5.99b
Наверх
IP записан
 
novichek
Экс-Участник


Re: ТП+Запрос как альтернатива Журналам 1с
Ответ #7 - 01. Декабря 2009 :: 06:24
Печать  
pavlo писал(а) 01. Декабря 2009 :: 06:17:
Цитата:
можно подумать над тем, как журналу сообщить что ему нужно обновиться "внеочередной" раз. С перехватчиком попробовать "покрутить" или даже через генерацию и обработку внешнего события.

А с вычисляемой колонкой, тут целиком и полностью запрос виноват. Либо его текст нуждается в оптимизации, либо структуры данных надо подгонять для более легкого получения интересующего результата.


ну получается что если до срочно как то обновлять (не понятно пока как) то штатный никто не отменяет и в итоге может накладываться обновить и тут же штатный ТП обновить и юзер изведется ждать Печаль


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

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


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: ТП+Запрос как альтернатива Журналам 1с
Ответ #8 - 01. Декабря 2009 :: 06:25
Печать  
Запрос конечно тоже "не ахти". Условие по реквизиту многострочной части не очень "Приятно", поскольку никакого индекса там нет, и не будет если конечно ты не менял механизм 1С.
Как вариант я бы рассмотрел возможность выполнения запроса во временную таблицу с присоединением ее к журналу документов, с кнопкой на форме "пересчитать". Поскольку с точки зрения производительности это будет точно лучше, хотя возвращаемся к нашим "старым" баранам (п.1).
Думать надо... время поджимает Печаль
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
pavlo
1c++ donor
1c++ power user
Отсутствует



Сообщений: 712
Местоположение: г. Новосибирск
Зарегистрирован: 10. Ноября 2006
Пол: Мужской
Re: ТП+Запрос как альтернатива Журналам 1с
Ответ #9 - 01. Декабря 2009 :: 06:33
Печать  
Цитата:
Во-первых, по хорошему надо и без этого вводить какой-нибудь флаг, что сейчас идет обновление, чтобы оно, при достаточно малом интервале самое себе не мешало.

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


На счет того для чего время обновления журналов стоит в 1с я в курсе, отсюда то и идея обновлять при проведении.
на счет запроса при открытии скорость запроса зависит от интервала журнала, за месяц секунд 3-5 подождать нужно (родной не сильно лучше а порой и медленее работал).
А вот обновление в принципе быстро происходит, особенно если шариться в пределах уже выведенного, похоже расчет "формул" в строке проблема и журналов 1с и ТП, но как улучшить еще не понятно, хотя преимуществ раскрашивания и всяких ньансов стало по любому больше чем в родном!
  

1с++     3.2.4.1
Formex  2.0.5.99b
Наверх
IP записан
 
pavlo
1c++ donor
1c++ power user
Отсутствует



Сообщений: 712
Местоположение: г. Новосибирск
Зарегистрирован: 10. Ноября 2006
Пол: Мужской
Re: ТП+Запрос как альтернатива Журналам 1с
Ответ #10 - 01. Декабря 2009 :: 06:35
Печать  
vandalsvq писал(а) 01. Декабря 2009 :: 06:25:
Запрос конечно тоже "не ахти". Условие по реквизиту многострочной части не очень "Приятно", поскольку никакого индекса там нет, и не будет если конечно ты не менял механизм 1С.
Как вариант я бы рассмотрел возможность выполнения запроса во временную таблицу с присоединением ее к журналу документов, с кнопкой на форме "пересчитать". Поскольку с точки зрения производительности это будет точно лучше, хотя возвращаемся к нашим "старым" баранам (п.1).
Думать надо... время поджимает Печаль


Понимаешь с кнопкой точно не айс и не проканает у нас, а уйти от строк тоже не получится так как все как раз там относительно этих строк, тоесть есть секции по которым заносятся ОтчетыРО, а КассовыйОтчет у нас один и там просто в каждой строчке своя секция по деньгам Печаль
  

1с++     3.2.4.1
Formex  2.0.5.99b
Наверх
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: ТП+Запрос как альтернатива Журналам 1с
Ответ #11 - 01. Декабря 2009 :: 06:39
Печать  
А дополнительную структуру организовать, которая поможет тебе "бороться" с твоими баранами можно? Ну скажем уже куда нибудь "складывать" расчетные значения. Потом соединяться с этим "чем нибудь" по какому нибудь одному полю вроде iddoc. Конечно прийдется в проведение засовывать, но все же. Тем более при "правильной" организации подобной структуры можно там много что полезного хранить.
  

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


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: ТП+Запрос как альтернатива Журналам 1с
Ответ #12 - 01. Декабря 2009 :: 07:01
Печать  
pavlo писал(а) 01. Декабря 2009 :: 06:15:
vandalsvq писал(а) 01. Декабря 2009 :: 06:02:
Я не то чтобы переписывал. Просто один раз комплекс классов разработал и с ними и вожусь. Улыбка
Хотелось бы видеть что в "расчетной" колонке у тебя отображается. В смысле запрос какой.
Что касается периода обновления и т.д. можно конечно реализовать аналогично "штатному" 1С-овскому механизму, т.е. отслеживать таблицу 1susers (вроде бы, точно не помню).
Я озадачивался данной проблемой как то, но собственно забил, ибо период обновления можно поставить достаточно небольшой чтобы были и пользователю "сносно" и системе "приятно".



Как то так и оно вызывается в ПривыводеСтроки():
Код
Выбрать все
Процедура ПодготовитьПарамЗапрос()

	рс2=СоздатьОбъект("ODBCRecordSet");
	рс2.ДобПараметр(1,14,8,0);
	рс2.ДобПараметр(1,14,4,0);
	рс2.ДобПараметр(1,14,9,0);
	рс2.ДобПараметр(1,14,9,0);
	ТекстЗапроса="-- Получить Сумму Кассового отчета по старой схеме
		|select top 1
		|	case when (sum($КассаСтроки.Сертификат)=0) then cast(sum($КассаСтроки.Выручка)-sum($КассаСтроки.СуммаВозврата) as char) else '*'+cast(sum($КассаСтроки.Выручка)-sum($КассаСтроки.СуммаВозврата) as char) end as КассовыйОтчет
		|from _1sjourn as jur (nolock)
		|	left join $ДокументСтроки.КассовыйОтчет as КассаСтроки (nolock) on jur.iddoc=КассаСтроки.iddoc
		|where (jur.iddocdef=$ВидДокумента.КассовыйОтчет)
		|	and (left(jur.date_time_iddoc,8)=?)
		|	and (substring(jur.$ОбщийРеквизит.ОтборДока,2,4)=?)
		|	and (jur.$ОбщийРеквизит.Фирма=?)
		|	and ($КассаСтроки.Секция=?)
		|	and (jur.closed &1=1)
		|";
	рс2.Подготовить(ТекстЗапроса);

КонецПроцедуры // ПодготовитьПарамЗапрос
 



запрос очень "плохой" Если переписать запрос будет работать
гораздо быстрее.
для начала поставь нормальное условие по дате без left
  
Наверх
 
IP записан
 
pavlo
1c++ donor
1c++ power user
Отсутствует



Сообщений: 712
Местоположение: г. Новосибирск
Зарегистрирован: 10. Ноября 2006
Пол: Мужской
Re: ТП+Запрос как альтернатива Журналам 1с
Ответ #13 - 01. Декабря 2009 :: 07:05
Печать  
нормальное это какое? у меня только дата документа в формате 1с есть и все, я ее переделываю в формат скуля и все.
  

1с++     3.2.4.1
Formex  2.0.5.99b
Наверх
IP записан
 
pavlo
1c++ donor
1c++ power user
Отсутствует



Сообщений: 712
Местоположение: г. Новосибирск
Зарегистрирован: 10. Ноября 2006
Пол: Мужской
Re: ТП+Запрос как альтернатива Журналам 1с
Ответ #14 - 01. Декабря 2009 :: 07:08
Печать  
vandalsvq писал(а) 01. Декабря 2009 :: 06:39:
А дополнительную структуру организовать, которая поможет тебе "бороться" с твоими баранами можно? Ну скажем уже куда нибудь "складывать" расчетные значения. Потом соединяться с этим "чем нибудь" по какому нибудь одному полю вроде iddoc. Конечно прийдется в проведение засовывать, но все же. Тем более при "правильной" организации подобной структуры можно там много что полезного хранить.


Ради одного журнала мутить такое не хотелось бы Печаль
  

1с++     3.2.4.1
Formex  2.0.5.99b
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 3 
ОтправитьПечать