Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) У кого какие пути решения (автообновление данных) (число прочтений - 7326 )
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
У кого какие пути решения (автообновление данных)
03. Июля 2008 :: 10:26
Печать  
Лично для меня чтобы полностью отказаться от форм списков в 1С стоит только одна проблема, обновление данных в режиме коллективной работы пользователей.
По началу были и другие проблемы (например редактирование элементов в немодальном режиме), но все они были решены с более или менее красивым дизайном и не "тяжелым" по времени и нагруженности режиме. данные через прямой запрос, оперирование данными через ИТЗ и в принципе все бы ничего.
Но режим автообновление....

Вот кто как решает данный вопрос, если вообще пользуется подменой форм списков на ТП...

Пока я решил таким образом, просто в панель управления ТП добавил кнопку "Обновить"... (!!!) но пользователи не всегда ею пользуются, и хотят "он-лайн".

Была идея... в какой то таблице если я не ошибаюсь 1С хранит инфу о том что "что-то в данных изменилось"... однако сам журнал регистрации событий для меня полная тайна покрытая мраком... и нужен ли он мне?

В общем ищу путь копания и реализации... для меня это последняя проблема на пути отказа от 1С-овских списков.
  

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


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: У кого какие пути решения (автообновление данн
Ответ #1 - 03. Июля 2008 :: 10:41
Печать  
vandalsvq писал(а) 03. Июля 2008 :: 10:26:
Была идея... в какой то таблице если я не ошибаюсь 1С хранит инфу о том что "что-то в данных изменилось"... однако сам журнал регистрации событий для меня полная тайна покрытая мраком... и нужен ли он мне?

Оно хранится в таблице _1SUSERS (поле NETCHGCN). Раз в "Период опроса изменений Базы Данных (сек.)" 1С проверяет это значение и, если оно изменилось, обновляет формы списков.
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: У кого какие пути решения (автообновление данн
Ответ #2 - 03. Июля 2008 :: 10:52
Печать  
berezdetsky писал(а) 03. Июля 2008 :: 10:41:
vandalsvq писал(а) 03. Июля 2008 :: 10:26:
Была идея... в какой то таблице если я не ошибаюсь 1С хранит инфу о том что "что-то в данных изменилось"... однако сам журнал регистрации событий для меня полная тайна покрытая мраком... и нужен ли он мне?

Оно хранится в таблице _1SUSERS (поле NETCHGCN). Раз в "Период опроса изменений Базы Данных (сек.)" 1С проверяет это значение и, если оно изменилось, обновляет формы списков.


Во точно так и есть, вспомнил... именно так... но зачем мне обновлять все списки? Ведь изменится мог вообще документ который даже не отображен... есть мелкие нюансы что тот же док мог двинуть периодику и что-то поменять в справочнике который счас отображен... вот от них то никак не избавится.
Я просто к чему клоню... у меня счас справочник контрагенты - это практически полбазы данных по связанным данным, там на отдельных закладках поставщики подчиненных справочников, других справочников ч/з отборы, документов по фильтру... по сути всей работой поставщика можно рулить напрямую из его карточки. Не спрашивайте зачем... так хотелось Улыбка и сделалось... работает вроде 3*тьфу хорошо... но обновлять все данные из-за движения не связанного с контрагентами нет смысла.

Но полбеды уже решено, мы проверили таблицу, поняли что что-то изменилось... куда копнуть чтобы относительно быстро вычислить что конкретно произошло?  Улыбка
  

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


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: У кого какие пути решения (автообновление данн
Ответ #3 - 03. Июля 2008 :: 11:18
Печать  
vandalsvq писал(а) 03. Июля 2008 :: 10:52:
Но полбеды уже решено, мы проверили таблицу, поняли что что-то изменилось... куда копнуть чтобы относительно быстро вычислить что конкретно произошло?  Улыбка

Есть ещё поле VERSTAMP у документов и записей справочников..
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: У кого какие пути решения (автообновление данн
Ответ #4 - 03. Июля 2008 :: 11:35
Печать  
Вот собственно теперь ситуация слегка проясняется.

Теперь вот собственно продолжение.
Счас прогнал прямым запросом журнал, Верстамп перевел в число понял что он идет на увеличение в случае изменений. Причем как минимум на +2.
Счас надо добавить туда обработчик прочтения изменений в файле _1СЮзвери... пошел смотреть.
А вообще эта тема кому-нибудь кроме меня и тов. berezdetsky интересна?  Класс
  

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


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: У кого какие пути решения (автообновление данн
Ответ #5 - 03. Июля 2008 :: 11:51
Печать  
Нифига я не подружился с 1SUSERS
Запрос
Код
Выбрать все
	|SELECT
	|	ТаблПользователей.NETCHGCN AS Изменения
	|FROM
	|	__1S_USERS ТаблПользователей
 



Кто нить с ней дружить пробовал? У меня таблица с одной колонкой постоянной пустая.  Круглые глаза
  

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


___

Сообщений: 498
Местоположение: Тула
Зарегистрирован: 15. Февраля 2007
Пол: Мужской
Re: У кого какие пути решения (автообновление данн
Ответ #6 - 03. Июля 2008 :: 13:36
Печать  
vandalsvq писал(а) 03. Июля 2008 :: 11:51:
Нифига я не подружился с 1SUSERS
Запрос
Код
Выбрать все
	|SELECT
	|	ТаблПользователей.NETCHGCN AS Изменения
	|FROM
	|	__1S_USERS ТаблПользователей
 



Кто нить с ней дружить пробовал? У меня таблица с одной колонкой постоянной пустая.  Круглые глаза

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


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: У кого какие пути решения (автообновление данн
Ответ #7 - 08. Июля 2008 :: 08:54
Печать  
Chieftain писал(а) 03. Июля 2008 :: 13:36:
А ты попробуй в разделенном режиме посмотреть. В монопольном 1С-ка как-то по-другому мониторит изменения


Вопрос... а нафига в монопольном режиме мониторить изменения если пользователь эксклюзивно юзает базу... не надо этого делать, поставщик (КОП для которого я счас ищу пути выхода) уже следит за тем что делает пользователь. А что касается не монопольного юзанья... я подумал о том что нет необходимости пока в "он-лайн" обновлении... достаточно просто добавить кнопку "обновить" и пусть юзеры в нее тыкаются.

В общем за неимением простого решения на текущий момент проблема была признана "нереальной" для решения в текущий момент времени.
Но тем кто откликнулся большое спасибо.  Подмигивание
  

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


___

Сообщений: 498
Местоположение: Тула
Зарегистрирован: 15. Февраля 2007
Пол: Мужской
Re: У кого какие пути решения (автообновление данн
Ответ #8 - 08. Июля 2008 :: 10:44
Печать  
vandalsvq писал(а) 08. Июля 2008 :: 08:54:
Chieftain писал(а) 03. Июля 2008 :: 13:36:
А ты попробуй в разделенном режиме посмотреть. В монопольном 1С-ка как-то по-другому мониторит изменения


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

Это я к тому, что счетчик в 1SUSERS увеличивается только в разделенном режиме. 1С-ка, по всей видимости, раз в период опроса изменений смотрит и обновляет списки. В монопольном режиме проверка необходимости обновления списков делается как-то по-другому
  
Наверх
ICQ  
IP записан
 
nikolka
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 83
Зарегистрирован: 15. Января 2007
Re: У кого какие пути решения (автообновление данн
Ответ #9 - 09. Июля 2008 :: 15:30
Печать  
vandalsvq писал(а) 03. Июля 2008 :: 11:51:
Нифига я не подружился с 1SUSERS
Запрос
Код
Выбрать все
	|SELECT
	|	ТаблПользователей.NETCHGCN AS Изменения
	|FROM
	|	__1S_USERS ТаблПользователей
 



Кто нить с ней дружить пробовал? У меня таблица с одной колонкой постоянной пустая.  Круглые глаза


Возможно ошибка в  запросе ?
У меня
SELECT   ТаблПользователей.NETCHGCN  FROM _1SUSERS ТаблПользователей
Дает ответ число.
С получением этого числа в 1С также проблем не возникло.
  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: У кого какие пути решения (автообновление данн
Ответ #10 - 10. Июля 2008 :: 04:20
Печать  
Неее... Chieftain это я понял и попробовал... но тут другая "задача" возникает.

Дело в том что работать "аля 1С" я считаю нецелесообразным... т.е. проверять на наличие изменений, потом обновлять все подряд что открыто...
Смысла нет делать обновление тех объектов которые не изменились, а следовательно хорошо было бы получить информацию "кто изменился" (информация нынче дорого стоит)
Насколько я знаю ЖурналРегистрации (а я его нихрена не знаю) инфу он хранит не в таблице базы данных 1С а каким то своим способом.
Допустим я запомню время последнего просмотра, и значение последнего просмотра (пусть даже каждый полсекунды проверять буду), получив изменение значения я получу временной промежуток в который они произошли, вот как мне получить ВИД объекта который изменился, чтобы проверить имеет ли смысл его обновлять в рамках работающего поставщика?

Вот эта задача пока не решена, копаться времени нет, ровно как и придумывать варианты... на текущий момент есть только желание, а реального времени для поиска решения нет.  Нерешительный
  

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


___

Сообщений: 498
Местоположение: Тула
Зарегистрирован: 15. Февраля 2007
Пол: Мужской
Re: У кого какие пути решения (автообновление данн
Ответ #11 - 10. Июля 2008 :: 05:36
Печать  
vandalsvq писал(а) 10. Июля 2008 :: 04:20:
Неее... Chieftain это я понял и попробовал... но тут другая "задача" возникает.

Дело в том что работать "аля 1С" я считаю нецелесообразным... т.е. проверять на наличие изменений, потом обновлять все подряд что открыто...
Смысла нет делать обновление тех объектов которые не изменились, а следовательно хорошо было бы получить информацию "кто изменился" (информация нынче дорого стоит)
Насколько я знаю ЖурналРегистрации (а я его нихрена не знаю) инфу он хранит не в таблице базы данных 1С а каким то своим способом.
Допустим я запомню время последнего просмотра, и значение последнего просмотра (пусть даже каждый полсекунды проверять буду), получив изменение значения я получу временной промежуток в который они произошли, вот как мне получить ВИД объекта который изменился, чтобы проверить имеет ли смысл его обновлять в рамках работающего поставщика?

Вот эта задача пока не решена, копаться времени нет, ровно как и придумывать варианты... на текущий момент есть только желание, а реального времени для поиска решения нет.  Нерешительный

Ну так ты же сам обрисовал методику проверки через VERSTAMP. Для любого списка ты наверняка должен знать - изменение каких таблиц влияют на необходимость обновления списка. Может тогда просто хранить итог по этому полю для необходимых таблиц и при изменении обновлять список.
  
Наверх
ICQ  
IP записан
 
orefkov
1c++ developer
1c++ moderator
Отсутствует


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: У кого какие пути решения (автообновление данн
Ответ #12 - 10. Июля 2008 :: 06:34
Печать  
А почему бы
1. Всем ТП установить ТаймаутОбновления
2. Все активные ТП запоминать в глобальном списке, при записи/перепроведении документов/справочников/и тп проходить по списку, делать ОбновитьСтроки
Или иметь несколько списков - например, тпДокПН, тпДокРН.
ТП которое хочет обновлятся например при изменении ДокПН регистрируется в списке тпДокПН
ТП которое хочет обновлятся например при изменении ДокРН регистрируется в списке тпДокРН
ТП которое хочет обновлятся при изменении ДокПН и ДокРН регистрируется в обоих списках.
ДокПН при записи/проведении обновляет все ТП, лежащие в списке тпДокПН
ДокРН при записи/проведении обновляет все ТП, лежащие в списке тпДокРН

Изменения, внесенные этим юзером - будут отображаться сразу, внесенные другими - по таймауту.

Муторно конечно, всю конфу шерстить. Зато уж точно будешь знать, когда надо ТП обновить.
  
Наверх
 
IP записан
 
orefkov
1c++ developer
1c++ moderator
Отсутствует


I Love YaBB 2!

Сообщений: 896
Зарегистрирован: 20. Мая 2006
Re: У кого какие пути решения (автообновление данн
Ответ #13 - 10. Июля 2008 :: 06:39
Печать  
Имхо затраты на выяснение того, что именно обновилось, перевесят затраты на обновление открытых ТП.
Ну сколько их там открыто будет? Ну 10, ну 20. Вряд ли больше.
  
Наверх
 
IP записан
 
Chieftain
Senior Member
****
Отсутствует


___

Сообщений: 498
Местоположение: Тула
Зарегистрирован: 15. Февраля 2007
Пол: Мужской
Re: У кого какие пути решения (автообновление данн
Ответ #14 - 10. Июля 2008 :: 06:42
Печать  
orefkov писал(а) 10. Июля 2008 :: 06:34:
А почему бы
1. Всем ТП установить ТаймаутОбновления
2. Все активные ТП запоминать в глобальном списке, при записи/перепроведении документов/справочников/и тп проходить по списку, делать ОбновитьСтроки
Или иметь несколько списков - например, тпДокПН, тпДокРН.
ТП которое хочет обновлятся например при изменении ДокПН регистрируется в списке тпДокПН
ТП которое хочет обновлятся например при изменении ДокРН регистрируется в списке тпДокРН
ТП которое хочет обновлятся при изменении ДокПН и ДокРН регистрируется в обоих списках.
ДокПН при записи/проведении обновляет все ТП, лежащие в списке тпДокПН
ДокРН при записи/проведении обновляет все ТП, лежащие в списке тпДокРН

Муторно конечно, всю конфу шерстить. Зато уж точно будешь знать, когда надо ТП обновить.

Тогда уж лучше в справочник записывать варианты ТП, в доках ставить флаг изменения и при обновлении по нужному элементу смотреть, тогда в многопользовательском режиме тоже работать будет.
Но это все при возможности ковырять конфу.
Если конфу не трогать - то вариант с VERSTAMP вполне приемлим
  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать