Переключение на Главную Страницу Страницы: [1]  ОтправитьПечать
Горячая тема (более 10 ответов) Потайной метод ОчиститьКлассыРепозитария (число прочтений - 8700 )
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Потайной метод ОчиститьКлассыРепозитария
30. Июля 2006 :: 17:12
Печать  
Изучая код компоненты нашел потайной метод MetaInfoClasses::ОчиститьКлассыРепозитария, который сбрасывает кэш откомпилированных модулей классов. Конечно, как обнаружилось позже, этот метод описан в хистори и в Readme.doc. Но только кто их читает? Читают ALS, в лучшем случае CHM.

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



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Потайной метод ОчиститьКлассыРепозитария
Ответ #1 - 30. Июля 2006 :: 21:11
Печать  
Гмм... Я правильно понимаю, что выполнив этод метод при нажатой кнопке Оптимизация 1С заново откомпилирует класс?

Т.е. послал по сетке комманду перечитать класс - и работает уже с исправленным кодом?
  
Наверх
 
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Потайной метод ОчиститьКлассыРепозитария
Ответ #2 - 31. Июля 2006 :: 09:18
Печать  
sedmin писал(а) 30. Июля 2006 :: 17:12:
И даже авторы ничего не смогли сказать про этот метод, когда я предлагал сделать сброс кэша модулей при отключении флага "Оптимизация". Думаю, что надо этот метод задокументировать.

У меня есть большое подозрение, что данный метод был создан по мотивам именно твоих предложений.
  
Наверх
www  
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Потайной метод ОчиститьКлассыРепозитария
Ответ #3 - 31. Июля 2006 :: 14:46
Печать  
Нет. Я проверил - метод добавлен давным давно, еще в версии 1.2.0.1.

Arta
Да, именно это и делает метод.
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Потайной метод ОчиститьКлассыРепозитария
Ответ #4 - 31. Июля 2006 :: 17:26
Печать  
Цитата:
MetaInfoClasses::ОчиститьКлассыРепозитария

Зашибись название. Х. поймешь, что такой метод делать должен.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Потайной метод ОчиститьКлассыРепозитария
Ответ #5 - 31. Июля 2006 :: 19:28
Печать  
kms писал(а) 31. Июля 2006 :: 17:26:
Зашибись название. Х. поймешь, что такой метод делать должен.



Это точно Улыбка
  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Потайной метод ОчиститьКлассыРепозитария
Ответ #6 - 10. Августа 2006 :: 14:11
Печать  
Метод то есть, а вот работает он не так как хотелось бы...

Предположим человек сидит в обработке, в которой создан класс. В этот момент я в константе говорю сбросить кэш. По обработке ожидания перечитывается значение константы и выполняется ОчиститьКлассыРепозитария(). Если у клиент включена оптимизация, то 1С сворачивается в коврик Печаль

  
Наверх
 
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Потайной метод ОчиститьКлассыРепозитария
Ответ #7 - 10. Августа 2006 :: 19:23
Печать  
Вот как раз сейчас собирался написать тесты для этого метода.

А будут тесты - будет и надежда на то, что все будет работать. Подмигивание (Если, конечно, мне дадут доступ Улыбка )
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Потайной метод ОчиститьКлассыРепозитария
Ответ #8 - 10. Августа 2006 :: 19:56
Печать  
sedmin
Ты, конечно, пиши, пиши...

Только мне предложение, которое в свое время высказал DmitrO, представляется наиболее правильным.
Т.е. не метод сброса, а декларатор класса.

Типа
Код
Выбрать все
класс NOCACHE Общие.Форма.Привязка=Общие.Форма.Привязка.ert : РасширениеФормы
{
}

или

NOCACHE класс Общие.Форма.Привязка=Общие.Форма.Привязка.ert : РасширениеФормы
{
}
 



Кроме того, могут быть и другие деклараторы, надо это предусмотреть.
Может, ты в эту сторону посмотришь?
  

De quelle planète es-tu?
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Потайной метод ОчиститьКлассыРепозитария
Ответ #9 - 10. Августа 2006 :: 19:59
Печать  
Что должно произойти если запустить ОчиститьКлассыРепозитария в методе какого-либо класса? Я например выношу глоб. обработку ожидания и ПриНачалеРаботыСистемы в классы. Из этой самой обработки ожидания и хотел сбрасывать кэш.
1. Все навернется
2. Кэш сбросится, кроме текущего, уже созданного класса.
  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Потайной метод ОчиститьКлассыРепозитария
Ответ #10 - 10. Августа 2006 :: 20:02
Печать  
kms писал(а) 10. Августа 2006 :: 19:56:
Т.е. не метод сброса, а декларатор класса.


Иными словами этот класс не будет кэшироваться вообще?

Я сам например преследую цель обновить класс без перезагрузки 1С у клиентов. Т.е. поправил - отправил сигнал о сбросе кэша - на стороне клиента класс обновился при следующем создании.
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Потайной метод ОчиститьКлассыРепозитария
Ответ #11 - 10. Августа 2006 :: 20:37
Печать  
Arta писал(а) 10. Августа 2006 :: 20:02:
Иными словами этот класс не будет кэшироваться вообще?

Я сам например преследую цель обновить класс без перезагрузки 1С у клиентов. Т.е. поправил - отправил сигнал о сбросе кэша - на стороне клиента класс обновился при следующем создании.

Мне не нравится такая реализация.

Опять предлагаю декларатор
Код
Выбрать все
класс AUTOCACHE Общие.Форма.Привязка=Общие.Форма.Привязка.ert : РасширениеФормы
{
}
 


Смысл.
При первом создании класса происходит чтение файла и его хеширование приличной хеш-функцией; MD5 сойдет.

При повторном создании происходит чтение файла, хеширование. Но рекомпиляция происходит только для измененных файлов.
Думаю, потери будут минимальны.

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

Arta
А че у тебя за технология работы такая, что приходится налету менять классы?
Непрерывное производство?

Вопрос совершенно серьезный и без подколов.
Я просто по-другому работаю - вся отладка идет локально, а фиксация изменений - максимум пару раз за день.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Потайной метод ОчиститьКлассыРепозитария
Ответ #12 - 10. Августа 2006 :: 20:49
Печать  
kms писал(а) 10. Августа 2006 :: 20:37:
Arta
А че у тебя за технология работы такая, что приходится налету менять классы?
Непрерывное производство?

Вопрос совершенно серьезный и без подколов.
Я просто по-другому работаю - вся отладка идет локально, а фиксация изменений - максимум пару раз за день.



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

Кроме того много взаимодействия из 1С с разными устройствами, от мобильных телефонов до различного тестового оборудования.

P.S. Не судите строго, я не программист в фирме, а директор  Подмигивание
Программист занимается как раз ежедневной рутиной Улыбка
  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Потайной метод ОчиститьКлассыРепозитария
Ответ #13 - 10. Августа 2006 :: 20:53
Печать  
kms писал(а) 10. Августа 2006 :: 20:37:
При повторном создании происходит чтение файла, хеширование. Но рекомпиляция происходит только для измененных файлов.
Думаю, потери будут минимальны.

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

Перечитвать файл - думаю потери будут значительны при массовом создании объектов.
А вот по времени файла... это менее надежный вариант чем с хешем, но зато в разы быстрее. На вид идея хорошая...
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Потайной метод ОчиститьКлассыРепозитария
Ответ #14 - 10. Августа 2006 :: 21:08
Печать  
Arta писал(а) 10. Августа 2006 :: 20:49:
P.S. Не судите строго, я не программист в фирме, а директор  Подмигивание

Советский суд - самый гуманный суд в мире Язык
Шутка.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Потайной метод ОчиститьКлассыРепозитария
Ответ #15 - 11. Августа 2006 :: 13:34
Печать  
Может не надо деклараторов? Я думаю, что достаточно всем классам сделать AUTOCACHE.
  
Наверх
 
IP записан
 
acsent
1c++ power user
Отсутствует


acsent.nm.ru

Сообщений: 19
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Потайной метод ОчиститьКлассыРепозитария
Ответ #16 - 11. Августа 2006 :: 13:59
Печать  
Хороший пример, но для обычного кода -  TurmoMD
  
Наверх
wwwICQ  
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Потайной метод ОчиститьКлассыРепозитария
Ответ #17 - 11. Августа 2006 :: 18:09
Печать  
acsent писал(а) 11. Августа 2006 :: 13:59:
Хороший пример, но для обычного кода -  TurmoMD

А разве TurboMD с модулями классов не работает?  Нерешительный
  
Наверх
www  
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Потайной метод ОчиститьКлассыРепозитария
Ответ #18 - 11. Августа 2006 :: 18:27
Печать  
sedmin писал(а) 11. Августа 2006 :: 13:34:
Может не надо деклараторов? Я думаю, что достаточно всем классам сделать AUTOCACHE.

Тоже вариант.

acsent писал(а) 11. Августа 2006 :: 13:59:
Хороший пример, но для обычного кода -  TurmoMD

А у меня нема исходников для  TurboMD. Какой там принцип обновления, не подскажешь?
  

De quelle planète es-tu?
Наверх
 
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Потайной метод ОчиститьКлассыРепозитария
Ответ #19 - 11. Августа 2006 :: 19:47
Печать  
Написал тесты для компиляции модулей в разных режимах оптимизации. Обнаружил, что модули компилируются не всегда правильно - возникают ошибки типа:

Цитата:
Внимание! Инициализация класса: ИзменчивыйКласс закончилась не удачно!


Исправления исходников компоненты выслал Федору.
  
Наверх
 
IP записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: Потайной метод ОчиститьКлассыРепозитария
Ответ #20 - 14. Августа 2006 :: 13:31
Печать  
Что-то Федора то ли нет, то ли он почту не читает.

Кто может принять от меня патчи в код компоненты?
  
Наверх
 
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Потайной метод ОчиститьКлассыРепозитария
Ответ #21 - 14. Августа 2006 :: 14:29
Печать  
Да на месте я, и почту читаю. Прислал патчи в ночь между пятницей и субботой. А в понедельник уже к ответу призываешь. Смилуйся, государыня рыбка!
  
Наверх
www  
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Потайной метод ОчиститьКлассыРепозитария
Ответ #22 - 14. Августа 2006 :: 16:00
Печать  
fez писал(а) 14. Августа 2006 :: 14:29:
Да на месте я, и почту читаю. Прислал патчи в ночь между пятницей и субботой. А в понедельник уже к ответу призываешь. Смилуйся, государыня рыбка!

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

И завтра тоже не сможет Смех
« Последняя редакция: 14. Августа 2006 :: 17:51 - kms »  

De quelle planète es-tu?
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 
ОтправитьПечать