Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Кеши остатков в документах. Архитектура класса? (число прочтений - 2970 )
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2344
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Кеши остатков в документах. Архитектура класса?
23. Апреля 2008 :: 09:24
Печать  
Кеши остатков в документах. Какова нормальная архитектура класса?
Наверное все оперативники работали с такими задачками.
Решил для гемороя уменьшения перевести алгоритм на класс, ибо затюкало везде втыкать переменные и логика размазана...
Вот приблизительно интерфейс рождающегося класса:
Код
Выбрать все
//класс Документы.КешиОстатковРегистров = классДокументы_КешиОстатковРегистров@MD
класс Документы.КешиОстатковРегистров = ExtForms\классДокументы_КешиОстатковРегистров.ert
{											    
	void зарегистрироватьКэш( строка псИдРегистра, Неопределенный псЗависимости, Неопределенный псКонтекст);
	void пересчитатьКэши(Неопределенный псКонтекст);
	Неопределенный получитьРезультатКэша(строка псИдРегистра, Неопределенный псДляАтрибута, Неопределенный псКонтекст);
	void проверитьКорректностьВсехКэшей(Неопределенный псДокумент);
	void проверитьКорректностьКэша(строка псИдРегистра );
};
 


Что скажет ALL? Нормально?
  
Наверх
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2344
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Кеши остатков в документах. Архитектура класса
Ответ #1 - 23. Апреля 2008 :: 09:27
Печать  
Хотя помоему уже закосячил.
т.к. соотношение экземпляра класса к экземпляру документа 1-1.
т.е. фактически лишняя передача псКонтекст во всех функциях кроме одной, начальной.
  
Наверх
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2344
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Кеши остатков в документах. Архитектура класса
Ответ #2 - 23. Апреля 2008 :: 09:34
Печать  
Наверное лучше так:
Код
Выбрать все
класс Документы.КешиОстатковРегистров = ExtForms\классДокументы_КешиОстатковРегистров.ert
{
	void зарегистрироватьКэш( строка псИдРегистра, Неопределенный псЗависимости, Неопределенный псКонтекст);
	void пересчитатьКэши();
	Неопределенный получитьРезультатКэша(строка псИдРегистра, Неопределенный псДляАтрибута);
	void проверитьКорректностьВсехКэшей();
	void проверитьКорректностьКэша(строка псИдРегистра);
};

 

  
Наверх
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2344
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Кеши остатков в документах. Архитектура класса
Ответ #3 - 23. Апреля 2008 :: 09:38
Печать  
А лучше так:
Код
Выбрать все
класс Документы.КешиОстатковРегистров = ExtForms\классДокументы_КешиОстатковРегистров.ert
{
	void инициализация(Неопределенный псКонтекст);
	void зарегистрироватьКэш( строка псИдРегистра, Неопределенный псЗависимости = "");
	void пересчитатьКэши();
	Неопределенный получитьРезультатКэша(строка псИдРегистра, Неопределенный псДляАтрибута);
	void проверитьКорректностьВсехКэшей();
	void проверитьКорректностьКэша(строка псИдРегистра);
};
 


что скажете?
  
Наверх
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Кеши остатков в документах. Архитектура класса
Ответ #4 - 23. Апреля 2008 :: 09:46
Печать  
Нет, неясностей много.
Что такое зависимости? Что такое контекст? и т.д.
Лучше разделить объекты Кеш и менеджер/коллекцию кешей, далее прописать их  интерфейсы с ответом на вышеуказанные вопросы Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2344
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Кеши остатков в документах. Архитектура класса
Ответ #5 - 23. Апреля 2008 :: 09:56
Печать  
artbear писал(а) 23. Апреля 2008 :: 09:46:
Нет, неясностей много.
Что такое зависимости? Что такое контекст? и т.д.
Лучше разделить объекты Кеш и менеджер/коллекцию кешей, далее прописать их  интерфейсы с ответом на вышеуказанные вопросы Улыбка

Что такое контекст?: Контекст, это контекст формы документа, где собственно и работают эти кеши.
Что такое зависимости?: конкретный пример, есть упр/общ/фин остатки товаров. Следовательно в управленческом и общем документе необходимо показывать мользователю только управленческие остатки, а в финансовом только финансовые.
Т.е. при смене фирмы или типа учета необходимо сбросить кеш, запомнить новые зависимости и пересчитать кешь уже по новым данным.
Кэш же по по сути индексированная таблица структуры: Товар, Остаток, ОтформатирванныйОстаток
он характеризуется источником: регистром, алгоритмом получения и актуальностью зависимостей.
Просто не вижу смысла делить Кеш и менеджер/коллекцию кешей.
  
Наверх
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Кеши остатков в документах. Архитектура класса
Ответ #6 - 23. Апреля 2008 :: 10:17
Печать  
trdm писал(а) 23. Апреля 2008 :: 09:56:
Кэш же по по сути индексированная таблица структуры: Товар, Остаток, ОтформатирванныйОстаток
он характеризуется источником: регистром, алгоритмом получения и актуальностью зависимостей.
Просто не вижу смысла делить Кеш и менеджер/коллекцию кешей.

А теперь подумай и вспомни, каким образом определить необходимость создания классов - если есть отдельная объектная сущность, часто можно создать для нее класс и работать с ним Улыбка
А вообще это дело разработчика и удобства работы с классами.
И еще есть понятие "Инкапсуляция" Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2344
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Кеши остатков в документах. Архитектура класса
Ответ #7 - 23. Апреля 2008 :: 10:24
Печать  
"необходимость создания классов" определяется разработчиком.
Моя цель инкапсулировать несколько алгоритмов и произвести нормальный фасад для их использования.
Алгоритмы я просто параметризую зависимостями и "включаю" их в работу функцией "зарегистрироватьКэш".
ПС. Знаю, такие вещи никогда не были легкими для восприятия, конструирования и реализации.
  
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать