Переключение на Главную Страницу Страницы: 1 ... 6 7 [8] 9  ОтправитьПечать
Очень популярная тема (более 25 ответов) на связке Python + Qt пишу для себя чтото... (число прочтений - 70480 )
villager
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 101
Зарегистрирован: 21. Октября 2009
Re: на связке Python + Qt пишу для себя чтото...
Ответ #105 - 22. Марта 2011 :: 23:27
Печать  
шоу продолжается
начал делать очередной тестовый проект
оказалось, что нужна пустая дата
стандартный QDateEdit не удалось заставить вести себя прилично, пришлось писать свой
результат прилагается
  

zzDateEdit.rar ( 2 KB | Загрузки )
Наверх
 
IP записан
 
villager
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 101
Зарегистрирован: 21. Октября 2009
Re: на связке Python + Qt пишу для себя чтото...
Ответ #106 - 12. Апреля 2011 :: 19:19
Печать  
продолжается ловля блох...оптимизация

еще научил отчеты в Excel выгружаться

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

есть еще проблема с терминологией:

есть "платформа" - exe-файл и библиотеки
есть "конфигурация" - хранится в БД

к слову платформа претензий нет, а вот конфигурация - не нравится (т.к. у 1це -конфигурация)
чем бы его заменить?
  
Наверх
 
IP записан
 
villager
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 101
Зарегистрирован: 21. Октября 2009
Re: на связке Python + Qt пишу для себя чтото...
Ответ #107 - 22. Августа 2011 :: 08:54
Печать  
однако тихо тут летом Улыбка

за прошедшие полгода успешно внедрилось 3 системки
одна была связана с документооборотом отдела кадров,
что здорово продвинуло функциональность генератора отчетов

например - появилась возможность выполнять вложенные отчеты
возможность использования питоновских функций в выражениях здорово помогает отчеты рисовать

правда пока использую только две БД  - SQLite и MySQL
PostgreSQL слишком требователен к "чистоте" команд SQL и к данным

такие дела
  
Наверх
 
IP записан
 
JavaIsJunk
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 41
Зарегистрирован: 10. Марта 2012
Re: на связке Python + Qt пишу для себя чтото...
Ответ #108 - 10. Марта 2012 :: 11:42
Печать  
villager писал(а) 22. Августа 2011 :: 08:54:
однако тихо тут летом Улыбка

за прошедшие полгода успешно внедрилось 3 системки
одна была связана с документооборотом отдела кадров,
что здорово продвинуло функциональность генератора отчетов

например - появилась возможность выполнять вложенные отчеты
возможность использования питоновских функций в выражениях здорово помогает отчеты рисовать

правда пока использую только две БД  - SQLite и MySQL
PostgreSQL слишком требователен к "чистоте" команд SQL и к данным

такие дела


Молодец! Посмотрел, замечательный проект! Главное не бросать! Все-таки не перевелись еще настоящие романтики!
  
Наверх
 
IP записан
 
villager
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 101
Зарегистрирован: 21. Октября 2009
Re: на связке Python + Qt пишу для себя чтото...
Ответ #109 - 10. Марта 2012 :: 20:13
Печать  
пришла весна
Цитата:
Молодец! Посмотрел, замечательный проект! Главное не бросать! Все-таки не перевелись еще настоящие романтики!
о! свежий ветер подул Улыбка

прошло еще полгода
написалась и внедрилась (на удивление легко) система учета работы автотранспорта

заканчиваю перенос одного из разделов бухучета (учет ОС) из старой программы (фокспро дбф)
тиражная  штука (около 20 инсталляций)
сейчас как раз тестирую обновление с сайта

дошли руки до хранения и печати изображений - старая идея с печатью отсканированного бланка будет скоро работать

окончательно остановился на MySQL
ну SQLite тоже работает, но это только для демо (есть там проблемы с русским в sql-запросах)


чувствую скоро начну делать web-морду...
  
Наверх
 
IP записан
 
Phoenix
Senior Member
****
Отсутствует


itpath.ru

Сообщений: 398
Местоположение: Москва
Зарегистрирован: 15. Июня 2006
Пол: Мужской
Re: на связке Python + Qt пишу для себя чтото...
Ответ #110 - 12. Марта 2012 :: 11:44
Печать  
Ради интереса, приведите код работы работы с объектами системы.
например что-то вроде модуля формы\обработки проведения.
  

Лень двигатель прогресса.&&http://www.itpath.ru&&;
Наверх
IP записан
 
villager
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 101
Зарегистрирован: 21. Октября 2009
Re: на связке Python + Qt пишу для себя чтото...
Ответ #111 - 12. Марта 2012 :: 17:42
Печать  
все примитивно

вот например расчет износа по карточкам ОС
вся эта байда вызывается из из меню ДЕЙСТВИЯ грида к карточками
сам грид в том коде присутствует как переменная mem

таблица БД, отображаемая этим гридом, доступна через mem.t
в свою очередь объект таблица имеет:
методы навигации (last, first, next, prev)
объект r для доступа к текущей записи
т.е. строка zzMess(mem.t.r.name) выведет модальное окно с содержимым поля name

кусок в конце организует окно диалога с запросом даты и двумя кнопками
на кнопки прицеплены обработчики
внутри обработчика как раз видно, как можно обратиться к содержимому окна acnt.s.ed
в данном случае получаем текст даты
можно и присвоить acnt.s.ed='2012-01-08'
примерно так же получаем widget со всеми потрохами
acnt.w.ed
например acnt.w.ed.setFocus()

MyApp.myDataBase.setrow записывает запись в таблицу
MyApp.myDataBase знает все о ссылочной целостности и не допустит фигни
кстати, надо вписать обработчик неудачной записи ( MyApp.myDataBase.setrow вернет False)

Код
Выбрать все
def amcnt(mem,acnt):
	def realcnt():
		if int(acnt.s.ed[-2:])!=1:
			zzMess(u"Начисление амортизации производится только <b>первым</b> числом месяца!")
			return
		kuos=MyApp.myDataBase.kuos
		kuos.setFilter(mem.t.filter())
		kuos.refresh()
		pb=zzProgressBar(barText=u"Расчет амортизации",barMax=kuos.rowCount())
		pb.show()
		counted=0
		while not kuos.eof():
			if zzYearM(kuos.r.date_out)>=zzYearM(acnt.s.ed) or kuos.r.date_out=="" or \
					(kuos.r.year_acnt and zzYear(kuos.r.date_out)>zzYear(acnt.s.ed)):#не выбыло еще
				makeAcnt=False
				kuos_a=zzCursor("select * from kuos_a where os=%s order by date" % kuos.r.os)
				kuos_i=zzCursor("select * from kuos_i where os=%s and date<'%s' order by date" % (kuos.r.os,acnt.s.ed))
				kuos_i.last()
				if kuos_a.eof():#объект только что переступил, или это первый расчет
					if zzYearM(kuos.r.date_in)<zzYearM(acnt.s.ed):
						makeAcnt=True
						a_iznos=kuos.r.beg_amrt
						a_cost=kuos.r.beg_cost
				else:
					kuos_a.last()
					if kuos_a.r.date>=acnt.s.ed:#уже есть строки
						pass
					elif (int(zzMonth(acnt.s.ed))+int(zzYear(acnt.s.ed))*12)-  (int(zzMonth(kuos_a.r.date))+int(zzYear(kuos_a.r.date))*12) >1 \
							and not kuos.r.year_acnt:
						zzMess(u"""Нарушена последовательность расчета по карточке №<b>%s</b><br>
										Дата последней операции <b>%s</b><br>
										Расчет будет прерван!!!""" % \
							(kuos.r.os,dtoc(kuos_a.r.date)))
						break
					elif kuos.r.year_acnt and int(zzMonth(acnt.s.ed))!=12:#годовой расчет только в декабре
						pass
					elif (int(zzYear(acnt.s.ed))-int(zzYear(kuos_a.r.date))) >1 \
							and kuos.r.year_acnt and int(zzMonth(acnt.s.ed))==12:#годовой расчет
						zzMess(u"""Нарушена последовательность расчета по карточке №<b>%s</b><br>
										Дата последней операции <b>%s</b><br>
										Расчет будет прерван!!!""" % \
							(kuos.r.os,dtoc(kuos_a.r.date)))
						break
					else:
						makeAcnt=True
						a_iznos=kuos_a.r.amrt_sum
						a_cost=kuos_a.r.cost
				if makeAcnt:#сам расчет
					counted+=1
					if kuos.r.year_acnt:
						srok=int(kuos.r.srok_2012y)
						srok_rl=int(zzYear(acnt.s.ed))-(int(zzYear(kuos.r.date_vv)))
						iznos=round((num(a_cost)-num(a_iznos))/(srok-srok_rl),0)
						pass
					else:
						te_vv))*12+int(zzMonth(kuos.r.date_vv))))-1
						srok=int(kuos.r.srok_2012y)*12+int(kuos.r.srok_2012m)
						if srok-srok_rl>0:
							iznos=round((num(a_cost)-num(a_iznos))/(srok-srok_rl),0)
						else:
							iznos=0
					if num(iznos)!=0:#пробуем применить поправочный коэффициент
						kuos_ga=zzCursor("""select *
													from kuos_ga
													where os=%s and date1<='%s ' and (date2>'%s' or date2<='0000-00-00')
													order by date1""" % (kuos.r.os,acnt.s.ed,acnt.s.ed))
						if not kuos_ga.eof():
							if num(kuos_ga.r.amrt)!=0:
								iznos=kuos_ga.r.amrt
							else:
								iznos=num(round(num(iznos)*num(kuos_ga.r.kof),0))
					MyApp.myDataBase.setrow("kuos_a",\
															{'OS':kuos.r.os,
															'DATE':acnt.s.ed,
															'COST':a_cost,
															'AMRT_SUM':num(a_iznos)+num(iznos),
															'AMRT':num(iznos),
															'AMRT_DB':kuos_i.r.amrt_db,
															'AMRT_CR':kuos_i.r.amrt_cr,
															'RECTYPE':1,
															},append=True)
			kuos.next()
			pb.step()
		pb.close()
		zzMess(u"Расчитано карточек: <b>%s</b>" % counted)
		if counted:
			mem.refresh()
	return realcnt

def dmcnt(mem,acnt):
	def realcnt():
		kuos=MyApp.myDataBase.kuos
		kuos.setFilter(mem.t.filter())
		kuos.refresh()
		pb=zzProgressBar(barText=u"Удаление расчета",barMax=kuos.rowCount())
		pb.show()
		counted=0
		while not kuos.eof():
			pb.step()
			counted+=1
			zzCursor("delete from kuos_a where os=%s and date='%s' and rectype=1" % (kuos.r.os,acnt.s.ed))
			kuos.next()
		pb.close()
		zzMess(u"Обработано карточек: <b>%s</b>" % counted)
		mem.refresh()

	return realcnt

acnt=sc()
acnt.addLine("ed",u"Расчет на дату",type="DATE",value="%s-01" % today()[:7])
acnt.addClose()
acnt.addHorz()
acnt.addLine("<S")
acnt.addLine("go1",u"",pic=u"B Рассчитать",len=15,valid=amcnt(mem,acnt))
acnt.addLine("go1",u"",pic=u"B Удалить расчет",len=15,valid=dmcnt(mem,acnt))
acnt.addLine("<S")
acnt.addClose()
acnt.runForm(u"Расчет амортизации",buttons="!q") 

  

2_1cpp.png ( 54 KB | Загрузки )
2_1cpp.png
Наверх
 
IP записан
 
JavaIsJunk
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 41
Зарегистрирован: 10. Марта 2012
Re: на связке Python + Qt пишу для себя чтото...
Ответ #112 - 12. Марта 2012 :: 18:49
Печать  
Круто, я тоже хочу научиться программировать на Python.
  
Наверх
 
IP записан
 
Phoenix
Senior Member
****
Отсутствует


itpath.ru

Сообщений: 398
Местоположение: Москва
Зарегистрирован: 15. Июня 2006
Пол: Мужской
Re: на связке Python + Qt пишу для себя чтото...
Ответ #113 - 13. Марта 2012 :: 06:33
Печать  
villager
спасибо )
А что мешает сделать класс оболочку для объектов метаданных? думаю такие там есть.

JavaIsJunk писал(а) 12. Марта 2012 :: 18:49:
Круто, я тоже хочу научиться программировать на Python.

Меня смущает зависимость работы скрипта от форматирования.
  

Лень двигатель прогресса.&&http://www.itpath.ru&&;
Наверх
IP записан
 
villager
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 101
Зарегистрирован: 21. Октября 2009
Re: на связке Python + Qt пишу для себя чтото...
Ответ #114 - 13. Марта 2012 :: 11:19
Печать  
Цитата:
А что мешает сделать класс оболочку для объектов метаданных?

а что это? для чего?


Цитата:
Меня смущает зависимость работы скрипта от форматирования

отступы на любителя конечно
хотя это всего лишь узаконенный правильный стиль писания исходников
  
Наверх
 
IP записан
 
JavaIsJunk
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 41
Зарегистрирован: 10. Марта 2012
Re: на связке Python + Qt пишу для себя чтото...
Ответ #115 - 13. Марта 2012 :: 11:55
Печать  
villager писал(а) 12. Марта 2012 :: 17:42:
все примитивно

вот например расчет износа по карточкам ОС
вся эта байда вызывается из из меню ДЕЙСТВИЯ грида к ............


Связка Python + Qt  это PyQt  или отдельно Python  и отдельно Qt?

И еще вопрос, как печатаются документы, накладные, счета-фактуры? Какой-то свой редактор отчетов или готовый?
  
Наверх
 
IP записан
 
villager
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 101
Зарегистрирован: 21. Октября 2009
Re: на связке Python + Qt пишу для себя чтото...
Ответ #116 - 13. Марта 2012 :: 12:34
Печать  
JavaIsJunk писал(а) 13. Марта 2012 :: 11:55:
Связка Python + Qt  это PyQt  или отдельно Python  и отдельно Qt?

И еще вопрос, как печатаются документы, накладные, счета-фактуры? Какой-то свой редактор отчетов или готовый?

python+PyQt
а фсю тему прочитать?
Улыбка
все свое
  
Наверх
 
IP записан
 
JavaIsJunk
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 41
Зарегистрирован: 10. Марта 2012
Re: на связке Python + Qt пишу для себя чтото...
Ответ #117 - 13. Марта 2012 :: 19:01
Печать  
villager писал(а) 13. Марта 2012 :: 12:34:
python+PyQt
а фсю тему прочитать?
Улыбка



Дык прочитал, но там сложно понять, в первом посте: "сейчас на связке Python + Qt" потом уже совсем трудно понять... ))))

villager писал(а) 13. Марта 2012 :: 12:34:
все свое


Т.е. есть какой-то табличный редактор типа как в 1С ? или скорее как FastReport в делфи?
Хотелось бы увидеть скрины редактора отчетов ))
  
Наверх
 
IP записан
 
villager
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 101
Зарегистрирован: 21. Октября 2009
Re: на связке Python + Qt пишу для себя чтото...
Ответ #118 - 13. Марта 2012 :: 19:20
Печать  
JavaIsJunk писал(а) 13. Марта 2012 :: 19:01:
Т.е. есть какой-то табличный редактор типа как в 1С ? или скорее как FastReport в делфи?
Хотелось бы увидеть скрины редактора отчетов ))

почти, но есть свои фишки

старые скрины есть на 5-6 стр этой темы
теперь это выглядит так
  

21_cpp.png ( 78 KB | Загрузки )
21_cpp.png
Наверх
 
IP записан
 
JavaIsJunk
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 41
Зарегистрирован: 10. Марта 2012
Re: на связке Python + Qt пишу для себя чтото...
Ответ #119 - 13. Марта 2012 :: 19:43
Печать  
villager писал(а) 13. Марта 2012 :: 19:20:
почти, но есть свои фишки

старые скрины есть на 5-6 стр этой темы
теперь это выглядит так


Круто )) и самое главное вдохновляет начинающих программистов. Можно делать хорошие проги, главное упорство, труд и желание.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 6 7 [8] 9 
ОтправитьПечать