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

На CSP-странице из JS-функции делаю вызов серверной процедуры:
Код: plaintext
1.
var list=#server(..SomeList(text))#;

Если длина переменной text больше какого-то значения (приблизительно 20K), то в методе SomeList параметр передается как экземпляр %CSP.CharacterStream.
Проблема в том, то этот поток пустой, то есть ни каких данных не содержит.

Кто-нибудь сталкивался с необходимостью передавать большие текстовые блоки со страницы в серверные методы? Каким путем можно пойти?
...
Рейтинг: 0 / 0
Вызов серверного метода и %CSP.CharacterStream
    #36959645
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сталкивался, только поток не был пустым, из него все нормально читалось.
...
Рейтинг: 0 / 0
Вызов серверного метода и %CSP.CharacterStream
    #36959658
MaWr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<script language="CACHE" runat="server" method="SomeList" arguments="text" returnType="%String">
 if $IsObject(text) {
	Set file="MyFile.txt"
	Do text.Rewind()
	Open file:"waes": 1 
	Use file
	Do text.OutputToDevice()
	Close file
 }
</script>

MyFile.txt пустой :(
...
Рейтинг: 0 / 0
Вызов серверного метода и %CSP.CharacterStream
    #36959669
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaWr , у тебя в

Код: plaintext
arguments="text"

не указан тип параметра... Возможно ему "подставляется" что-то по умолчанию...

Ты полный тестовый пример страницы покажи.
...
Рейтинг: 0 / 0
Вызов серверного метода и %CSP.CharacterStream
    #36960027
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Действительно, очень грязный пример.
Ошибка может быть где угодно, первое что думается - невозможна запись в файл
(и, кстати, не нравится файл без полного пути)

Вот тут сделал пример - все работает
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
<html>
<body>
<pre>
<server>
s data=%request.Get("data")
if $isObject(data)
	{d data.OutputToDevice()
	}
else
	{w data
	}
</server>
</pre>
<form action='#(%request.PageName)#' method=post>
<button onclick=this.form.submit()>test</button><br>
<textarea name=data cols= 100  rows= 50 ></textarea>
</script>
</form>
</body>
</html>
...
Рейтинг: 0 / 0
Вызов серверного метода и %CSP.CharacterStream
    #36960088
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прочитал ваш вопрос еще раз, понял, что вы делаете не это.
Вот вам второй пример, он тоже работает (у меня передало 462 кб, столько, все, что находилось в поле)
По прежнему подозрение, что вы теряете данные где-то на уровне JS, либо просто пишете не в тот файл, либо файл заблокирован.
Код: 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.
31.
32.
<html>
<body>
<pre>
<server>
s data=%request.Get("data")
if $isObject(data)
	{d data.OutputToDevice()
	}
else
	{w data
	}
</server>
</pre>
<form action='#(%request.PageName)#' method=post>
<button onclick=this.form.submit()>test1</button><br>
<button onclick=#server(..test(data.value))#>test2</button><br>
<textarea name=data cols= 100  rows= 50 ></textarea>
<script language=cache method=test arguments='data'>
s file=##class(%File).%New()
s file.Name="e:\temp\data.txt"
d file.Open("NWU")
if $isobject(data)
	{d file.CopyFrom(data)
	}
else
	{d file.Write(data)
	}
d file.Close()
</script>
</form>
</body>
</html>
...
Рейтинг: 0 / 0
Вызов серверного метода и %CSP.CharacterStream
    #36960824
MaWr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блок А.Н.,

Ваш пример тоже не работает с большим объемом.
При передаче параметра строкой она в файл пишется. Так что файл свободен.
Может это из за того, что апач и каше разнесены на разные машины?
...
Рейтинг: 0 / 0
Вызов серверного метода и %CSP.CharacterStream
    #36960840
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня иис и на локальной машине.
Может косяки самого шлюза?
...
Рейтинг: 0 / 0
Вызов серверного метода и %CSP.CharacterStream
    #36968612
servit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MaWr ,

Тестировал на версии Caché 2010.2:
Код: 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.
31.
32.
33.
34.
35.
36.
37.
Class sqlru.test Extends %ZEN.Component.page
{

/// Этот блок Style содержит определение CSS-стиля страницы.
XData Style
{
<style type="text/css">
</style>
}

/// Этот XML блок описывает содержимое этой страницы.
XData Contents [ XMLNamespace = "http://www.intersystems.com/zen" ]
{
<page xmlns="http://www.intersystems.com/zen" title="" >
  <button caption="1) Передаём строку" onclick="zenPage.testClient(3200);"/>
  <button caption="2) Передаём поток" onclick="zenPage.testClient(3300);"/>
</page>
}

ClientMethod testClient(N) [Language = javascript]
{
  var s='';
  for (var i= 0 ;i<N;i++) s+='Bună seara';
  zenPage.TestServer(s);
}

ClassMethod TestServer(s As %String) As %Status [ZenMethod]
{
  if $IsObject(s) {
    &js<alert('#(..EscapeHTML("Класс="_s_"\nРазмер объекта="_s.Size))#');>
  }else{
    &js<alert('Размер строки='+#($l(s))#);>
  }
  Quit $$$OK
}

}
Результат:
Код: plaintext
1.
2.
3.
1) Размер строки=32000
2) Класс=6@%Stream.GlobalCharacter
   Размер объекта=33000
...
Рейтинг: 0 / 0
Вызов серверного метода и %CSP.CharacterStream
    #36969670
MaWr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Cache 5.0.21.
Сделал work around.
...
Рейтинг: 0 / 0
Вызов серверного метода и %CSP.CharacterStream
    #36970069
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм, то есть из-за старой версии каше?

Кстати, многие работают на 5.0, для меня странно, нельзя ли перевести приложения на новые версии, хотя бы и используя ту же логику, без новых фич. Вот хотя бы для того, чтобы глюков было меньше.
...
Рейтинг: 0 / 0
Вызов серверного метода и %CSP.CharacterStream
    #36970091
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.многие работают на 5.0, для меня странно, нельзя ли перевести приложения на новые версии, хотя бы и используя ту же логику, без новых фич. Вот хотя бы для того, чтобы глюков было меньше.
Вообще-то это стоит немалых денег...
Причем денег заказчика, а не денег конторы, которой уже заплатили за разработку ПО...
Потом кто-то должен обновить все это на местах...
Потому-то количество желающих делать это за бесплатно стремится к нулю.
...
Рейтинг: 0 / 0
Вызов серверного метода и %CSP.CharacterStream
    #36970121
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В плане, никто не покупает себе апгрейд каше, или сам перевод приложения такой трудоемкий?

>Причем денег заказчика, а не денег конторы, которой уже заплатили за разработку ПО...
Ничего не понял, кто есть кто и кто за что должен заплатить? :-)
...
Рейтинг: 0 / 0
Вызов серверного метода и %CSP.CharacterStream
    #36970189
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.В плане, никто не покупает себе апгрейд каше
Да.
Дюже накладно...

Блок А.Н.Ничего не понял, кто есть кто и кто за что должен заплатить? :-)
Пример:
некая фирма на какой-то момент, подкрепив свои слова рекламными буклетами ои ИС, убедила некоего клиента купить означеную версию Кащея. Установила его во все его подразделения... Написала ПО... И перешла к его сопровождению...
Вроде все неплохо.
Но идёт время... Апетиты у клиента растут... Идет изменение ПО... И тут ему говорят:
- А не докупить ли вам сопровождение на следующий год?
- Сколько стоит?
- Вота скоко...
- Что я за это получу?
- Ну типа апгрейд Кащея бесплатный...
- Что мне это даст?
- Вот буклктики...
- Ну и? Программка-то ваша что?
- Мы сможем применить новые функции...
- Что мне это даст?
- так буклетики же!
- Мне и так нормально... Да еще и за такую цену! За сколько вы переставите Нового Кащея?
- Еще + столь-то...
- Нееее! нафик!!!
Так потерян бесплатный апгрейд...
Идут годы... Цена сопровождения Кащея множится на каждый год... Если апгрейдить еще плюсанут саму переустановку, поездки, командировочные и госстинницы...

Та же Камея... Так и сидит на 5.0... По той же причине - цена апгрейда ожного только Кащея.
...
Рейтинг: 0 / 0
Вызов серверного метода и %CSP.CharacterStream
    #36970252
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ок, с клиентами понятно.

Но производителья ПО это тоже устраивает? Или он выпускает версию своего продукта на новых версиях каше продолжая поддерживать старую?

Просто каше это ведь такая вещь, она очень много себя привносит в программу, и меня, как покупателя, насторожил бы тот факт, что ядро программы 10тилетней давности.
...
Рейтинг: 0 / 0
Вызов серверного метода и %CSP.CharacterStream
    #36970491
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.Но производителья ПО это тоже устраивает?
Если он получает комиссионные с продажи Кащея и зарабатывает на его устаноке - однозначно не устраивает.
Так же не хочется попадать в ситуацию, описаную тобой в самом низу...
Но!
За свой счет разработчик врядли захоче тпокупать клиенту новый Кащей. Все что остаётся это придумывать новые варианты ПО с учетом новых версий Кащея, собирать буклетики и рекламировать все это клиентуре.

Блок А.Н.Или он выпускает версию своего продукта на новых версиях каше продолжая поддерживать старую?
У нас так и работало. Можно было сделать версию для МСМ и Кащея одновременно. Но разработка шла на Кащее...
Теперь есть клиенты у которых еще 5.0.20 стоит... В то время, когда основная масса недавно (!) поставила 2009 и еще не все расчиталисьза лицензии которые им реально нужны.

Вот прикидываю... Когда начать собирать буклетики для Кащея 2010.

Блок А.Н.меня, как покупателя, насторожил бы тот факт, что ядро программы 10тилетней давности.
Да кто же тебе про это расскажет! Все будет на самом острие науки и техники на сколько ты себе сможешь это позволить по деньгам.
Главное чтобы у конкурентов небыло еще новее, лучше и дешевле... А самое главное чтобы лобировали именно тебя, а не кого-то еще.
...
Рейтинг: 0 / 0
Вызов серверного метода и %CSP.CharacterStream
    #36971700
ser_shu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
как еще один вариант можно смотреть подписку на Cache

из плюсов:
- снижается первоначальная стоимость покупки
- можно на необходимый период увеличивать или уменьшать количество пользователей в лицензии, соответственно оплачивая больше или меньше
- в оплату входят обновление версий и техподдержка
- можно менять платформу
- ???

из минусов
- дороже, чем просто обновление и техподдержка
- платить надо своевременно, можно оказаться без работающей СУБД
- ???

Для себя вижу, что для большинства моих проектов эта схема работает. Но нужно очень четко прояснять с заказчиком, что в случае просрочки или прекращения платежей он останется без СУБД и приложения.

Эта схема подписки Каше очень удобна для проектов SaaS, так как там само приложение идет по подписке.
...
Рейтинг: 0 / 0
Вызов серверного метода и %CSP.CharacterStream
    #36972014
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На мой взгляд, аренда лицензии имеет смысл, так как зачастую заказчик хочет сэкономить и взять по минимуму, а потом оказаться перед фактом, что ему потребуется увеличить число пользователей, либо получить новые возможности, и тогда придется покупать заново или мучаться.
Опять же, при ежегодной оплате лицензии можно запихать ее в затраты, тем самым немного уйти от налога на прибыль.

Другое дело, насколько это дороже получается?
...
Рейтинг: 0 / 0
Вызов серверного метода и %CSP.CharacterStream
    #36972529
ser_shu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блок А.Н.На мой взгляд, аренда лицензии имеет смысл, так как зачастую заказчик хочет сэкономить и взять по минимуму, а потом оказаться перед фактом, что ему потребуется увеличить число пользователей, либо получить новые возможности, и тогда придется покупать заново или мучаться.
Если лицензия с обновлением версий, то заново покупать в этом случае не нужно, только доплатить за желаемое.

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

Блок А.Н.Опять же, при ежегодной оплате лицензии можно запихать ее в затраты, тем самым немного уйти от налога на прибыль.
Это да, хотя обычно делают ускоренную амортизацию и тоже списывают в затраты.
Но подписка совсем чистые затраты без лишних вопросов проверяющих.

Блок А.Н.Другое дело, насколько это дороже получается?

Надо рассматривать конкретную ситуацию.
Будет ли покупаться сразу максимум или поэтапно по мере внедрения, будет ли оплачиваться сопровождение, тип лицензии...

Навскидку - годовая подписка в 1.4-1.8 раз дороже годового полного сопровождения аналогичной закупленной лицензии.

Сейчас бизнес все динамичнее (даже без кризиса) и уменьшение рабочих мест в 2-3 раза происходит легко и часто. В таком случае подписка просто выгодна (и лицензию не покупал, и за лишние рабочие места не платишь).

Поэтому надо смотреть конкретную ситуацию и просчитывать на 2-5 лет.
...
Рейтинг: 0 / 0
19 сообщений из 19, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Вызов серверного метода и %CSP.CharacterStream
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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