Страница 1 из 2

Куда записываются выбранные записи в интерфейсе PickCatalog

Добавлено: 10 окт 2003, 09:45
St.Anislav
Столкнулся с проблемой - необходим отчет по нескольким СЕ ШР; вот нашел подходящий интерфейс с множественным выбором СЕ ШР, PickCatalog2, разобрался с параметрами (runinterface(pickcatalog2,-11,mynrec,100)). Вопрос: кто-нибудь знает, КУДА PickCatalog2 записывает nrec'и выбранных элементов? Ctrl+F4, "pick.wlist" не помогает - видимо, не в Pick. Куда же?

Re: Куда записываются выбранные записи в интерфейсе PickCat

Добавлено: 10 окт 2003, 11:57
Galpro_tut
А куда еще - туда в Pick

Re: Куда записываются выбранные записи в интерфейсе PickCat

Добавлено: 10 окт 2003, 12:28
St.Anislav
Я ходил по Pick'у после вызова интерфейса, он (Pick) пустой. Может, кто знает, куда все же записываются выбранные элементы?

Re: Куда записываются выбранные записи в интерфейсе PickCat

Добавлено: 10 окт 2003, 12:56
Deinis
В Pick они записываются. Хотя... тама есть куча "временных" таблиц:
PICKVIP, PICKVIP2, PICKVIP3, PICKVIP4, PICKVIP5, PICKBUH, SAVEPICK и др.
Но как правило для выбора используется именно Pick. Как Морзе сказал - верить надоть людям.
Таблица Pick - открывается у тебя в памяти. И туда записываются данные выбора. Ты не замечал, когда выходишь из БД иногда появляется DOS-овское окошко "Идет запись в БД". Оно появляется после того, как ты покрутишь в базе интерактивные отчеты. Или внесешь изменения в DSK-файл.
Пример:
Закрути "Ведомость наличия и износа" в модуле ОС/НМА. Затем загляни в таблицу TObot, TempDescr, TempIer. Там есть такое поле, как Code. Для нашего отчета но должно быть равным 4702.
Так вот, ты не найдешь ни одну запись с таким номером (если, конечно, в базе не хранится какой-нить предыдущий отчет по износу ОС/НМА).
Но как только выйдешь из Галактики, эти записи из ОЗУ твоего компа туда попадут. Ты снова загляни в эти таблицы и увидишь, что записи с кодом 4702 там появились.

Работай с таблицей Pick. Там должно твое чудо лежать. То, что они до твоего выхода из Галактики лежат не в физической таблице, а в памяти компа - тебя не должно волновать. Если только ты не планируешь, что выбором будет делать один пользователь, а пользоваться выбранными элементами - другой пользователь. Тогда, чтобы выбранные элементы попали в физическую таблицу и другой пользователь мог их увидеть - первому нужно будет перегрузить Галактику.

Re: Куда записываются выбранные записи в интерфейсе PickCat

Добавлено: 10 окт 2003, 13:18
St.Anislav
Про временные таблицы я в курсе! Просто я написал вот какой кусок кода:

.form '1111'
.ard
.var
mynrec:comp;
.endvar
.create view a as select * from pick;
.begin
a.delete pick all;
runinterface(pickcatalog2,-11,mynrec,100);
end.
.fields
a.pick.wlist
.endfields
.{table 'a'
^
.}
.endform

Отчет девственно пуст:(, из чего я заключаю, что таблица pick после вызова интерфейса пуста.

Re: Куда записываются выбранные записи в интерфейсе Pick

Добавлено: 10 окт 2003, 13:51
forummaster
<HTML>Врут все :)

В маркере они хранятся, называется CatalogsMarker</HTML>

Re: Куда записываются выбранные записи в интерфейсе PickCat

Добавлено: 10 окт 2003, 14:03
Deinis
;)

Re: Куда записываются выбранные записи в интерфейсе PickCat

Добавлено: 10 окт 2003, 14:53
St.Anislav
Ну вот, теперь осталось найти этот CatalogsMarker:( А правда, что это за таблица такая? В словаре таблицы с таким именем нет!

Re: Куда записываются выбранные записи в интерфейсе PickCat

Добавлено: 10 окт 2003, 15:02
m0p3e
Маркер!!!!! Не таблица!
Смотри функции для работы с маркерами.

Re: Куда записываются выбранные записи в интерфейсе PickCat

Добавлено: 10 окт 2003, 15:02
Deinis
Если не ошибаюсь - дока по работе с маркерами лежит в разделе "Опыт" на этом сайте.

Re: Куда записываются выбранные записи в интерфейсе PickCat

Добавлено: 10 окт 2003, 15:03
Maverick
Блин, читайте RTFM !!!
Маркер - это массив памяти !!!
Читайте доку по маркерам !!!

Re: Куда записываются выбранные записи в интерфейсе PickCat

Добавлено: 10 окт 2003, 15:57
St.Anislav
Спасибо за объяснения, доку скачал... Эх, я-то думал - зацеплю старый-добрый Pick where pivk.wlist=xx, да и все:(

Re: Куда записываются выбранные записи в интерфейсе PickCat

Добавлено: 10 окт 2003, 16:20
Deinis
Класс!!!
3 чела ответили одновременно про одно и то же :))

Re: Куда записываются выбранные записи в интерфейсе PickCat

Добавлено: 10 окт 2003, 16:23
m0p3e
>Эх, я-то думал - зацеплю старый-добрый Pick
Кто из них старее, а тем более добрее можно поспорить ;)

Re: Куда записываются выбранные записи в интерфейсе Pick

Добавлено: 10 окт 2003, 16:44
forummaster
<HTML>если тебе так удобнее - цепляйся, предварительно скопировар информацию из маркера в Pick. Что-то типа такой функции :

// lHandler - дескриптор маркера
// wpickCode - значение поля Pick.wlist

function marker2pick( var lHandler : longint; wpickCode : word ) : comp ;
var lSize : longint ;
lx : longint ;
cIndex : comp ;
begin
delete all novisual from pick where(( word(wpickCode) == pick.wLisT )) ;

lSize := getmarkercount( lHandler ) ;
marker2pick := comp( lSize ) ;

for( lx:=0; lx<.lSize; lx:=lx+1 )
{
if( getMarker( lHandler, lx, cIndex ) = TRUE )
then{
clearbuffer( tnpick ) ;
pick.wLisT := wpickCode ;
pick.cRec := cIndex ;
insert current pick ;
}
}
end;

а дальше уж и цепляй "старый-добрый Pick where pivk.wlist=xx"

в нашем случае это будет примерно так:
...
.begin
var lHandler : longint ;

runinterface(pickcatalog2,-11,mynrec,100);
lHandler := InitMarker('CatalogsMarker', 8, 200, 10) ;
marker2pick( lHandler, word( 1111 ) ) ;
end.
....
.{table xxxx
.fields
....
.endfields
...
.}</HTML>