Переключение на Главную Страницу Страницы: 1 ... 4 5 [6] 7 8  ОтправитьПечать
Очень популярная тема (более 25 ответов) wic: Python + PyQt4 (число прочтений - 57322 )
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #75 - 28. Февраля 2011 :: 17:59
Печать  
VSozansky писал(а) 28. Февраля 2011 :: 17:32:
Вопрос остается актуальным! Посмотрите файл во вложении и предложите как будем выводить в дереве метаданные и как редактировать.
Интересует:
1. какой библиотекой лучше пользоваться.
2. как быстро отображать в дереве
3. как выводить только нужные элементы из файла метаданных


Извини, нет времени этим заниматься.
Комментарии:
Не люблю XML. Не работал с ним особенно.
Мне нравится хранить дерево конфигурации в фйловой системе. Со временем может упаковывать это дерево в ЗИП файл. Но это когда уже все будет более-менее работать.

Надо сделать загрузку конфигурации при загрузку системы (сейчас она загружается при запуске конфигуратора). Иметь глобальную ссылку на корень дерева конфигурации (такую же как хранится в классе CfgTreeModel в файле cfg_tree.py).

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

Копаться в чужом коде - сложная штука. Удачи!
  
Наверх
 
IP записан
 
Boris_1c
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 129
Зарегистрирован: 29. Января 2007
Re: wic: Python + PyQt4
Ответ #76 - 20. Апреля 2011 :: 08:40
Печать  
Начал изучать ваши исходники, в питоне новичёк..
Подскажите нормальный редактор?
  
Наверх
 
IP записан
 
villager
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 101
Зарегистрирован: 21. Октября 2009
Re: wic: Python + PyQt4
Ответ #77 - 20. Апреля 2011 :: 17:00
Печать  
eric4
  
Наверх
 
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #78 - 20. Апреля 2011 :: 18:02
Печать  
C радостью отвечу на вопросы.
Начинаю готовиться к продолжению работы - смотрю в сторону SQLAlchemy.

Учтите, что исходники на Питоне 3. Поэтому лучше Eric5.
  
Наверх
 
IP записан
 
Boris_1c
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 129
Зарегистрирован: 29. Января 2007
Re: wic: Python + PyQt4
Ответ #79 - 22. Апреля 2011 :: 06:29
Печать  
покритикуйте мысль..
Создаем
класс ОБЪЕКТ (все остальные объекты базы наследуются от этого):
  1. Перечисляем обязательные для наследников реквизиты (Имена реквизитов, которые хранится в базе, начинаем с префикса "BD"):
  BD_ID строка
  и т.д ...
  2. Служебные атрибуты
   Бд - Объект для работы с базой
  ИмяТаблицы - таблица бд для объекта
  СписокОбъектов - для хранения списка объектов (при организации выборки - ВыбратьЭлементы())
  и т.д
  3. Описывает стандартные методы
  ПолучитьТаблицуБД() - по определенным правилам генерируем имя
  Новый() - получаем новый код/номер
  Записать().. записываем или обновляем
  ВыбратьЭлементы() - Запросом получаем и сохраняем в список "СписокОбъектов "
  НайтиЭлемент() - считываем из базы данных, и присваиваем атрибутам значения

Вопрос  Очень довольный Как в цикле перебрать атрибуты класса?..
 
 
 
  
Наверх
 
IP записан
 
Денис
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 8
Зарегистрирован: 03. Ноября 2010
Re: wic: Python + PyQt4
Ответ #80 - 22. Апреля 2011 :: 10:50
Печать  
Ну, метаданные можно хранить и во внешней структуре. А можно взять для реализации какой-нибудь язык с поддержкой метапрограммирования. Например Ocaml. Там это просто делается штатными средствами языка.
  
Наверх
 
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #81 - 22. Апреля 2011 :: 20:24
Печать  
Boris_1c писал(а) 22. Апреля 2011 :: 06:29:
Вопрос  Очень довольный Как в цикле перебрать атрибуты класса?..

Код
Выбрать все
class MyObject():
    def __init__(self):
        self.bd_id = '###########'
        self.bd_name = '_____________'
        self.bd_another = []

my_obj = MyObject()
for name in dir(my_obj):
    if name.startswith('bd_'):
        print(name) 


http://docs.python.org/library/functions.html#dir
  
Наверх
 
IP записан
 
vasjakur
YaBB Newbies
*
Отсутствует



Сообщений: 7
Зарегистрирован: 06. Ноября 2006
Re: wic: Python + PyQt4
Ответ #82 - 11. Мая 2011 :: 15:21
Печать  
Boris_1c писал(а) 20. Апреля 2011 :: 08:40:
Начал изучать ваши исходники, в питоне новичёк..
Подскажите нормальный редактор?



Под вин http://code.google.com/p/pyscripter/
  
Наверх
 
IP записан
 
vasjakur
YaBB Newbies
*
Отсутствует



Сообщений: 7
Зарегистрирован: 06. Ноября 2006
Re: wic: Python + PyQt4
Ответ #83 - 11. Мая 2011 :: 15:24
Печать  
blindvic писал(а) 20. Апреля 2011 :: 18:02:
C радостью отвечу на вопросы.
Начинаю готовиться к продолжению работы - смотрю в сторону SQLAlchemy.

Учтите, что исходники на Питоне 3. Поэтому лучше Eric5.


Ковырял SQLAlchemy, интересная вещь - но увы, не вносит изменения в существующие таблицы БД, только создает новые. Ещё отдельно надо обеспечивать обработку циркулярных ссылок.
  
Наверх
 
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #84 - 04. Декабря 2011 :: 18:49
Печать  
Вернулся к разработке...

Значительно изменил архитектуру проекта. Убрал динамические пользовательские модули. Теперь система больше похоже на Django  по своей идеологии.

Сделал ORM - гибрид DAL из Web2py и Django ORM. Форма "элемента справочника" открывается и сохраняется.
Здесь репозиторий.

Тестировал на линукс, но по идее на Винде должно пойти без приключений (если кто хочет посмотреть).

Теперь хочу сделать форму списка справочника (в терминологии 1С). Пожалуйста, посоветуйте как это сделать лучше. Знаю, что народ уже делал что-то подобное.

А если кто-нибудь еще и подскажет как это сделать в помощью Qt - вообще будет замечательно. Я уже пытался на этй тему проконсультироваться - пока еще еще не сделал выводов.

Итак, если некий view (QTableView в моем случае), в котором я хочу отображать записи одной из таблиц. На будущее хочу в ней отбражать результаты любого запроса (фильтр WHERE + сортировка ORDER BY, etc.)

Самое простое - сделать запрос к базе даных и весь результат сразу на форму. Я же хочу запрашивать у БД только сколько нужно для отображения.  А по мере прокрутки - делать дополнительные запросы. Вопрос, собственно, состоит в том, как эффективно организовать подгрузку.

Допустим, если речь идет обо всем справочнике, то COUNT(*) довольно быстрая (для некоторых БД) операция - поэтому можно корректно установить размер и положение ползунка scrollbar. Если же количество записей в результате неизвестно - как сделать ползунок? Кстати, в 1С 7.7 (не работал с 8) ползунок всегда маленький, т.е. по егу размеру нельзя судить насколько большая часть записей сейчас отображена, и солько записей есть сверху и снизу.

Далее, как подгружать результаты - по паре строк или всегда как-то минимальный набор (например, 255 строк)?

LIMIT для прокрутки всех записей таблицы не буду - хочу ориентироваться по PRIMARY KEY. Т.е., если пользователь прокрутил вниз на 10 строк, сделаю SELECT * FROM catalog WHERE row_id > last_row_id LIMIT 10, где row_id и last_row_id - первичный ключ справочника и ключ последней отображаемой записи на форме. По идее, должно быть очень быстро.

Какие еще нюансы надо учитывать в этом деле?
  
Наверх
 
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #85 - 04. Декабря 2011 :: 20:15
Печать  
blindvic писал(а) 04. Декабря 2011 :: 18:49:
Теперь хочу сделать форму списка справочника (в терминологии 1С). Пожалуйста, посоветуйте как это сделать лучше. Знаю, что народ уже делал что-то подобное.

А если кто-нибудь еще и подскажет как это сделать в помощью Qt - вообще будет замечательно. Я уже пытался на этй тему проконсультироваться - пока еще еще не сделал выводов.

Итак, если некий view (QTableView в моем случае), в котором я хочу отображать записи одной из таблиц. На будущее хочу в ней отбражать результаты любого запроса (фильтр WHERE + сортировка ORDER BY, etc.)


посмотри мой Receptor там есть модуль uodbmanager. Как раз реализует форму списка справочника. реализована пара тройка моделей: Иерархическая с элементами и без, табличная с управляемой иерархией: можно показать только элементы подчиненные группе или все.
Буду дорабатывать конечно, но начало вроде положено.
Элементы и группы справочников добавляются/помечаются на удаление. Надо бы еще удаление помеченных объектов сделать. Но не успел.
  

uoRecepror04_Refs.PNG ( 48 KB | Загрузки )
uoRecepror04_Refs.PNG
Наверх
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #86 - 04. Декабря 2011 :: 20:20
Печать  
blindvic писал(а) 04. Декабря 2011 :: 18:49:
Какие еще нюансы надо учитывать в этом деле?

преждевременная оптимизация - зло..
  
Наверх
IP записан
 
villager
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 101
Зарегистрирован: 21. Октября 2009
Re: wic: Python + PyQt4
Ответ #87 - 05. Декабря 2011 :: 16:51
Печать  
раз QTableView - значит делай свою модель
и через нее добывай данные

раз модель  - желательно знать количество строк
через count(*)  - можно...

у себя я по условию при инициализации модели извлекаю только первичный ключ (QSqlQuery), остальное построчно по мере надобности
в модели - метод data
что бы не извлекать несколько раз одно и тоже - извлеченные строки складываю в словарь(т.е. если первичного ключа нет в словаре - лезу в БД)

всякие LIMIT не использую - не везде есть, а скорости и так хватает

будут вопросы - отвечу

Улыбка
НО! с точки зрения траты времени - лучше изучить django, написать что-нибудь... и найти работу на 2-3К
т.к. не видно никакой другой области, где бы питонеры требовались.
  
Наверх
 
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #88 - 05. Декабря 2011 :: 17:11
Печать  
trdm писал(а) 04. Декабря 2011 :: 20:15:
посмотри мой Receptor там есть модуль uodbmanager. Как раз реализует форму списка справочника. реализована пара тройка моделей: Иерархическая с элементами и без, табличная с управляемой иерархией: можно показать только элементы подчиненные группе или все.
Буду дорабатывать конечно, но начало вроде положено.
Элементы и группы справочников добавляются/помечаются на удаление. Надо бы еще удаление помеченных объектов сделать. Но не успел.

Спасибо - посмотрю, когда будет время
  
Наверх
 
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: wic: Python + PyQt4
Ответ #89 - 11. Декабря 2011 :: 12:18
Печать  
trdm писал(а) 04. Декабря 2011 :: 20:15:
посмотри мой Receptor там есть модуль uodbmanager. Как раз реализует форму списка справочника. реализована пара тройка моделей: Иерархическая с элементами и без, табличная с управляемой иерархией: можно показать только элементы подчиненные группе или все.
Буду дорабатывать конечно, но начало вроде положено.
Элементы и группы справочников добавляются/помечаются на удаление. Надо бы еще удаление помеченных объектов сделать. Но не успел.


Скомпилировал из запустил под Линуксом. Буду разбираться дальше - трудно разбираться в Си++...
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 4 5 [6] 7 8 
ОтправитьПечать