Створення нового типу довідника аналітики

Створення нового типу довідника аналітики

Сообщение petroffcomm » Чт фев 12, 2009 3:46 pm

Тут ещё вопросы возникли.
Вопрос 1.
Открываем, руководство, стр.4, листинг 3
Код: Выделить всё
<Tables>
   <table name="CL" />
   <table name="CLRELCLCL" ID="FWID_CL" />
   <table name="CL_KOMPL"  ID="FWID_CL" />
</Tables>

Что такое ID для таблицы и почему для разных таблиц он одинаковый?

Вопрос 2.
Где создаются таблицы, структура которых описывется в xml-файлах папки /JDebet/userData/usrSTRU? Я использую MySQL-сервер, однако в схеме данных таблиц, создаваемых в примере, не нашел.

Вопрос 3.
В комментарии к листингу 4 упоминается псевдоним для таблицы. Мне из листингов не понятно, к какой таблице имеет отношение, хотя есть подозрения, что к CL_KOMPL. Поясните, пожалуйста.

Вопрос 4.
из комментария к листингу 5:
Если
"CL_KOMPL" – ім'я таблиці, що приєднується.
"kompl" – псевдонім цієї таблиці.

То как может быть, что:
"FWID_CL", "Fwid" – поля таблиць, за якими ці таблиці об'єднуються.

Это ведь имя таблицы и её псевдоним. Поясните, пожалуйста, что имеется в виду.
Аватара пользователя
petroffcomm
Активист
Активист
 
Сообщения: 32
Зарегистрирован: Чт фев 05, 2009 1:22 pm

Re: Створення нового типу довідника аналітики

Сообщение AlexL » Чт фев 12, 2009 6:00 pm

petroffcomm писал(а):Тут ещё вопросы возникли.
Вопрос 1.
Открываем, руководство, стр.4, листинг 3
Код: Выделить всё
<Tables>
   <table name="CL" />
   <table name="CLRELCLCL" ID="FWID_CL" />
   <table name="CL_KOMPL"  ID="FWID_CL" />
</Tables>

Что такое ID для таблицы и почему для разных таблиц он одинаковый?

В атрибуте ID указывается поле в котором храниться уникальный идентификатор объекта. Если он не указан используется поле "FWID".

Общие данные всех справочников аналитики хранятся в двух таблицах ^CL(COM_CL) и ^CL_RELCLCL (COM_CL_RELCLCL). В ^CL – наименование элемента справочника. ^CL_RELCLCL – к каким справочникам относится данный элемент. Связываются по полям ^CL.FWID = ^CL_RELCLCL.FWID_CL. Отношение один к одному, кроме элементов справочника вида «Юридические лица» - там один ко многим, так как один элемент может находится сразу в нескольких справочника.
Справочники (кроме простого вида) используют еще одну таблицу, где хранят свои уникальные данные. В данном примере это таблица ^CL_KOMPL (COM_CL_KOMPL).

Вопрос 2.
Где создаются таблицы, структура которых описывется в xml-файлах папки /JDebet/userData/usrSTRU? Я использую MySQL-сервер, однако в схеме данных таблиц, создаваемых в примере, не нашел.

В базе данных указанной в соответствующих настройках соединения. По умолчанию dpbase. Таблицы создадутся после выполнения обновления структур данных. Искать под именами COM_CL_KOMPL и COM_CL_KOMPL_ROW. Приставка COM – это значение атрибута sys в описании таблицы
Код: Выделить всё
<table attr="" dospath="cdbf" path="cl_mdb" pattern="CL_KOMPL" sys="com" table="CL_KOMPL"></table>

Атрибут dospath можно не писать, он не используется.
Вопрос 3.
В комментарии к листингу 4 упоминается псевдоним для таблицы. Мне из листингов не понятно, к какой таблице имеет отношение, хотя есть подозрения, что к CL_KOMPL. Поясните, пожалуйста.

kompl.FKOD - используется, чтобы получить данные из привязаных таблиц. kompl - идентификатор таблицы в наборе данных, FKOD имя ее поля. Пояснение ниже.
Вопрос 4.
из комментария к листингу 5:
Если Цитата:
"CL_KOMPL" – ім'я таблиці, що приєднується.
"kompl" – псевдонім цієї таблиці.


То как может быть, что: Цитата:

"FWID_CL", "Fwid" – поля таблиць, за якими ці таблиці об'єднуються.


Это ведь имя таблицы и её псевдоним. Поясните, пожалуйста, что имеется в виду.

Код: Выделить всё
this.subTie("CL_KOMPL", "kompl", "FWID_CL", "Fwid");

Функция subTie используется для привязки дополнительной таблицы (например справочника). Основной таблицей при просмотре справочника аналитики является представление (view) LISTCL (объединение ^CL и ^CL_RELCLCL).
CL_KOMPL - имя таблицы которую мы привязываем.
kompl - псевдоним с помощью которого мы можем к ней обратиться для считывания данных
FWID_CL – поле, идентификатор записи в таблице ^CL_KOMPL.
FWID - поле главной таблицы.
То есть, при перемещении по основной таблице, привязанная (CL_KOMPL) позиционируется на запись с FWID_CL равной полю FWID главной.
Аватара пользователя
AlexL
Программист
 
Сообщения: 88
Зарегистрирован: Вт сен 12, 2006 9:32 pm

Сообщение petroffcomm » Пт фев 13, 2009 12:23 am

Спасибо :)
Аватара пользователя
petroffcomm
Активист
Активист
 
Сообщения: 32
Зарегистрирован: Чт фев 05, 2009 1:22 pm

Сообщение petroffcomm » Вс июн 07, 2009 2:23 pm

При выполнении всех шагов руководства по созданию нового справочника аналитики в конечном итоге при попытке редактировать запись из полученного справочника "Характеристики комплектующих" получаю:

Код: Выделить всё
select * from  dpbase.com_cl cl inner join dpbase.com_clrelclcl rel on cl.fwid=rel.fwid_cl left join dpbase.com_cl_kompl tbl0 on cl.fwid = tbl0.fwid_cl  where fwid = 57743

Column 'fwid' in where clause is ambiguous

То же самое получаю при попытке удаления записи из справочника, но при этом они успешно удаляются.

Версия DebetPlus - 11.6.10 RC3

Что я мог сделать не так?
Аватара пользователя
petroffcomm
Активист
Активист
 
Сообщения: 32
Зарегистрирован: Чт фев 05, 2009 1:22 pm

Сообщение petroffcomm » Пн июн 08, 2009 12:43 am

При этом если запустить этот запрос в MySQL QueryBrowser, то при замене
Код: Выделить всё
where fwid = 57743
на
Код: Выделить всё
where cl.fwid = 57743
, все отлично отрабатывает.
Аватара пользователя
petroffcomm
Активист
Активист
 
Сообщения: 32
Зарегистрирован: Чт фев 05, 2009 1:22 pm

Сообщение Татьяна » Вт июн 09, 2009 8:46 am

В статье есть некоторые неточности. В ближайшее время перепишем. :D
Аватара пользователя
Татьяна
Консультант
 
Сообщения: 808
Зарегистрирован: Пн дек 01, 2008 5:04 pm


Вернуться в Вопросы по разработке в системе

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

cron