Куда записываются выбранные записи в интерфейсе PickCatalog
Модераторы: m0p3e, edward_K, Модераторы
-
- Постоянный обитатель
- Сообщения: 147
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Новосибирск
- Контактная информация:
Куда записываются выбранные записи в интерфейсе PickCatalog
Столкнулся с проблемой - необходим отчет по нескольким СЕ ШР; вот нашел подходящий интерфейс с множественным выбором СЕ ШР, PickCatalog2, разобрался с параметрами (runinterface(pickcatalog2,-11,mynrec,100)). Вопрос: кто-нибудь знает, КУДА PickCatalog2 записывает nrec'и выбранных элементов? Ctrl+F4, "pick.wlist" не помогает - видимо, не в Pick. Куда же?
-
- Постоянный гость
- Сообщения: 68
- Зарегистрирован: 29 мар 2005, 17:49
Re: Куда записываются выбранные записи в интерфейсе PickCat
А куда еще - туда в Pick
-
- Постоянный обитатель
- Сообщения: 147
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Новосибирск
- Контактная информация:
Re: Куда записываются выбранные записи в интерфейсе PickCat
Я ходил по Pick'у после вызова интерфейса, он (Pick) пустой. Может, кто знает, куда все же записываются выбранные элементы?
-
- Местный житель
- Сообщения: 783
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Москва
- Контактная информация:
Re: Куда записываются выбранные записи в интерфейсе PickCat
В Pick они записываются. Хотя... тама есть куча "временных" таблиц:
PICKVIP, PICKVIP2, PICKVIP3, PICKVIP4, PICKVIP5, PICKBUH, SAVEPICK и др.
Но как правило для выбора используется именно Pick. Как Морзе сказал - верить надоть людям.
Таблица Pick - открывается у тебя в памяти. И туда записываются данные выбора. Ты не замечал, когда выходишь из БД иногда появляется DOS-овское окошко "Идет запись в БД". Оно появляется после того, как ты покрутишь в базе интерактивные отчеты. Или внесешь изменения в DSK-файл.
Пример:
Закрути "Ведомость наличия и износа" в модуле ОС/НМА. Затем загляни в таблицу TObot, TempDescr, TempIer. Там есть такое поле, как Code. Для нашего отчета но должно быть равным 4702.
Так вот, ты не найдешь ни одну запись с таким номером (если, конечно, в базе не хранится какой-нить предыдущий отчет по износу ОС/НМА).
Но как только выйдешь из Галактики, эти записи из ОЗУ твоего компа туда попадут. Ты снова загляни в эти таблицы и увидишь, что записи с кодом 4702 там появились.
Работай с таблицей Pick. Там должно твое чудо лежать. То, что они до твоего выхода из Галактики лежат не в физической таблице, а в памяти компа - тебя не должно волновать. Если только ты не планируешь, что выбором будет делать один пользователь, а пользоваться выбранными элементами - другой пользователь. Тогда, чтобы выбранные элементы попали в физическую таблицу и другой пользователь мог их увидеть - первому нужно будет перегрузить Галактику.
PICKVIP, PICKVIP2, PICKVIP3, PICKVIP4, PICKVIP5, PICKBUH, SAVEPICK и др.
Но как правило для выбора используется именно Pick. Как Морзе сказал - верить надоть людям.
Таблица Pick - открывается у тебя в памяти. И туда записываются данные выбора. Ты не замечал, когда выходишь из БД иногда появляется DOS-овское окошко "Идет запись в БД". Оно появляется после того, как ты покрутишь в базе интерактивные отчеты. Или внесешь изменения в DSK-файл.
Пример:
Закрути "Ведомость наличия и износа" в модуле ОС/НМА. Затем загляни в таблицу TObot, TempDescr, TempIer. Там есть такое поле, как Code. Для нашего отчета но должно быть равным 4702.
Так вот, ты не найдешь ни одну запись с таким номером (если, конечно, в базе не хранится какой-нить предыдущий отчет по износу ОС/НМА).
Но как только выйдешь из Галактики, эти записи из ОЗУ твоего компа туда попадут. Ты снова загляни в эти таблицы и увидишь, что записи с кодом 4702 там появились.
Работай с таблицей Pick. Там должно твое чудо лежать. То, что они до твоего выхода из Галактики лежат не в физической таблице, а в памяти компа - тебя не должно волновать. Если только ты не планируешь, что выбором будет делать один пользователь, а пользоваться выбранными элементами - другой пользователь. Тогда, чтобы выбранные элементы попали в физическую таблицу и другой пользователь мог их увидеть - первому нужно будет перегрузить Галактику.
-
- Постоянный обитатель
- Сообщения: 147
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Новосибирск
- Контактная информация:
Re: Куда записываются выбранные записи в интерфейсе PickCat
Про временные таблицы я в курсе! Просто я написал вот какой кусок кода:
.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 после вызова интерфейса пуста.
.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 после вызова интерфейса пуста.
-
- Посетитель
- Сообщения: 46
- Зарегистрирован: 29 мар 2005, 17:49
Re: Куда записываются выбранные записи в интерфейсе Pick
<HTML>Врут все
В маркере они хранятся, называется CatalogsMarker</HTML>
В маркере они хранятся, называется CatalogsMarker</HTML>
-
- Постоянный обитатель
- Сообщения: 147
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Новосибирск
- Контактная информация:
Re: Куда записываются выбранные записи в интерфейсе PickCat
Ну вот, теперь осталось найти этот CatalogsMarker:( А правда, что это за таблица такая? В словаре таблицы с таким именем нет!
Re: Куда записываются выбранные записи в интерфейсе PickCat
Маркер!!!!! Не таблица!
Смотри функции для работы с маркерами.
Смотри функции для работы с маркерами.
-
- Местный житель
- Сообщения: 783
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Москва
- Контактная информация:
Re: Куда записываются выбранные записи в интерфейсе PickCat
Если не ошибаюсь - дока по работе с маркерами лежит в разделе "Опыт" на этом сайте.
-
- Абориген
- Сообщения: 943
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: External Developer
- Контактная информация:
Re: Куда записываются выбранные записи в интерфейсе PickCat
Блин, читайте RTFM !!!
Маркер - это массив памяти !!!
Читайте доку по маркерам !!!
Маркер - это массив памяти !!!
Читайте доку по маркерам !!!
-
- Постоянный обитатель
- Сообщения: 147
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Новосибирск
- Контактная информация:
Re: Куда записываются выбранные записи в интерфейсе PickCat
Спасибо за объяснения, доку скачал... Эх, я-то думал - зацеплю старый-добрый Pick where pivk.wlist=xx, да и все:(
-
- Местный житель
- Сообщения: 783
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: Москва
- Контактная информация:
Re: Куда записываются выбранные записи в интерфейсе PickCat
Класс!!!
3 чела ответили одновременно про одно и то же )
3 чела ответили одновременно про одно и то же )
Re: Куда записываются выбранные записи в интерфейсе PickCat
>Эх, я-то думал - зацеплю старый-добрый Pick
Кто из них старее, а тем более добрее можно поспорить
Кто из них старее, а тем более добрее можно поспорить
-
- Посетитель
- Сообщения: 46
- Зарегистрирован: 29 мар 2005, 17:49
Re: Куда записываются выбранные записи в интерфейсе Pick
<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>
// 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>