| View previous topic :: View next topic | 
	
	
		| Author | Message | 
	
		| Дениска 
 
 
 Joined: 26 Feb 2002
 Posts: 649
 
 
 
 
 | 
			
				|  Posted: 24 Jul 2007 17:52    Post subject: Колонки в табличном документе |   |  
				| 
 |  
				| Колонки табличного документа хранятся в файле TDocsC.dbf в мемо поле aSums. Похоже на колонку отводится 16 символов. В случаи ручной правки похоже ставится как-то флаг. В случае большого числа колонок разбивается на несколько строк. Вообще, может есть стандартная функция (ии) для этого случая?
  |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| nordk 
 
 
 Joined: 27 Jun 2005
 Posts: 1000
 Location: Горбунов Константин
 Occupation: БЭСТ-Партнер
 Interests: СПб
 
 | 
			
				|  Posted: 24 Jul 2007 19:29    Post subject: |   |  
				| 
 |  
				| Давайте сначала попробуем понять : что нужно. Пока не понятно - объясните подробнее.
 И на всякий случай о каком БЭСте речь
 |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| Дениска 
 
 
 Joined: 26 Feb 2002
 Posts: 649
 
 
 
 
 | 
			
				|  Posted: 25 Jul 2007 05:03    Post subject: |   |  
				| 
 |  
				|  	  | nordk wrote: |  	  | Давайте сначала попробуем понять : что нужно. Пока не понятно - объясните подробнее.
 И на всякий случай о каком БЭСте речь
 | 
 
 Нужно получить данные из определенной колонки (по номеру) определенного табличного документа. Сделать это надо и для Б4, и для Б5. Структура файла и там и там вроде одинаковая. Так, что давайте на примере Б4 для определенности. В настройке табличных документов есть функция _SC(). Вот она, то и нужна.
 |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| nordk 
 
 
 Joined: 27 Jun 2005
 Posts: 1000
 Location: Горбунов Константин
 Occupation: БЭСТ-Партнер
 Interests: СПб
 
 | 
			
				|  Posted: 25 Jul 2007 14:33    Post subject: |   |  
				| 
 |  
				| Описание функции выложи |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| Дениска 
 
 
 Joined: 26 Feb 2002
 Posts: 649
 
 
 
 
 | 
			
				|  Posted: 26 Jul 2007 12:24    Post subject: |   |  
				| 
 |  
				|  	  | nordk wrote: |  	  | Описание функции выложил | 
 
 При запуске БЭСТ ругается:" Unknow or unregister function: FiGet"
 
 Я правильно пробую?
 
 
  	  | Code: |  	  | #define Y_Type(_x, _t)    ValType(_x) == _t
 Function _SC(nCo)
 ....
 Return (aLines[nCo, 1])
 Function Main()
 Local aSC
 ....
 aSC := F_TDocsC -> (_SC(1)
 ...
 
 | 
 |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| nordk 
 
 
 Joined: 27 Jun 2005
 Posts: 1000
 Location: Горбунов Константин
 Occupation: БЭСТ-Партнер
 Interests: СПб
 
 | 
			
				|  Posted: 26 Jul 2007 14:12    Post subject: |   |  
				| 
 |  
				| Во-первых функции надо объявлять в конце, во-вторых лучше давать свои имена
 в-третьих FiGet по всей видимости не видна из плагина
 
 
  	  | Code: |  	  | #translate FiGet(<_f>)       => _FIELD-><_f> | 
 |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| Дениска 
 
 
 Joined: 26 Feb 2002
 Posts: 649
 
 
 
 
 | 
			
				|  Posted: 26 Jul 2007 15:19    Post subject: |   |  
				| 
 |  
				| Пытаюсь сделать самый простой пример. Вызываю плагин из Табличных документов: 
  	  | Code: |  	  | #translate FiGet(<_f>)       => _FIELD-><_f>
 #define Y_Type(_x, _t)    ValType(_x) == _t
 Function Main()
 
 Local aStru, aSetKey
 Local aSC
 
 aSetKey:=SaveSetKey()
 DBPUSH()
 altd()
 
 aSC := TDocsC -> (MY_SC(1))
 
 DbPop()
 RestSetKey(aSetkey)
 Return
 
 Function MY_SC(nCo)
 
 MemVar aLines
 
 If Y_Type(MemVarBlock("NFLAG"), "B")
 
 Return(If(nCo > 0 .And. nCo < Val(FiGet(NCOL)),;
 1,;
 (;
 SayError({"Выражение в формуле: MY_SC(" + LTrim(Str(nCo)) +;
 ")  - должно ссылаться на номер",;
 "колонки, которая расcчитыва" +;
 "ется раньше текущей колонки!"}, 15),;
 NIL;
 )))
 
 EndIf
 
 Return (aLines[nCo, 1])
 
 | 
 
 БЭСТ ругается на строчку  Return (aLines[nCo, 1]): "Переменная не существует"
 |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| nordk 
 
 
 Joined: 27 Jun 2005
 Posts: 1000
 Location: Горбунов Константин
 Occupation: БЭСТ-Партнер
 Interests: СПб
 
 | 
			
				|  Posted: 27 Jul 2007 10:51    Post subject: |   |  
				| 
 |  
				| Честно говоря мне вообще непонятна возня вокруг этой функции. Ведь по сути она ничего не делает - а только возвращает значение из массива aLines.
 Вы посмотрите в отладчике - доступен ли Вам этот массив, если недоступен, то про функцию можно забыть и надо все делать самостоятельно, начиная с подробного изложения, а что все таки надо...
 |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| Дениска 
 
 
 Joined: 26 Feb 2002
 Posts: 649
 
 
 
 
 | 
			
				|  Posted: 27 Jul 2007 11:11    Post subject: |   |  
				| 
 |  
				|  	  | nordk wrote: |  	  | Честно говоря мне вообще непонятна возня вокруг этой функции. Ведь по сути она ничего не делает - а только возвращает значение из массива aLines.
 Вы посмотрите в отладчике - доступен ли Вам этот массив, если недоступен, то про функцию можно забыть и надо все делать самостоятельно, начиная с подробного изложения, а что все таки надо...
 | 
 
 Массив aLines не доступен.
 
 Мне нужно значение n-го столбца из табличного документа. Нужна функция аналогичная стандартной функции _SC() из табличных документов.
 
 P.S. Из хелпа к табличным документам:
 _SC(n)|1  сумма из n-ой колонки у того же
 сотрудника. Здесь подразумевается n-ая по порядку
 следования в табличном документе колонка, а не
 колонка, с кодом n.
 
 P.P.S. Текст функции _SC() очень компактный
  , но не понятный для меня  |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| nordk 
 
 
 Joined: 27 Jun 2005
 Posts: 1000
 Location: Горбунов Константин
 Occupation: БЭСТ-Партнер
 Interests: СПб
 
 | 
			
				|  Posted: 27 Jul 2007 11:36    Post subject: |   |  
				| 
 |  
				| Думаю это не так просто. Содержимое лежэит в массиве aLines
 Он Вам недоступен.
 Значит Вам надо создавать самому этот массив, самому его заполнять.
 Если это Вам нужно во время рассчета.
 Если после рассчета по посчитанным суммам - то тогда из поля БД.
 Еще раз повторяю - Вы не пишете цель конечную и помогать Вам трудно. Явно что изначально постановка задачи некорректна и надо озвучить всю задачу от начала до конца а не отдельный ее метод, который по всей видимости так как Вам нужно будет решаться очень непросто. Надо пересматривать путь решения вопроса в принципе, а для этого надо понимать конечную цель и все имеющиеся исходные данны
 |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| nordk 
 
 
 Joined: 27 Jun 2005
 Posts: 1000
 Location: Горбунов Константин
 Occupation: БЭСТ-Партнер
 Interests: СПб
 
 | 
			
				|  Posted: 27 Jul 2007 11:59    Post subject: |   |  
				| 
 |  
				| Зашел в табличные документы, написал свой плагин вставил в программу и могу ответственно заявить массив aLines в отладчике виден - берите из него значения и никакие функции Вам не нужны |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| Дениска 
 
 
 Joined: 26 Feb 2002
 Posts: 649
 
 
 
 
 | 
			
				|  Posted: 27 Jul 2007 12:02    Post subject: |   |  
				| 
 |  
				|  	  | nordk wrote: |  	  | Думаю это не так просто. Содержимое лежэит в массиве aLines
 Он Вам недоступен.
 Значит Вам надо создавать самому этот массив, самому его заполнять.
 
 | 
 Чем его заполнять? Если  aLines := TDocsC -> aSums, то функция возвращает символ (а не колонку) по порядку
 
 
  	  | nordk wrote: |  	  | Если это Вам нужно во время рассчета.
 Если после рассчета по посчитанным суммам - то тогда из поля БД.
 
 | 
 Плагин вызываю по Ctrl-F5. Получается массив aLines надо заполнять из БД.
 
 
 
  	  | nordk wrote: |  	  | Еще раз повторяю - Вы не пишете цель конечную и помогать Вам трудно. Явно что изначально постановка задачи некорректна и надо озвучить всю задачу от начала до конца а не отдельный ее метод, который по всей видимости так как Вам нужно будет решаться очень непросто. Надо пересматривать путь решения вопроса в принципе, а для этого надо понимать конечную цель и все имеющиеся исходные данные.
 | 
 
 Я понял, что надо объяснить подробней, но не могу понять, что не понятно ...
   
 В БД данные здесь TDocsC -> aSums и их надо обработать. В БЭСТ-е эти данные мы видем в табличных документах (ЗП - Обработка документов - Табличные документы. Выбираем нужный табличный документ. На демо базе, к примеру, "003 Бригадные наряды"). По Ctrl-F5 вызываем плагин, который должен вывести, к примеру 2 колонку по людя
 |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| Дениска 
 
 
 Joined: 26 Feb 2002
 Posts: 649
 
 
 
 
 | 
			
				|  Posted: 27 Jul 2007 12:04    Post subject: |   |  
				| 
 |  
				|  	  | nordk wrote: |  	  | Зашел в табличные документы, написал свой плагин вставил в программу и могу ответственно заявить массив aLines в отладчике виден - берите из него значения и никакие функции Вам не нужны | 
 
 Пока писал предыдущий свой пост и вы написали. Может вы выложите свой плагин, который выводит, к примеру, значение второй колонки. И вопрос я думаю закроется
  |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| nordk 
 
 
 Joined: 27 Jun 2005
 Posts: 1000
 Location: Горбунов Константин
 Occupation: БЭСТ-Партнер
 Interests: СПб
 
 | 
			
				|  Posted: 27 Jul 2007 12:26    Post subject: |   |  
				| 
 |  
				|  	  | Code: |  	  | FUNCTION MAIN() RETURN aLines[2,1]
 | 
 |  | 
	
		| Back to top |  | 
	
		|  | 
	
		| Дениска 
 
 
 Joined: 26 Feb 2002
 Posts: 649
 
 
 
 
 | 
			
				|  Posted: 27 Jul 2007 12:37    Post subject: |   |  
				| 
 |  
				|  	  | nordk wrote: |  	  |  	  | Code: |  	  | FUNCTION MAIN() RETURN aLines[2,1]
 | 
 | 
 
 Запускаю из табличного документа и получаю: "Переменная не существует."
 
 А вы откуда запускаете и какое значение выдает aLines[2,1]?
 
 P.S. Проверяю на Б4+12.01СП39
 |  | 
	
		| Back to top |  | 
	
		|  | 
	
		|  |