| View previous topic :: View next topic | 
	
	
		| Author | Message | 
	
		| itman 
 
  
 Joined: 05 Apr 2002
 Posts: 1247
 Location: Ильин Е.Ю.
 Occupation: Cio
 Interests: Кинель
 
 | 
			
				|  Posted: 16 Sep 2005 15:28    Post subject: Может начнем обсуждение написания модуля на Харборе? УРОК1 |   |  
				| 
 |  
				| Допустим, хочу сделать: Пункт в меню в модуле Продажи.
 По пункту - реестр из одной единственной таблицы, скажем перечень выполненных работ ИТ отдела.(аналог mdocm но без mdoc скажем, для простоты)
 Следует обеспечить стандартный набор действий, ввод, поиск, сорт, удалени
 |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| Марина 
 
 
 Joined: 27 Aug 2002
 Posts: 501
 Location: Кондрина Марина Александровна
 Occupation: ОАО БКО программист
 Interests: Боровичи Новгородской обл
 
 | 
			
				|  Posted: 16 Sep 2005 15:56    Post subject: |   |  
				| 
 |  
				| Присоединяюсь к просьбе |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| nordk 
 
 
 Joined: 27 Jun 2005
 Posts: 1000
 Location: Горбунов Константин
 Occupation: БЭСТ-Партнер
 Interests: СПб
 
 | 
			
				|  Posted: 19 Sep 2005 11:26    Post subject: |   |  
				| 
 |  
				| ОК поехали. 1. Создадим пункт меню
 Таблица real\rmenu.dbf
 У меня нет записи 0 10 - пишу туда "Реестр работ ИТ"
 и простенькую программу work.hrb
 Function Main()
 SayAndWait("OK")
 return NIL
 компилируем ее в харбор и пишем в поле функции меню
 HFileEval("work.hrb",{})
 После чего проиндексируем модуль управление продажами обязательно, зайдем туда и убедимся что программка работает - будете готовы дальше, сообщите
 |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| maestro_ 
 
 
 Joined: 29 Jan 2003
 Posts: 95
 
 
 
 
 | 
			
				|  Posted: 19 Sep 2005 12:22    Post subject: |   |  
				| 
 |  
				| Добрый день! Пункт меню сделал
 функцию подцепи
 |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| nordk 
 
 
 Joined: 27 Jun 2005
 Posts: 1000
 Location: Горбунов Константин
 Occupation: БЭСТ-Партнер
 Interests: СПб
 
 | 
			
				|  Posted: 19 Sep 2005 12:48    Post subject: |   |  
				| 
 |  
				| Хорошо - теперь давайте обсудим формат таблицы (перечень и характеристики полей БД) по которой все будем делать. Разумеется сразу же создадим эту таблицу и заполним кто как сумеет какими-нить значениями - чтобы на экране их увидеть
 |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| maestro_ 
 
 
 Joined: 29 Jan 2003
 Posts: 95
 
 
 
 
 | 
			
				|  Posted: 19 Sep 2005 13:20    Post subject: |   |  
				| 
 |  
				| например такая таблица Формат полей
 
 Дата               -             TEK_DATA   D 8 0
 Номер             -             ТЕК_NOMER C 6 0
 Наименование Раб.-      NAME  C 34 0
 Количество по строке -  KOL N 19 4
 Цена ед. -                     CENA 19 3
 Сумма    -                      SUMMA 19 3
 Можно еще и партнера   NAME_P C 25 0
 |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| nordk 
 
 
 Joined: 27 Jun 2005
 Posts: 1000
 Location: Горбунов Константин
 Occupation: БЭСТ-Партнер
 Interests: СПб
 
 | 
			
				|  Posted: 19 Sep 2005 13:43    Post subject: |   |  
				| 
 |  
				| Общая щирина экрана на которой можем отразить 78 знаков - общая ширина всех полей 130 плюс пробелы между ними нужны. Давайте определим цепочку полей отражения на экране в строчку и размер отражения поля на экране (с учетом пробелов)
 |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| itman 
 
  
 Joined: 05 Apr 2002
 Posts: 1247
 Location: Ильин Е.Ю.
 Occupation: Cio
 Interests: Кинель
 
 | 
			
				|  Posted: 19 Sep 2005 14:04    Post subject: |   |  
				| 
 |  
				|  	  | maestro_ wrote: |  	  | например такая таблица Формат полей
 
 Дата               -             TEK_DATA   D 8 0
 Номер             -             ТЕК_NOMER C 6 0
 Наименование Раб.-      NAME  C 34 0
 Количество по строке -  KOL N 19 4
 Цена ед. -                     CENA 19 3
 Сумма    -                      SUMMA 19 3
 Можно еще и партнера   NAME_P C 25 0
 | 
 
 Может добавим справочник работ?
 Вынесем работы в отдельную таблицу с возможностью наполнения при записи в таблицу приведенной структу
 |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| nordk 
 
 
 Joined: 27 Jun 2005
 Posts: 1000
 Location: Горбунов Константин
 Occupation: БЭСТ-Партнер
 Interests: СПб
 
 | 
			
				|  Posted: 19 Sep 2005 14:31    Post subject: |   |  
				| 
 |  
				| Давайте справочник чуть поз |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| maestro_ 
 
 
 Joined: 29 Jan 2003
 Posts: 95
 
 
 
 
 | 
			
				|  Posted: 19 Sep 2005 14:38    Post subject: |   |  
				| 
 |  
				| Давайте обрежим поля Name, Сеna и Summa что бы уместиться в 78 Для самого реестра можно оставить вот такой набор данных
 1 8 1 6 1 16 1 5 1 18 1 18 1  = 78
 
 8 -  Tek_data
 6 -  Tek_Nomer
 16 - left(Name,16)
 5  -  left(str(kol),5)
 18 - left(str(Cena),1
   18 - left(str(Summa),1
   
 правда не уверен в правильности "обрезания" полей
 "обрезанные" поля можно поместиь в подвал
 1 - под символ разделитель
 |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| nordk 
 
 
 Joined: 27 Jun 2005
 Posts: 1000
 Location: Горбунов Константин
 Occupation: БЭСТ-Партнер
 Interests: СПб
 
 | 
			
				|  Posted: 19 Sep 2005 14:45    Post subject: |   |  
				| 
 |  
				| Таперя часов в 18 по Москве распишу - переку |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| nordk 
 
 
 Joined: 27 Jun 2005
 Posts: 1000
 Location: Горбунов Константин
 Occupation: БЭСТ-Партнер
 Interests: СПб
 
 | 
			
				|  Posted: 19 Sep 2005 15:52    Post subject: |   |  
				| 
 |  
				| @echo off set HB_INSTALL=D:\B4_PL1103
 
 set HOUT=%HB_INSTALL%\PRO\PLUGINS\EXTENSNS\REAL\
 
 set HFLAGS= -n -a -w -gh -l
 если с отладчиком - то надо
 set HFLAGS= -n -a -w -gh -b
 
 
 %HB_INSTALL%\bin\harbour %HFLAGS% work.prg -o%HOUT%
 |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| nordk 
 
 
 Joined: 27 Jun 2005
 Posts: 1000
 Location: Горбунов Константин
 Occupation: БЭСТ-Партнер
 Interests: СПб
 
 | 
			
				|  Posted: 19 Sep 2005 17:29    Post subject: |   |  
				| 
 |  
				| Внутри main стираем SayAndWait("OK") 
 Пишем в первом приближении
 
 
  	  | Code: |  	  | Local aSet,aSetKey,nTop,nBot,cColHead,aBlockCols,cCurproc aSet:=SaveSet()
 aSetKey:=SaveSetKey()
 
 NETUSE("WORK",LoadPath()+"\real\work.dbf",,.F.)
 (Или по Вашему пути)
 
 DISPBOX(2,0,23,79,( Chr( 201 ) + Chr( 205 ) + Chr( 187 ) + Chr( 186 ) + Chr( 188 ) + Chr( 205 ) + Chr( 200 ) + Chr( 186 )+' ' )
 ,"W+/B")
 nTop:=3
 nBot:=22
 cColHead:={"  Дата   Номер      НАИМЕНОВАНИЕ                 Кол-во   Цена      Сумма    "}
 cCurProc:={||"2"}
 aBlockCols:={{{||field->tek_data},0},{{||field->tek_nomer},9},{{||LEFT(field->name,16)},16},{{||STR(field->kol,5)},33},{{||STR(field->cena,12,2)},39},{{||STR(field->summa,12,2)},52}}
 
 WORK->( INITLIST(nTop,nBot,cColHead,aBlockCols,cCurProc) )
 
 WORK->( DBCLOSEAREA() )
 
 RestSetKey(aSetKey)
 RestSet(aSet)
 
 RETURN NIL
 | 
 
 Дальше играем с изменением значений в параметрах, задаем вопросы
 У себя не тестировал - если где допустил синтетические ошибки заранее прошу прощения
  |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| WildCat 
 
 
 Joined: 13 Sep 2005
 Posts: 18
 Location: Андрей Забабонин
 Occupation: ОАО "1000 мелочей"
 Interests: Калининград
 
 | 
			
				|  Posted: 19 Sep 2005 18:22    Post subject: |   |  
				| 
 |  
				| Пишу простенькую программу hello.prg (текст есть в хелпе), компилирую ее в харбор, кладу в PRO\PLUGINS\EXTENSNS\MAIN и пишу в поле функции меню
 
 HFileEval("hello.hrb",{}).
 
 При попытке вызова спец функции получаю
 
 "Нет файла или пустой файл HFileEval("hello.hrb",{})"
 
 Аналогичный результат при использовании FileEval("hello.prg",{}).
 В чем может быть проблема?
 |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| maestro_ 
 
 
 Joined: 29 Jan 2003
 Posts: 95
 
 
 
 
 | 
			
				|  Posted: 19 Sep 2005 18:25    Post subject: |   |  
				| 
 |  
				| маленький вопросик в данном реестре возможно удалять записи(по F
  ! это можно как-то контролировать? Хотелось еще рассмотреть возможность сортировки и поиска по этому реестру.
 
 Last edited by maestro_ on 19 Sep 2005 18:28; edited 1 time in total
 |  | 
	
		| Back to top |  | 
	
		|  | 
	
		|  |