Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Обновление формы по "правильному" (число прочтений - 1177 )
es3000
God Member
*****
Отсутствует



Сообщений: 534
Зарегистрирован: 10. Июля 2006
Обновление формы по "правильному"
21. Марта 2019 :: 17:37
Печать  
Добрый день!

Начитался "умной" литературы.
Вот, например, книга Роберт Мартин "Чистая архитектура".

Там пишут, что форма ("представление" по терминологии этой книги) не должна зависеть от тех объектов, которые работают с реальными данными (по книге такие объекты называются "контроллеры" и "презентаторы").
Эти "контроллеры" и "презентаторы" должны подготовить для формы те данные, которые она должна показать.
А форма должна просто отобразать эти данные или обновить их, если они меняются.

Я попробовал так сделать.
Сделал отдельный класс, назовем его "Контроллер" который делает всю основную работу со справочниками и документами.
По ходу своей работы он формирует строку с текстом типа "Обработано ххх документов".

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

Как из "Контроллера" дать понять форме, что надо обновить данные?
И сказать какие данные обновить.
По идее надо вызвать какую-то специальную процедуру формы.
А как это сделать?

И вообще, что думаете насчет этой идеи в книге про "разделение" формы и логики обработки данных?

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


1C++ rocks!

Сообщений: 235
Местоположение: Калуга
Зарегистрирован: 06. Июня 2017
Пол: Мужской
Re: Обновление формы по "правильному"
Ответ #1 - 30. Марта 2019 :: 07:13
Печать  
Для начала ответь на два вопроса:
1. Что подвигло тебя заинтересоваться подобным вопросом?
2. И каким обоснованием автор убедил тебя потратить время на проработку его убеждения (приземлённо)?
  
Наверх
 
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 570
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: Обновление формы по "правильному"
Ответ #2 - 31. Марта 2019 :: 15:59
Печать  
А что тут такого необычного?

Вот такие отчеты у меня сделаны 

https://gyazo.com/08e42c4f3bb31cf5f1a91971f9e5abad

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

Т.е. 99% обработки в классах, а в форме минимальное описание действий, причем можно было бы и расширить - передавать описание действий перехвата в единственную/унифицированную  форму.

СКД не получилось, но такая цель и не ставилась...
  
Наверх
www  
IP записан
 
es3000
God Member
*****
Отсутствует



Сообщений: 534
Зарегистрирован: 10. Июля 2006
Re: Обновление формы по "правильному"
Ответ #3 - 09. Апреля 2019 :: 15:52
Печать  
recop писал(а) 30. Марта 2019 :: 07:13:
Для начала ответь на два вопроса:
1. Что подвигло тебя заинтересоваться подобным вопросом?


Подвигла необходимость внести изменения в существующий код.
А также необходимость развивать этот код дальше.

recop писал(а) 30. Марта 2019 :: 07:13:
2. И каким обоснованием автор убедил тебя потратить время на проработку его убеждения (приземлённо)?


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

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


1C++ rocks!

Сообщений: 235
Местоположение: Калуга
Зарегистрирован: 06. Июня 2017
Пол: Мужской
Re: Обновление формы по "правильному"
Ответ #4 - 09. Апреля 2019 :: 19:45
Печать  
es3000 писал(а) 09. Апреля 2019 :: 15:52:
... внести изменения в существующий код ... развивать этот код дальше.
... разделять представление и логику обработки данных.


Вот когда не было объектов и код писался в строку, вот именно так вопрос и ставился: разделить визуал от алгоритма выполнения задачи. ООП, а в частности 1С тоже, имеет подобное решение: форма + реквизиты это визуал, модуль - алгоритм, соответственно. В семерке, к сожалению, форму (визуал) возможно сопроводить одним модулем, в восьмерке (слышал) больше. Т.е. поставленный вопрос в восьмерке решен. Классы, это нечто другое, фрагмент кода, кирпич, многофункциональное универсальное решение. Область применения класса выходит за рамки разрабатываемого приложения. Т.е. упомянутая книга, в поставленном вопросе, является не более чем инструкция по приготовлению яичницы. Подмигивание
Кстати, для семерки есть прекрасный инструмент, который в единственном модуле позволяет разделить код по сворачиваемым тематическим блокам и даже раскрасить их в разные цвета. SciColorer называется. Улыбка
  
Наверх
 
IP записан
 
Arbuz
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 39
Зарегистрирован: 06. Февраля 2019
Re: Обновление формы по "правильному"
Ответ #5 - 15. Апреля 2019 :: 10:54
Печать  
Вообще, задачи производительности, требуемого объёма памяти, скорости разработки, читабельности, структурированности кода, всякие там MVP, MVC парадигмы, как правило, взаимно ортогональны. И раньше, когда компьютеры были большими, а иерархии фреймворков маленькими - это было весьма принципиально.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать