Главная
Новый форум
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Колонки в табличном документе
Goto page 1, 2  Next
 
Post new topic   Reply to topic   printer-friendly view     Forum Index -> Программирование в БЭСТ-4
View previous topic :: View next topic  
Author Message
Дениска



Joined: 26 Feb 2002
Posts: 649



PostPosted: 24 Jul 2007 17:52    Post subject: Колонки в табличном документе Reply with quote

Колонки табличного документа хранятся в файле TDocsC.dbf в мемо поле aSums. Похоже на колонку отводится 16 символов. В случаи ручной правки похоже ставится как-то флаг. В случае большого числа колонок разбивается на несколько строк.
Вообще, может есть стандартная функция (ии) для этого случая?
Back to top
View user's profile Send private message
nordk



Joined: 27 Jun 2005
Posts: 1000
Location: Горбунов Константин
Occupation: БЭСТ-Партнер
Interests: СПб

PostPosted: 24 Jul 2007 19:29    Post subject: Reply with quote

Давайте сначала попробуем понять : что нужно.
Пока не понятно - объясните подробнее.
И на всякий случай о каком БЭСте речь
Back to top
View user's profile Send private message Send e-mail
Дениска



Joined: 26 Feb 2002
Posts: 649



PostPosted: 25 Jul 2007 05:03    Post subject: Reply with quote

nordk wrote:
Давайте сначала попробуем понять : что нужно.
Пока не понятно - объясните подробнее.
И на всякий случай о каком БЭСте речь


Нужно получить данные из определенной колонки (по номеру) определенного табличного документа. Сделать это надо и для Б4, и для Б5. Структура файла и там и там вроде одинаковая. Так, что давайте на примере Б4 для определенности. В настройке табличных документов есть функция _SC(). Вот она, то и нужна.
Back to top
View user's profile Send private message
nordk



Joined: 27 Jun 2005
Posts: 1000
Location: Горбунов Константин
Occupation: БЭСТ-Партнер
Interests: СПб

PostPosted: 25 Jul 2007 14:33    Post subject: Reply with quote

Описание функции выложи
Back to top
View user's profile Send private message Send e-mail
Дениска



Joined: 26 Feb 2002
Posts: 649



PostPosted: 26 Jul 2007 12:24    Post subject: Reply with quote

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
View user's profile Send private message
nordk



Joined: 27 Jun 2005
Posts: 1000
Location: Горбунов Константин
Occupation: БЭСТ-Партнер
Interests: СПб

PostPosted: 26 Jul 2007 14:12    Post subject: Reply with quote

Во-первых функции надо объявлять в конце,
во-вторых лучше давать свои имена
в-третьих FiGet по всей видимости не видна из плагина

Code:
#translate FiGet(<_f>)       => _FIELD-><_f>
Back to top
View user's profile Send private message Send e-mail
Дениска



Joined: 26 Feb 2002
Posts: 649



PostPosted: 26 Jul 2007 15:19    Post subject: Reply with quote

Пытаюсь сделать самый простой пример. Вызываю плагин из Табличных документов:
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
View user's profile Send private message
nordk



Joined: 27 Jun 2005
Posts: 1000
Location: Горбунов Константин
Occupation: БЭСТ-Партнер
Interests: СПб

PostPosted: 27 Jul 2007 10:51    Post subject: Reply with quote

Честно говоря мне вообще непонятна возня вокруг этой функции.
Ведь по сути она ничего не делает - а только возвращает значение из массива aLines.
Вы посмотрите в отладчике - доступен ли Вам этот массив, если недоступен, то про функцию можно забыть и надо все делать самостоятельно, начиная с подробного изложения, а что все таки надо...
Back to top
View user's profile Send private message Send e-mail
Дениска



Joined: 26 Feb 2002
Posts: 649



PostPosted: 27 Jul 2007 11:11    Post subject: Reply with quote

nordk wrote:
Честно говоря мне вообще непонятна возня вокруг этой функции.
Ведь по сути она ничего не делает - а только возвращает значение из массива aLines.
Вы посмотрите в отладчике - доступен ли Вам этот массив, если недоступен, то про функцию можно забыть и надо все делать самостоятельно, начиная с подробного изложения, а что все таки надо...


Массив aLines не доступен.

Мне нужно значение n-го столбца из табличного документа. Нужна функция аналогичная стандартной функции _SC() из табличных документов.

P.S. Из хелпа к табличным документам:
_SC(n)|1 сумма из n-ой колонки у того же
сотрудника. Здесь подразумевается n-ая по порядку
следования в табличном документе колонка, а не
колонка, с кодом n.

P.P.S. Текст функции _SC() очень компактный , но не понятный для меня
Back to top
View user's profile Send private message
nordk



Joined: 27 Jun 2005
Posts: 1000
Location: Горбунов Константин
Occupation: БЭСТ-Партнер
Interests: СПб

PostPosted: 27 Jul 2007 11:36    Post subject: Reply with quote

Думаю это не так просто.
Содержимое лежэит в массиве aLines
Он Вам недоступен.
Значит Вам надо создавать самому этот массив, самому его заполнять.
Если это Вам нужно во время рассчета.
Если после рассчета по посчитанным суммам - то тогда из поля БД.
Еще раз повторяю - Вы не пишете цель конечную и помогать Вам трудно. Явно что изначально постановка задачи некорректна и надо озвучить всю задачу от начала до конца а не отдельный ее метод, который по всей видимости так как Вам нужно будет решаться очень непросто. Надо пересматривать путь решения вопроса в принципе, а для этого надо понимать конечную цель и все имеющиеся исходные данны
Back to top
View user's profile Send private message Send e-mail
nordk



Joined: 27 Jun 2005
Posts: 1000
Location: Горбунов Константин
Occupation: БЭСТ-Партнер
Interests: СПб

PostPosted: 27 Jul 2007 11:59    Post subject: Reply with quote

Зашел в табличные документы, написал свой плагин вставил в программу и могу ответственно заявить массив aLines в отладчике виден - берите из него значения и никакие функции Вам не нужны
Back to top
View user's profile Send private message Send e-mail
Дениска



Joined: 26 Feb 2002
Posts: 649



PostPosted: 27 Jul 2007 12:02    Post subject: Reply with quote

nordk wrote:
Думаю это не так просто.
Содержимое лежэит в массиве aLines
Он Вам недоступен.
Значит Вам надо создавать самому этот массив, самому его заполнять.

Чем его заполнять? Если aLines := TDocsC -> aSums, то функция возвращает символ (а не колонку) по порядку

nordk wrote:

Если это Вам нужно во время рассчета.
Если после рассчета по посчитанным суммам - то тогда из поля БД.

Плагин вызываю по Ctrl-F5. Получается массив aLines надо заполнять из БД.


nordk wrote:

Еще раз повторяю - Вы не пишете цель конечную и помогать Вам трудно. Явно что изначально постановка задачи некорректна и надо озвучить всю задачу от начала до конца а не отдельный ее метод, который по всей видимости так как Вам нужно будет решаться очень непросто. Надо пересматривать путь решения вопроса в принципе, а для этого надо понимать конечную цель и все имеющиеся исходные данные.


Я понял, что надо объяснить подробней, но не могу понять, что не понятно ...

В БД данные здесь TDocsC -> aSums и их надо обработать. В БЭСТ-е эти данные мы видем в табличных документах (ЗП - Обработка документов - Табличные документы. Выбираем нужный табличный документ. На демо базе, к примеру, "003 Бригадные наряды"). По Ctrl-F5 вызываем плагин, который должен вывести, к примеру 2 колонку по людя
Back to top
View user's profile Send private message
Дениска



Joined: 26 Feb 2002
Posts: 649



PostPosted: 27 Jul 2007 12:04    Post subject: Reply with quote

nordk wrote:
Зашел в табличные документы, написал свой плагин вставил в программу и могу ответственно заявить массив aLines в отладчике виден - берите из него значения и никакие функции Вам не нужны


Пока писал предыдущий свой пост и вы написали. Может вы выложите свой плагин, который выводит, к примеру, значение второй колонки. И вопрос я думаю закроется
Back to top
View user's profile Send private message
nordk



Joined: 27 Jun 2005
Posts: 1000
Location: Горбунов Константин
Occupation: БЭСТ-Партнер
Interests: СПб

PostPosted: 27 Jul 2007 12:26    Post subject: Reply with quote

Code:
FUNCTION MAIN()
RETURN aLines[2,1]
Back to top
View user's profile Send private message Send e-mail
Дениска



Joined: 26 Feb 2002
Posts: 649



PostPosted: 27 Jul 2007 12:37    Post subject: Reply with quote

nordk wrote:
Code:
FUNCTION MAIN()
RETURN aLines[2,1]


Запускаю из табличного документа и получаю: "Переменная не существует."

А вы откуда запускаете и какое значение выдает aLines[2,1]?

P.S. Проверяю на Б4+12.01СП39
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic   printer-friendly view     Forum Index -> Программирование в БЭСТ-4 All times are GMT + 4 Hours
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © phpBB Group

Rambler
Rambler's Top100 Рейтинг@Mail.ru