powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / ListBuild на стороне клиента
25 сообщений из 25, страница 1 из 1
ListBuild на стороне клиента
    #36497881
Фотография DirksDR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый вечер!

Недавно читал где-то в документации про ListBuild на стороне клиента. Вроде, как класс с методами List,ListGet и т.д. для разбора списков, полученных с сервера.
Второй день не могу найти это описание. Ткните меня носом,плз, в это описание.
Cache 2009.1.

Заодно: ищу более-менее развернутый пример использования VisM. Предполагаю для начала освоить Excel (т.е. VBA) и VisM. Подскажите ссылку на sample близкой тематики.

Спасибо.
...
Рейтинг: 0 / 0
ListBuild на стороне клиента
    #36497988
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С первой частью вопроса: немного про списки + поиск по форуму
Со второй: О боги! Когда же это прекратится! Начните лучше с xhtml, css и javascript, сохраните себе лет 5 жизни.
...
Рейтинг: 0 / 0
ListBuild на стороне клиента
    #36498612
MX-9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DirksDR,

EXCEL-VBA на стороне клиента достаточно продвинут
в нашей системе "MX"
На сервере действует многопользовательский виртуальный
EXCEL встроенный в CACHE

Программирование отсутствует - формы рисует мышка
а запросы сидят в ячейках EXCEL в виде спец формул
...
Рейтинг: 0 / 0
ListBuild на стороне клиента
    #36498702
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MX-9EXCEL-VBA на стороне клиента достаточно продвинут
в нашей системе "MX"

А я все же поддержу doublefint. Думаю, окажись БЫ Вы "в начале пути" в 2010 году, вы БЫ Excel не выбрали... и про VisM подумали бы 10 раз ;) А если еще прикинуть, что и обучение БЫ Вы закончили недавно - год, два назад, то и подавно...
...
Рейтинг: 0 / 0
ListBuild на стороне клиента
    #36498781
Фотография DirksDR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefint
С первой частью вопроса: немного про списки + поиск по форуму
Со второй: О боги! Когда же это прекратится! Начните лучше с xhtml, css и javascript, сохраните себе лет 5 жизни.

1.Спасибо, немного не то, это все-таки списки на сервере.
2.Есть специфика задачи, может быть историческая.
Хочу, чтобы ввод данных из экселя выполнялся в один прием: сцепить ключи и значения в списки и передать через параметры VisM за одно обращение.
Кроме того, данные собираюсь хранить в формате SqlStorage, структура глобали примерно такая:
^ValueClock(Date, Clock, <ид.точки замера>)=$lb(value,status,...).
Боюсь пролететь с методами OpenID и др. для такой структуры.
...
Рейтинг: 0 / 0
ListBuild на стороне клиента
    #36498796
Фотография DirksDR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MX-9,

Рад за Вас, но чтобы понять, подойдет ли это для моей задачи, нужно более подробное описание.
...
Рейтинг: 0 / 0
ListBuild на стороне клиента
    #36498853
MX-9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolesovMX-9EXCEL-VBA на стороне клиента достаточно продвинут
в нашей системе "MX"

А я все же поддержу doublefint. Думаю, окажись БЫ Вы "в начале пути" в 2010 году, вы БЫ Excel не выбрали... и про VisM подумали бы 10 раз ;) А если еще прикинуть, что и обучение БЫ Вы закончили недавно - год, два назад, то и подавно...

Да - совершенно с Вами согласен

СЕГОДНЯ -
как любой среднестатистический выпускник
окончательно одурманеный глобальной пропагандой SQL
я вообще бы не выбрал CACHE !

или начал бы раскручивать жуткий конгломерат из xhtml, css и javascript
а потом лет через 5 завязал с CACHE
и вернулся на общепринятые реляционные системы

Однако повезло ..
В нужное время, за правильным горячительным
напитком, с ровными пацанами из СП-АРМ, прикинули попробовать
применить EXCEL в роли клиента -
и оно ж таки нехило РАБОТАЕТ
в том числе как замена пресловутой "1-с".
С обьектами, транзакциями, изоляцией, откатами
- со всем джентльменским набором.
...
Рейтинг: 0 / 0
ListBuild на стороне клиента
    #36498864
MX-9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DirksDRMX-9,

Рад за Вас, но чтобы понять, подойдет ли это для моей задачи, нужно более подробное описание.

Пришлите глобали и что хотите видеть в EXCEL

mx@enters.eu
kosinec
@metalurgs.lv
...
Рейтинг: 0 / 0
ListBuild на стороне клиента
    #36498880
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DirksDR,

Так Вам данные в Ексель вЫвести нужно? или через него ввести в систему?

В первом случае есть вариант создать на сервере временный файл в виде аштээмэль и отправить его клиенту, подставив в заголовке, что он - екселевский.

Получите:
- независимость от реализации екселя и ВБА у конкретного клиента
- возможность тот же контент вывести просто на странице или, в перспективе, показать ПДФ-ку тем клиентам, которые не в курсе, что такое ексель...

тем более с 2009.1...
...
Рейтинг: 0 / 0
ListBuild на стороне клиента
    #36498902
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MX-9- со всем джентльменским набором.

помнится, в 5-ке можно было переименовать панель управления в "EXCEL.EXE" и побаловаться... интересно, сейчас эта "фича" еще работает?
...
Рейтинг: 0 / 0
ListBuild на стороне клиента
    #36498991
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DirksDR,

Про временный файл я загнул - в общем случае и он не нужен (бодаюсь сегодня с фопом - издержки ;)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
Class app.fop.Excel Extends %CSP.Page
{

ClassMethod OnPreHTTP() As %Boolean [ ServerOnly =  1  ]
{
     d %response.SetHeader("Content-Disposition", "attachment; filename=report.xls")
     s %response.ContentType = "application/vnd.ms-excel; charset=UTF-8"
     s %response.Expires = "Thu, 01 Apr 2003 00:00:00 GMT"
     q  1 
}

ClassMethod OnPage() As %Status [ ServerOnly =  1  ]
{
	w "<html><head><meta http-equiv=""Content-Type"" content=""text/html; charset=windows-1251""></head><body>"
	w "<table>"
	w "<tr>"
	w "<td style=""border:1 solid; color:red;"">1</td>"
	w "<td><a href = http://localhost/csp/ns/app.fop.Excel.cls>сверлиться</a></td>"
	w "<td>3</td>"
	w "</tr>"
	w "<tr>"
	w "<td>"_$h_"</td>"
	w "<td>21</td>"
	w "<td>31</td>"
	w "</tr>"
	w "</table>"
	w "</body></html>"
	q $$$OK
}

}

Создайте такой класс, скомпилируйте... нажмите на глобус вверху - получите ексель...
css понадобится для оформления - высоты там разные, ширины и проч...

Прорисовка "в реале" не так, конечно, выглядит... но для примера пойдет ;)

Зато дешево и сердито - и не нужно ничего с правами выдумывать - работает стандартная аутентификация...
...
Рейтинг: 0 / 0
ListBuild на стороне клиента
    #36499047
MX-9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kolesovMX-9- со всем джентльменским набором.

помнится, в 5-ке можно было переименовать панель управления в "EXCEL.EXE" и побаловаться... интересно, сейчас эта "фича" еще работает?

кашевские фичи по EXCEL не годятся и не интересуют
- через них не введешь данные в базу

чтобы реализовать на клиенте полноприводный интерактивный
EXCEL-браузер для CACHE
пришлось создать виртуальный EXCEL внутри сервера CACHE
этот виртуальный - он не двумерный а многомерный - намного мощнее ,
является интерактивным двойником клиентского
(независимо и одновременно для каждого из 500 клиентов )
и выполняет всю черную работу - например по запросам
строит многомерные кубы и отображает их двумерные сечения
реальным EXCEL-клиентам

Клиент может вводить данные в базу на сервер
прямо через клетки полученных отчетов - править цифры "на ходу"
система сквозь интерактивная
...
Рейтинг: 0 / 0
ListBuild на стороне клиента
    #36499409
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DirksDR, в той ссылке ссылка :) на форум CACHE_RU и описание структуры списка: длина элемента, тип элемента, значение элемента. Если у Вас есть формат, кто мешает реализовать его на чем угодно?
SQLStorage - только в случае большого объема унаследованных данных и фиксированной системы... Если что-то новое - лучше стандартное хранение (+ bitmap index, +GetStored и прочее)
MX-9
или начал бы раскручивать жуткий конгломерат из xhtml, css и javascript
а потом лет через 5 завязал с CACHE
и вернулся на общепринятые реляционные системы


Хм, вместо международных стандартов форматированного ТЕКСТА Вы предлагаете универсальное? свободное? решение в виде EXCEL и "запросы сидят в ячейках EXCEL в виде спец формул". И КАК?! это связано с возвратом на общепринятые реляционные системы? Почему Вас так тянет писать бизнес логику на чистом SQL?

Еще примерко вывода:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Class csp.csv Extends %CSP.Page [ ProcedureBlock ] {
Parameter CONTENTTYPE = "application/vnd.ms-excel";
Parameter EXPIRES = "Mon, 1 Jan 1900 00:00:00 GMT";
ClassMethod OnPreHTTP() As %Boolean [ ServerOnly ] {
 d %response.SetHeader("Content-disposition", "inline;filename=terribleXHTML.csv") 
 Q  1 
}
ClassMethod OnPage() As %Status {
 f i= 1 : 1 : 100  { w ! f j= 1 : 1 : 10  { w "Данные [",i,"][",j,"];" } }
 Q $$$OK
}
}
Нужен пример ввода?
...
Рейтинг: 0 / 0
ListBuild на стороне клиента
    #36500017
Фотография DirksDR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MX-9,
Я Вам напишу письмом.
kolesov
Спасибо за примеры. Возможно, позже они мне понадобятся. Пока я не готов для работы с CSP.
Мне нужен и ввод, и вывод, близко к тому, о чем пишет MX-9.

doublefint
DirksDR, в той ссылке ссылка :) на форум CACHE_RU и описание структуры списка: длина элемента, тип элемента, значение элемента. Если у Вас есть формат, кто мешает реализовать его на чем угодно?
Структуру списка я знаю и смогу реализовать в VBA. Мне показалось, что я читал про реализацию в Cache, чуть ли не класс в составе FACTORY, который обеспечивает работу со списками...
Приснилось, наверное :).
...
Рейтинг: 0 / 0
ListBuild на стороне клиента
    #36500081
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Такой класс и вправду есть, ищете в док-е "The SysList Class". Не пользовался, поэтому опытом не поделюсь :)
Просто из любопытства: Вы за скорость боретесь? Если да, то откуда уверенность в том, что Вы на клиенте VBA (пусть даже через ActiveX) сформируете список быстрее, чем это сделает Cache с "родной" встроенной поддержкой списков?
...
Рейтинг: 0 / 0
ListBuild на стороне клиента
    #36500160
MX-9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey MaslovТакой класс и вправду есть, ищете в док-е "The SysList Class". Не пользовался, поэтому опытом не поделюсь :)
Просто из любопытства: Вы за скорость боретесь? Если да, то откуда уверенность в том, что Вы на клиенте VBA (пусть даже через ActiveX) сформируете список быстрее, чем это сделает Cache с "родной" встроенной поддержкой списков?

Алексей
привет !

сегодня наш EXCEL-VBA-клиент выдает на экран от сервера CACHE
находящегося в этой же локальной сети
примерно 1000 строк (по 100 символов каждая ) за 1 секунду

через Интернет на порядок медленнее

интересно бы сравнить с "родной встроенной"
...
Рейтинг: 0 / 0
ListBuild на стороне клиента
    #36500197
Фотография DirksDR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey MaslovТакой класс и вправду есть, ищете в док-е "The SysList Class". Не пользовался, поэтому опытом не поделюсь :)
Просто из любопытства: Вы за скорость боретесь? Если да, то откуда уверенность в том, что Вы на клиенте VBA (пусть даже через ActiveX) сформируете список быстрее, чем это сделает Cache с "родной" встроенной поддержкой списков?
Большущее спасибо! То, что надо.
Не думаю, что есть разница в скорости при работе со списками на клиенте и на сервере. Я хочу выиграть в скорости за счет уменьшения количества обращений к серверу. Не "поштучно" сохранять данные на сервере, а передать их туда списком через VizM. Там разобрать список и сохранить данные.
...
Рейтинг: 0 / 0
ListBuild на стороне клиента
    #36500215
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей, привет! Конечно, MX-9 рвет всех, кто б сомневался :)
Имел в виду немного другое, а именно, что формирование списка на клиенте VBA едва ли будет быстрее, чем вызов серверной функции (в случае VisM), которая примет строку с разделителями и выполнит нечто вроде:
Код: plaintext
1.
2.
3.
function(P0,P1,P2,P3)
 set ^SomeGlobal(P0,P1,P2)=$LISTFROMSTRING(P3,$$$DELIMITER)
 quit  1 
...
Рейтинг: 0 / 0
ListBuild на стороне клиента
    #36500400
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не "поштучно" сохранять данные на сервере, а передать их туда списком через VizM. Хорошая идея, я за! :) В таком случае тем более непонятно, зачем формировать список в формате $List, если он служит только для передачи данных. Вот простейший тест, показывающий, что разбор списка в Cache - это вовсе не так уж быстро. У меня delim обгоняет list где-то при n > 150, причем при n = 1000 - в 5 раз! При n < 100 list быстрее, но не в разы, да и счет идет на микросекунды. А если так, стоит ли овчинка выделки?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
delim(n) ;список - строка c разделителями
  s str=$$makestr(n)
  ; разбор списка
  s t0=$zh
  s ipos= 1  f i= 1 : 1 :n s ipos0=ipos,ipos=$f(str,",",ipos0),x=$e(str,ipos0,ipos- 2 )
  w "delim n = "_n_" "_($zh-t0),!
  q
list(n) ;список - $list
  s str=$$makestr(n)
  s str=$listfromstring(str)
  ; разбор списка
  s t0=$zh
  s ipos= 1  f i= 1 : 1 :n s x=$lg(str,i)
  w "list  n = "_n_" "_($zh-t0),!
  q
makestr(n) ;формирование списка-строки с разделителями
  n (n)
  s maxlength= 32000 
  s lchunk=maxlength\n
  s chunk=$tr($j("",lchunk)," ","A")
  s str="" f i= 1 : 1 :n- 1  s str=str_chunk_","
  q str_chunk
...
Рейтинг: 0 / 0
ListBuild на стороне клиента
    #36500479
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Немного улучшил код разбора списка-$list:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
list(n) ;список - $list
  s str=$$makestr(n)
  s str=$listfromstring(str)
  ; разбор списка
  s t0=$zh
  s ptr= 0 ,i= 0  while $listnext(str,ptr,x) { s i=i+ 1  }
  w "list (next)     n = "_n_" "_($zh-t0),!
  q  
Теперь он - чемпион. Наверное, ISC специально придумала $listnext, чтобы реабилитировать медленно работающие списки :)
...
Рейтинг: 0 / 0
ListBuild на стороне клиента
    #36500683
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MX-9сегодня наш EXCEL-VBA-клиент выдает на экран от сервера CACHE
находящегося в этой же локальной сети
примерно 1000 строк (по 100 символов каждая ) за 1 секунду
через Интернет на порядок медленнее

Т.е ~10K за десять секунд? Вы шутите?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
Class csp.test10k Extends (%CSP.Page, %Persistent, %Populate) [ ClassType = persistent, ProcedureBlock ] {
Property Name As %String(MAXLEN =  100 ,POPSPEC=".MyPopulate()");
ClassMethod MyPopulate(){ 
	Q ##class(%PopulateUtils).Name()_"; "
	  _##class(%PopulateUtils).City()_"; "
	  _##class(%PopulateUtils).Mission()}
ClassMethod OnPage() As %Status {
 	&html<<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
 	<html><head><title>Test  10000  bytes</title></head><body style="white-space:pre">>
	s gln="^csp.test10kD"
	if $D(@gln)< 10  d ##class(csp.test10k).Populate( 1000 )
	s i="" f { s i=$o(@gln@(i)) q:i=""   w !,$LG(@gln@(i), 2 ) }
	&html<</body></html>>
	Quit $$$OK
}
}
Итого 100 932 байта за 0.406 секунды вместе с генерацией данных через Интернет (Не локальную сеть).
...
Рейтинг: 0 / 0
ListBuild на стороне клиента
    #36500733
Alexey Maslov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefint,1000 строк (по 100 символов каждая ) за 1 секундуМожет, у меня с арифметикой плохо, но разве это не ~100 К/сек? С учетом накладных расходов Excel, ИМХО, не такой уж плохой результат...
...
Рейтинг: 0 / 0
ListBuild на стороне клиента
    #36500780
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alexey Maslov, с математикой плохо у меня. Конечно 100K. Но пример-то как раз на 100K, тоже вроде не медленно.
...
Рейтинг: 0 / 0
ListBuild на стороне клиента
    #36501147
MX-9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefint,

дзякую за цiкавы прыклад

сапрауды, як адзначае Аляксей Маслау,
EXCEL не дужа хуткая система, и нам патрабавалася
шмат намаганняу каб выйсти на узровень
1000 радкоу
але што зроблена - то зроблена
вынiк даволи прыемлемы.
...
Рейтинг: 0 / 0
ListBuild на стороне клиента
    #36501161
f12mokb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Рядом тема f12mokb, может будет полезно. Использую Excel как драйв печаити, а раньше писал вполне благополучный софт с внедрением VisM в Excel ( единственное общее мемто в прдуктах Microsoft, котрое способно принять все! )
...
Рейтинг: 0 / 0
25 сообщений из 25, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / ListBuild на стороне клиента
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]