BEST logo логотип компании БЭСТ - программы для бизнеса ПРОДАЖИ
+7 (991) 312-04-37
trade@bestnet.ru
ПОДДЕРЖКА
+7 (495) 775-66-76
consult@bestnet.ru
СКАЧАТЬ
Обновления
Дистрибутивы
Авторизация

Логин:
Пароль:
Забыли свой пароль?
Регистрация
ВАШ ВОПРОС

Доступ к Личному кабинету закрыт!
Как получить доступ?


Форум

Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Описание Child в классе MetaBO
 
Добрый день.

Столкнулся с проблемой. Помогите, пожалуйста, разобраться.
Привязываю к своему BO справочник партнёров в качестве child.
Собственно, копипащу код из исходников модуля "Денежные средства", поскольку лень читать мегабайты подробнейшей документации по программированию для БЭСТ-5.

1. Описываю поля справочника партнёров
ACCESS METHOD PART_CODE()
ACCESS METHOD PART_SHORTNAME()
ACCESS METHOD PART_ORGNAME()

2. Описываю метод вызова child
ACCESS METHOD PARTNERS()

3. В методе BO:Init() описываю child
::CHILDLIST :="PARTNERS"
::AddChildName( { "clsPartner" ;
, "CODE" ;
, .T. ;
, mtReadOnly ;
, "PARTNERS" ;
, { "CARD_ID", "TAG_ID", "PART_ID", psSEEK} ;
, { "CARD_ID", "TAG_ID", "PART_ID", psSEEK} ;
} )

4. В строке, возвращаемой методом BO:FieldList() добавляю описание полей справочника партнёров
'PART_CODE;1;6;0;;;'+ ;
'PART_SHORTNAME;1;25;0;;;'+ ;
'PART_ORGNAME;1;254;0;;'

5. Описываю получение child
METHOD BO:PARTNERS()
RETURN ::GetChild(1)

6. Описываю получение полей справочника партнёров
METHOD BO:PART_CODE()
RETURN IIF(::PARTNERS:EOF, "", ::PARTNERS:CODE)
METHOD BO:PART_SHORTNAME()
RETURN IIF(::PARTNERS:EOF, "", ::PARTNERS:SHORTNAME)
METHOD BO:PART_ORGNAME()
RETURN IIF(::PARTNERS:EOF, "", ::PARTNERS:ORGNAME)

7. И получаю ошибку при вызове ::PARTNERS:EOF, ::GetChild(1) возвращает nil
SunSystem :BASE Code : 1004 Class: 'NIL' has no exported method
Operation : EOF
Перекрываю clsPartner из main_cls.bdll, присоединяя clsPartner к своему проекту. Трассирую.
Последнее что наблюдаю - это RETURN lRet в clspartner:Open(), причём lRet=.T.
После этого сразу ошибка.
Изменено: Алексей Новиков - 28.05.2014 14:05:17
С уважением, Новиков Алексей.
 
Алексей а вот такое предложение

попробуй
{ "upper(part_code)", "code", "upper(code)", psSEEK}
эти поля в BO описаны, а твои похоже что нет
 
И не Плохо бы писать вместо:
::PARTNERS:EOF

::PARTNERS:EOF()
 
скобки нужны при работе с таблицей
при работе с объектами класса MetaBo скобки не нужны
 
Цитата
nordk пишет:
при работе с объектами класса MetaBo скобки не нужны


Необязательны, скорее. Всё же это метод, а не данные.
Хотя в моём старом варианте MetaBO метод EOF не описан как ACCESS, в отличие от аналогичного метода у DBTable, например.

Возвращаюсь к AddChildName, нашёл комментарии.

{1 имя создаваемого класса
2 TAG установить при открытии
3 MultiRecType .T. создаваемый класс многострочник, .F. однострочный расширитель
4 ModifyType Режимы редактирования ()
mtReadOnly 0 // 0 - ReadOnly
mtEditOnly 1 // 1 - EditOnly
mtNewEditDel 2 // 2 - EditAndDelete
mtEditChaildOpr 3 // 3 - EditChaildOpr сохранение и взятие на
5 название интерфейса создаваемого класс в паренте
6 массив описания поведения чайлда в паренте
,{ "ID_STRUCT" - выражение для вычисления ключа в паренте
,"TAG_STRUCT" - индекс в чайлде
,"ID_STRUCT" - поле в чайлде для поиска ключа
,psSCOPE},; - либо psSCOPE, либо psSEEK
7 массив описания поведения чайлда в классе документа
например модель накладная - строки накладной - налоги под каждую строку
т.к. как установить на налоги скоп сик и т.д. напрямую от док-та
,{ "ID_STRUCT"
,"TAG_STRUCT"
,"ID_STRUCT"
,psSCOPE}
8 .F. по умолчанию, брать чаилда на редактирование и блокировать записи. переменная AlwaysLockRecord

}

Поэтому да, я напутал с параметрами. CARD_ID у меня в паренте нет.
Изменено: Алексей Новиков - 29.05.2014 09:18:04
С уважением, Новиков Алексей.
 
Ну мне мой программист сразу подсказал что связка не работает
 
Заведу-ка я себе программиста...
Почём они сейчас?
С уважением, Новиков Алексей.
 
ууууууууууууу
Страницы: 1
Читают тему (гостей: 1)