powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Пользовательская функция
51 сообщений из 51, показаны все 3 страниц
Пользовательская функция
    #39670139
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго дня всем .

Недавно опять начал заниматься возвратом данных
пользователю в виде json (тему я поднял раньше)
Как можно в Каше возвращать массив при помощью пользовательской функции (типа $$split) ?
В таком виде не работает.
Код: vbnet
1.
2.
3.
4.
split(str,delim)
  f i=1:1:$l(str,delim) s arr(i)=$p(str,delim,i)
  q arr
  ;; 


Спасибо
...
Рейтинг: 0 / 0
Пользовательская функция
    #39670199
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu,
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
split(str,delim,arr)
  s list = $LFS( str, delim ), pointer = 0, i=0
  while $LISTNEXT( list, pointer, item ) {
   s i = i + 1, arr( i ) = item
  }  
  q $$$OK
  ;; 


Использование
Код: vbnet
1.
2.
3.
4.
k arr s arr="" 
if split( str, delim, .arr ) {
 zw arr
}
...
Рейтинг: 0 / 0
Пользовательская функция
    #39670440
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu В таком виде не работает.
Нужно передать еще имя переменной локальной или глобальной, куда писать тот массив.

Код: javascript
1.
2.
3.
4.
5.
split(Str,Name,Dlm)
	n i
	s:$g(Dlm)="" Dlm=","
	f i=1:1:$l(Str,Dlm) s @Name@(i)=$p(Str,Dlm,i)
	q $g(i)
...
Рейтинг: 0 / 0
Пользовательская функция
    #39670570
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за отклики.
Что я мог получить, пока только это:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
brakJson(ip,query) ;
 n $es n $et s $et="g:'$es error"
 s (an,parc,nrbord,rut,dat,ora,lastnode,in,Ret,n,arr)=""
 s data=$p(query,"*",1),parc=$p(query,"*",2),bord=$p(query,"*",3),przn=$p(query,"*",4)
 s j=-1,e=-1
  f  s an=$o(^controlST(an)) q:an=""  d
 . f  s parc=$o(^controlST(an,parc)) q:parc=""  d
 . . f  s nrbord=$o(^controlST(an,parc,nrbord)) q:nrbord=""  d
 . . . f  s rut=$o(^controlST(an,parc,nrbord,rut)) q:rut=""  d
 . . . . f  s ora=$o(^controlST(an,parc,nrbord,rut,ora)) q:ora=""  d
 . . . . . i przn="1.1" s n=n+1,in(ip,n)=an_"\"_parc_"\"_nrbord_"\"_rut_"\"_ora_"\"_$p(^controlST(an,parc,nrbord,rut,ora),"*",1)_$p(^controlST(an,parc,nrbord,rut,ora),"*",2) d
 . . . . . . f i=0:1:$l(in(ip,n),"\")-1 s dummy(i)=$p(in(ip,n),"\",i+1)
 . . . . . . s arr(n)=$$ENCODE^%FCGIJSON("dummy")
 . . . . . i przn="1.2" s n=n+1,in(ip,n)=an_"\"_parc_"\"_nrbord_"\"_rut_"\"_ora_"\"_$p(^controlST(an,parc,nrbord,rut,ora),"*",3) d
 . . . . . . f i=0:1:$l(in(ip,n),"\")-1 s dummy(i)=$p(in(ip,n),"\",i+1)
 . . . . . . s arr(n)=$$ENCODE^%FCGIJSON("dummy")
 . . . . . i przn="1.3" s n=n+1,in(ip,n)=an_"\"_parc_"\"_nrbord_"\"_rut_"\"_ora_"\"_$p(^controlST(an,parc,nrbord,rut,ora),"*",4) d
 . . . . . . f i=0:1:$l(in(ip,n),"\")-1 s dummy(i)=$p(in(ip,n),"\",i+1)
 . . . . . . s arr(n)=$$ENCODE^%FCGIJSON("dummy")
 ; 
 s %fcgi("o","stdout")=$$ENCODE^%FCGIJSON("arr") 
 s %fcgi("o","header","Content-Type")="application/json"
 q
 ;;    


В консоле получаю:
Код: html
1.
2.
3.
GET http://192.168.1.111:8082/cache/tab/brakJson/192.168.1.5/***1.3
[HTTP/1.1 200 OK 10ms]
{"1":"["20180605","1","1232","10","12.30","","3.2","","","","","","","","","",""]","2":"["20180611","2","2067","1","10.15","","","","","","","","","","","",""]","3":"["20180612","1","1240","10","12.30","","","3.3","3.4","","","","","","","",""]","4":"["20180612","2","2039","4","11.20","","3.2","","","","","","","","","",""]","5":"["20180618","3","3748","23","28.25","3.1","3.2","","","","","","","","","",""]","6":"["20180620","1","1201","10","10.20","3.1","3.2","3.3","3.4","3.5","3.6","3.7","3.8","3.9","3.10","3.11",""]","7":"["20180620","1","1230","22","09.20","","3.2","","","","","","","","","",""]","8":"["20180620","2","2404","8","15.32","","","3.3","","","","","","","","",""]","9":"["20180620","3","3759","7","7.35","","3.2","3.3","","","","","","","","",""]","10":"["20180625","2","2111","4","9.32","","3.2","","3.4","","","","","","","",""]","11":"["20180627","2","2039","5","14.23","","3.2","3.3","","","","","","","","",""]","12":"["20180701","3","3736","23","11.25","","3.2","","","","","","","","","",""]","13":"["20180702","2","2109","4","9.45","","","","","","","","","","","",""]"}


А нужно как-то так:
Код: html
1.
2.
3.
4.
[ ["20180605","1","1232","10","12.30","","3.2","","","","","","","","","",""],
  ["20180611","2","2067","1","10.15","","","","","","","","","","","",""],
  ...
["20180701","3","3736","23","11.25","","3.2","","","","","","","","","",""]","13":"["20180702","2","2109","4","9.45","","","","","","","","","","","",""] ];

...
Рейтинг: 0 / 0
Пользовательская функция
    #39670696
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ValeriuА нужно как-то так
Так тебе осталось скобки объекта на скобки массива заменить... И объектовые ключи убрать...
...
Рейтинг: 0 / 0
Пользовательская функция
    #39670718
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa,
Загорелся я прямо вот этим:
https://www.supinfo.com/articles/single/1954-ibrairie-jspdf
еще вот( https://simonbengtsson.github.io/jsPDF-AutoTable/)
т.е. использовать jsPDF для создания отчета ...
С таблицами я разобрался вроде, даже самому понравилось.
Вот еще бы это овладеть и полное счастье !!!
Для этого и хочу привести данные в соответствие.
...
Рейтинг: 0 / 0
Пользовательская функция
    #39670722
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa,
Хотя получать могу и так:
"["20180605","1","1232","10","12.30","","3.2","","","","","","","","","",""], ["20180611","2","2067","1","10.15","","","","","","","","","","","",""], ["20180612","1","1240","10","12.30","","","3.3","3.4","","","","","","","",""], ["20180612","2","2039","4","11.20","","3.2","","","","","","","","","",""], ["20180618","3","3748","23","28.25","3.1","3.2","","","","","","","","","",""], ["20180620","1","1201","10","10.20","3.1","3.2","3.3","3.4","3.5","3.6","3.7","3.8","3.9","3.10","3.11",""], ["20180620","1","1230","22","09.20","","3.2","","","","","","","","","",""], ["20180620","2","2404","8","15.32","","","3.3","","","","","","","","",""], ["20180620","3","3759","7","7.35","","3.2","3.3","","","","","","","","",""], ["20180625","2","2111","4","9.32","","3.2","","3.4","","","","","","","",""], ["20180627","2","2039","5","14.23","","3.2","3.3","","","","","","","","",""], ["20180701","3","3736","23","11.25","","3.2","","","","","","","","","",""], ["20180702","2","2109","4","9.45","","","","","","","","","","","",""], "
...
Рейтинг: 0 / 0
Пользовательская функция
    #39670726
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriuхочу привести данные в соответствие.
Так сам ту строку формируй... Зачем тебе эти кащейские грабли?
...
Рейтинг: 0 / 0
Пользовательская функция
    #39670728
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ValeriuХотя получать могу и так
Вот!
Останется только приклеить скобки массива!
...
Рейтинг: 0 / 0
Пользовательская функция
    #39670767
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa,

Может некрасиво, но где-то так :
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
//**** Add brak SPS !!!
function addJson(aa,mm,dd,pp,tt,rr,tb,pz)  {
    // *** Data in textbox
     var AAAA = document.getElementById(aa).value
     var MM = document.getElementById(mm).value
     var DD = document.getElementById(dd).value
     var AMD = AAAA + MM + DD
     var parc = document.getElementById(pp).value
     var nrbord = document.getElementById(tt).value

   var select = prompt('Select pentru generarea tabelului:(Data*Parc*Trolebuz*)', AMD + "*" + parc + "*" + nrbord + "*" + pz);
   //alert('Ati selectat urmatoarele date: ' + select );

   var adrip = document.getElementById("ipnr").value
   var callback = function(req){
   var rtncode = req.responseText;

  instr = rtncode.split('"["').join("[ [");
  finstr = instr.split('], "').join("] ];");
  console.log(finstr);
  };
  AJAX( "GET", "/cache/tab/brakJson/" + adrip + "/" + select, null, callback );
}


В консоле:
[ [20180605","1","1232","10","12.30","","3.2","","","","","","","","","",""], ["20180611","2","2067","1","10.15","","","","","","","","","","","",""], ["20180612","1","1240","10","12.30","","","3.3","3.4","","","","","","","",""], ["20180612","2","2039","4","11.20","","3.2","","","","","","","","","",""], ["20180618","3","3748","23","28.25","3.1","3.2","","","","","","","","","",""], ["20180620","1","1201","10","10.20","3.1","3.2","3.3","3.4","3.5","3.6","3.7","3.8","3.9","3.10","3.11",""], ["20180620","1","1230","22","09.20","","3.2","","","","","","","","","",""], ["20180620","2","2404","8","15.32","","","3.3","","","","","","","","",""], ["20180620","3","3759","7","7.35","","3.2","3.3","","","","","","","","",""], ["20180625","2","2111","4","9.32","","3.2","","3.4","","","","","","","",""], ["20180627","2","2039","5","14.23","","3.2","3.3","","","","","","","","",""], ["20180701","3","3736","23","11.25","","3.2","","","","","","","","","",""], ["20180702","2","2109","4","9.45","","","","","","","","","","","",""] ];
...
Рейтинг: 0 / 0
Пользовательская функция
    #39670785
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ValeriuМожет некрасиво, но где-то так
Дык!

Код: javascript
1.
2.
var json = '[ [20180605","1","1232","10","12.30","","3.2","","","","","","","","","",""],["20180611","2","2067","1","10.15","","","","","","","","","","","",""]]';
var parsed = JSON.parse(json);
...
Рейтинг: 0 / 0
Пользовательская функция
    #39670810
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa,

Что-то ругается. Видимо неправильно сформировал...
...
Рейтинг: 0 / 0
Пользовательская функция
    #39671382
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ValeriuВидимо неправильно сформировал...
Скорее всего... Либо кавычки, либо запятые, а может скобки. Проверяй комплектность. ;)
...
Рейтинг: 0 / 0
Пользовательская функция
    #39671498
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa,
Если честно, ничего не понимаю.
Вроде все правильно ...
Если я по отдельности ставлю в тело программы строки json (я их из консоли беру !!!) - Работает !!!
Как только пытаюсь кормить ее данными в целом - НЕТ !!!
Говорит что это не массив ...
На JS:
Код: javascript
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.
38.
39.
//**** Add brak SPS !!!
function addJson(aa,mm,dd,pp,tt,rr,tb,pz)  {

    // *** Data in textbox
     var AAAA = document.getElementById(aa).value
     var MM = document.getElementById(mm).value
     var DD = document.getElementById(dd).value
     var AMD = AAAA + MM + DD
     var parc = document.getElementById(pp).value
     var nrbord = document.getElementById(tt).value

   var select = prompt('Select pentru generarea tabelului:(Data*Parc*Trolebuz*)', AMD + "*" + parc + "*" + nrbord + "*" + pz);

   var adrip = document.getElementById("ipnr").value
   var callback = function(req){
   var rtncode = req.responseText;

   var instr = rtncode.split('][').join('],[');
   var rows="[" + instr +"];"
   console.log(rows);
   
   var result = Array.isArray(rows);
   alert(result);

   var columns = ["Data", "Parc", "Nr/Brd", "Ruta", "Ora", "LipsaS","LipsaT", "LipsaTr", 
	      	       "LipsaSa", "LipsaD", "LipsaR", "LipsaF", "LipsaTl","LipsaIf", "LipsaIn", "LipsaSb"]; 

  //var rows = [["20180605","1","1232","10","12.30","","3.2","","","","","","","","","",""],
  //            ["20180611","2","2067","1","10.15","","","","","","","","","","","",""]];

var doc = new jsPDF('l', 'pt','a4');
doc.autoTable(columns, rows);
doc.save('table.pdf');

  };

  AJAX( "GET", "/cache/tab/brakJson/" + adrip + "/" + select, null, callback );

}


В консоле:
[["20180605","1","1232","10","12.30","","3.2","","","","","","","","","",""],["20180611","2","2067","1","10.15","","","","","","","","","","","",""],["20180612","1","1240","10","12.30","","","3.3","3.4","","","","","","","",""],["20180612","2","2039","4","11.20","","3.2","","","","","","","","","",""],["20180618","3","3748","23","28.25","3.1","3.2","","","","","","","","","",""],["20180620","1","1201","10","10.20","3.1","3.2","3.3","3.4","3.5","3.6","3.7","3.8","3.9","3.10","3.11",""],["20180620","1","1230","22","09.20","","3.2","","","","","","","","","",""],["20180620","2","2404","8","15.32","","","3.3","","","","","","","","",""],["20180620","3","3759","7","7.35","","3.2","3.3","","","","","","","","",""],["20180625","2","2111","4","9.32","","3.2","","3.4","","","","","","","",""],["20180627","2","2039","5","14.23","","3.2","3.3","","","","","","","","",""],["20180701","3","3736","23","11.25","","3.2","","","","","","","","","",""],["20180702","2","2109","4","9.45","","","","","","","","","","","",""]];
...
Рейтинг: 0 / 0
Пользовательская функция
    #39671520
doublefint
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu, уберите точку с запятой ; после закрывающей скобки массива
Код: javascript
1.
 var rows="[" + instr +"];" // <- вот тут 


Код: javascript
1.
 var rows="[" + instr +"]" // <- должно быть вот так 


И почему бы не сформировать запятые еще на сервере?
Код: javascript
1.
 var instr = rtncode.split('][').join('],[') // <- эмм, :\  
...
Рейтинг: 0 / 0
Пользовательская функция
    #39671530
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
doublefint,

Попробовал и так (убрал) безрезультатно.
На стороне сервера Каше тоже не очень удобно
s arr=arr_$$ENCODE^%FCGIJSON("dummy")_","
- все ровно на JS приходится менять
...
Рейтинг: 0 / 0
Пользовательская функция
    #39671583
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ValeriuЕсли честно, ничего не понимаю.
У меня все работает...

Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
var str='['
str+='["20180605","1","1232","10","12.30","","3.2","","","","","","","","","",""],'
str+='["20180611","2","2067","1","10.15","","","","","","","","","","","",""],'
str+='["20180612","1","1240","10","12.30","","","3.3","3.4","","","","","","","",""],'
str+='["20180612","2","2039","4","11.20","","3.2","","","","","","","","","",""],'
str+='["20180618","3","3748","23","28.25","3.1","3.2","","","","","","","","","",""],'
str+='["20180620","1","1201","10","10.20","3.1","3.2","3.3","3.4","3.5","3.6","3.7","3.8","3.9","3.10","3.11",""],'
str+='["20180620","1","1230","22","09.20","","3.2","","","","","","","","","",""],'
str+='["20180620","2","2404","8","15.32","","","3.3","","","","","","","","",""],'
str+='["20180620","3","3759","7","7.35","","3.2","3.3","","","","","","","","",""],'
str+='["20180625","2","2111","4","9.32","","3.2","","3.4","","","","","","","",""],'
str+='["20180627","2","2039","5","14.23","","3.2","3.3","","","","","","","","",""],'
str+='["20180701","3","3736","23","11.25","","3.2","","","","","","","","","",""],'
str+='["20180702","2","2109","4","9.45","","","","","","","","","","","",""]'
str+=']';
var arr=JSON.parse(str);
alert(arr[0][0]);
...
Рейтинг: 0 / 0
Пользовательская функция
    #39671592
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот такой примерчик еще...

Код: javascript
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.
<!DOCTYPE html>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=windows-1251' />
<script src='https://code.jquery.com/jquery-latest.js'></script>
<!--
<script src="https://code.angularjs.org/1.3.9/angular.min.js"></script>
<script src="https://code.angularjs.org/1.3.9/angular-route.js"></script>
-->
<style type='text/css'>
</style>
<script type='text/javascript'>
$(function(){
	$.ajax({
		url: "tmp1.csp",
		dataType: "json",
		success: function(Data){
			alert(Data[0][0]);
		}
	});
});
</script>
</head>
<body>
</body>
</html>



Содержимое tmp1.csp
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
[
	["20180605","1","1232","10","12.30","","3.2","","","","","","","","","",""],
	["20180611","2","2067","1","10.15","","","","","","","","","","","",""],
	["20180612","1","1240","10","12.30","","","3.3","3.4","","","","","","","",""],
	["20180612","2","2039","4","11.20","","3.2","","","","","","","","","",""],
	["20180618","3","3748","23","28.25","3.1","3.2","","","","","","","","","",""],
	["20180620","1","1201","10","10.20","3.1","3.2","3.3","3.4","3.5","3.6","3.7","3.8","3.9","3.10","3.11",""],
	["20180620","1","1230","22","09.20","","3.2","","","","","","","","","",""],
	["20180620","2","2404","8","15.32","","","3.3","","","","","","","","",""],
	["20180620","3","3759","7","7.35","","3.2","3.3","","","","","","","","",""],
	["20180625","2","2111","4","9.32","","3.2","","3.4","","","","","","","",""],
	["20180627","2","2039","5","14.23","","3.2","3.3","","","","","","","","",""],
	["20180701","3","3736","23","11.25","","3.2","","","","","","","","","",""],
	["20180702","2","2109","4","9.45","","","","","","","","","","","",""]
]
...
Рейтинг: 0 / 0
Пользовательская функция
    #39671694
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Работает.
На стороне Cache:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
brakJson(ip,query) ;
 n $es n $et s $et="g:'$es error"
 k Ret
 s (an,parc,nrbord,rut,dat,ora,lastnode,in,Ret,n,arr,cik)=""
 s data=$p(query,"*",1),parc=$p(query,"*",2),bord=$p(query,"*",3),przn=$p(query,"*",4)
  f i=1:1 s an=$o(^controlST(an)) q:an=""  d
 . f  s parc=$o(^controlST(an,parc)) q:parc=""  d
 . . f  s nrbord=$o(^controlST(an,parc,nrbord)) q:nrbord=""  d
 . . . f  s rut=$o(^controlST(an,parc,nrbord,rut)) q:rut=""  d
 . . . . f  s ora=$o(^controlST(an,parc,nrbord,rut,ora)) q:ora=""  d
 . . . . . i przn="1.3" s n=n+1,in(ip,n)=an_"\"_parc_"\"_nrbord_"\"_rut_"\"_ora_"\"_$p(^controlST(an,parc,nrbord,rut,ora),"*",4) d
 . . . . . . f i=0:1:$l(in(ip,n),"\")-1 s dummy(i)=$p(in(ip,n),"\",i+1)
 . . . . . . s arr=arr_$$ENCODE^%FCGIJSON("dummy")
 s %fcgi("o","stdout")=arr ; $$ENCODE^%FCGIJSON("dummy")   
 s %fcgi("o","header","Content-Type")="application/json"
 q
 ;;


На стороне JavaScript(Ajax):
Код: javascript
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.
function addJson(aa,mm,dd,pp,tt,rr,tb,pz)  {
    // *** Data in textbox
     var AAAA = document.getElementById(aa).value
     var MM = document.getElementById(mm).value
     var DD = document.getElementById(dd).value
     var AMD = AAAA + MM + DD
     var parc = document.getElementById(pp).value
     var nrbord = document.getElementById(tt).value

   var select = prompt('Select pentru generarea tabelului:(Data*Parc*Trolebuz*)', AMD + "*" + parc + "*" + nrbord + "*" + pz);
   var adrip = document.getElementById("ipnr").value
   var callback = function(req){
   var rtncode = req.responseText;
   console.log(rtncode); 
   var instr = rtncode.split('][').join('],[');
   var outstr="[" + instr +"]"
   var rows = JSON.parse(outstr); // <- вот тут собака была зарыта
   var columns = ["Data", "Parc", "Nr.Brd", "Ruta", "Ora", "LipsaS","LipsaT", "LipsaTr", 
	      	       "LipsaSa", "LipsaD", "LipsaR", "LipsaF", "LipsaTl","LipsaIf", "LipsaIn", "LipsaSb"]; 

	var doc = new jsPDF('l', 'pt','a4');
	doc.autoTable(columns, rows);
	doc.save('table.pdf');
  };
  AJAX( "GET", "/cache/tab/brakJson/" + adrip + "/" + select, null, callback );
}
...
Рейтинг: 0 / 0
Пользовательская функция
    #39671847
kalin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu,

Вот такое нагромождение "кода-хлама" отваживает программистов изучать Cache.

Все решается гораздо проще более "продвинутым" ПО
...
Рейтинг: 0 / 0
Пользовательская функция
    #39671856
kalin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По простому для примера:
Создается файл формата отчета, в данном случае pdf, который связан с классом "счетов"
<report
id="account_invoices"
model="account.invoice"
string="Счет"
report_type="qweb-pdf"
name="account.report_invoice"
/>
string - автоматически появляется наименование отчета в списке по нажатию клавиши печать на форме счета
Создается сам шаблон отчета:
<template id="report_invoice">
<t t-call="web.html_container">
<t t-foreach="docs" t-as="o">
<t t-call="web.external_layout">
<div class="page">
<h2>Report title</h2>
<p>This object's name is <span t-field="o.name"/></p>
"набор тегов тела счета"
</div>
</t>
</t>
</t>
</template>
web.external_layout - указывает на базовый шаблон внешнего оформления отчета (заголовок, компания, стр. и т.д.)

Вот по сути и весь код для получения PDF счета.
Весь клиентский java код и "движек" отчета скрыт во framework и нет никакой необходимости в нем что-либо менять.
Для настройки формата бумаги при необходимости описывается еще один шаблон.
...
Рейтинг: 0 / 0
Пользовательская функция
    #39671887
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kalin Вот такое нагромождение "кода-хлама" отваживает программистов изучать Cache
Стоп. Все это можно делать на одном М-е (где-то я обсужал это)
и пугаться программистам изучать Cache не надо.
Вам все ровно придется прибегать к вызовам Ajax(в данном конкретном случае) или Node.js ...
Я к чему стремился все это время - единый код для всех М реализаций, будь то Cache или GT.M.
А что пугает программистов ?
Вроде одно, а на самом деле НЕТ. Вот попробуйте приложения для ВЕБ
написанных на Cache вызвать в GT.M, вот тогда все станет ясно.
...
Рейтинг: 0 / 0
Пользовательская функция
    #39672032
kalin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu,
Вообще-то пора забыть M как таковой. Низкоуровневое программирование - это удел поставщиков framework.
Задача прикладника - получение конечного продукта в наиболее сжатые сроки с использованием встроенных framework.
А "строить" самому низкоуровневый код по выборке данных из глобалей и разборке его на JavaScript - это прошлый век.
...
Рейтинг: 0 / 0
Пользовательская функция
    #39672370
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kalin Вот такое нагромождение "кода-хлама" отваживает программистов изучать Cache.
Если будут платить нормально - так покидают "нормальные" ЯП и прибегут к Кащею.
Т.ч. "боязнь" не там, где ты ее ищешь.
...
Рейтинг: 0 / 0
Пользовательская функция
    #39672410
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kalin<p>This object's name is <span t-field="o.name"/></p>
"набор тегов тела счета"
</div>
Вот покажите пример в ДИНАМИКУ как из БД(любой)
создать таблицу с данными с этим "продвинутым" ПО
Мне просто интересно.
...
Рейтинг: 0 / 0
Пользовательская функция
    #39674036
kalin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu,

Изучайте современные технологии программирования и все вопросы отпадут сами собой
...
Рейтинг: 0 / 0
Пользовательская функция
    #39674038
kalin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krvsa,

Не будут
июня 2015 года Министерство связи и массовых коммуникаций Российской Федерации издало «Протокол экспертной оценки проектов по импортозамещению инфраструктурного программного обеспечения», в котором проект «СУБД PostgreSQL и связанные с ним решения» занимает 1-е место по направлению «Системы управления базами данных» протокола экспертной оценки

http://minsvyaz.ru/ru/documents/4662/
...
Рейтинг: 0 / 0
Пользовательская функция
    #39674041
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kalin,Изучайте современные технологии программирования и все вопросы отпадут сами собой

А я и не спросил... А попросил.
...
Рейтинг: 0 / 0
Пользовательская функция
    #39674043
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kalin,
... на PostgreSQL пусть будет.
Покажите по меньше нагромождение "кода-хлама" ,
и, чтоб отваживались другие .
...
Рейтинг: 0 / 0
Пользовательская функция
    #39674099
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriukalin,Изучайте современные технологии программирования и все вопросы отпадут сами собой

А я и не спросил... А попросил.
А сформулируйте еще раз задачу.
...
Рейтинг: 0 / 0
Пользовательская функция
    #39674547
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.,
Я попросил продвинутым средствам, показать
как в ДИНАМИКУ из любой БД получить отчетик,
который получил я в PDF из браузера (выше показал)
...
Рейтинг: 0 / 0
Пользовательская функция
    #39674550
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Непонятно как скрыть все это в спойлере ...
Сори.
...
Рейтинг: 0 / 0
Пользовательская функция
    #39674677
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu,

в динамике - это как? Без перезагрузки страницы?
PDF какое-то отношение к задаче имеет?
Если нужно всего лишь из базы получить JSON и отобразить на странице, дайте структуру базы и данные, это в Каше легко делается.
...
Рейтинг: 0 / 0
Пользовательская функция
    #39674794
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.,
Так проблема не о том чтоб на странице отобразить...
На странице получили, ну а в конечном итоге оформить,
распечатать какой нибудь отчет придется.
Не имея значения на что сидит клиент, jsPDF это делает хорошо.
Если нужно всего лишь из базы получить JSON и отобразить на странице, дайте структуру базы и данные, это в Каше легко делается
Я это все делаю на GT.M, но можно таким же образом
все это делать и на Cache не меняя ни грамма кода - 100% компатибильность .
Я использую GT.M + CentOS + Nginx + Ajax
...
Рейтинг: 0 / 0
Пользовательская функция
    #39674905
kalin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu,

Описываю модель данных

class SetPlace(models.Model):
_name = 'ticketbus.places'
place = fields.Integer(string='Номер места')
discount=fields.Many2one('ticketbus.discount',string='Скидка')
buggage = fields.One2many('ticketbus.buggageprice','places',string='Багаж',ondelete='cascade')
of_child = fields.Boolean(string='С ребенком без места')
fio=fields.Char(string='ФИО')
country=fields.Many2one('res.country')
docserial=fields.Char(string='Серия документа')
docdiscount=fields.Char(string='Льготный документ')
docnumber = fields.Char(string='Номер документа')
order_line=fields.Many2one("sale.order.line", ondelete='cascade', string="Заказ")
list_price = fields.Float(string='Sales Price', default=0.0,digits=dp.get_precision('Product Price'),help="Стоимость позиции заказа.")
placestr=fields.Char(compute='_getplacestr')
date=fields.Date(string='Дата поездки')
departure_time = fields.Char(string="Время отправления")
departure=fields.Many2one('ticketbus.station',string='Станция отправления')
arrival = fields.Many2one('ticketbus.station',string='Станция прибытия')
platform=fields.Integer(string='Номер платформы')
check_number=fields.Char(string='Номер чека')
code_check_number = fields.Char(string='Шрих код номера чека')
full_discount=fields.Boolean(compute='_full_discount',string='Тип полный')
refunded=fields.Boolean(string='Статус возврата',default=False)

Описываю шаблон формирования билета
<template id="report_sales_custom" name="Route sales Items">
<t t-set="product" t-value="line.product_id"/>
<section class="element_grid_route">
<div class="panel panel-info oe_product_mysales" style="width:500px">

<table class="text-center list_sales" style="font-size:15px; border: 1px dotted black;">
<tr>
<td colspan="2" class="text-center">
<t t-esc="doc.company_id.partner_id" t-options="{"widget": "contact", "fields": ["address", "name"], "no_marker": true}"/>
</td>
</tr>
<tr>
<td colspan="2" class="text-center">
БИЛЕТ №<span style="font-weight: bold;font-size:20px;"><t t-esc="l.check_number"/></span>
</td>
</tr>
<tr>
<td class="text-left">
ФИО:
</td>
<td class="text-left">
<t t-esc="l.fio"/>
</td>
</tr>
и так далее

Получаю документ
...
Рейтинг: 0 / 0
Пользовательская функция
    #39674909
kalin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu,
Для медицины
class MedicalPatient(models.Model):
_inherit = 'medical.patient'
medical_center_primary_id = fields.Many2one('medical.center',string='Медицинский центр',default=lambda self:self._getprod())
street=fields.Char(related="medical_center_primary_id.street",readonly=True)
street2 = fields.Char(related="medical_center_primary_id.street2",readonly=True)
city=fields.Char(related="medical_center_primary_id.city",readonly=True)
zip = fields.Char(related="medical_center_primary_id.zip",readonly=True)
country_id = fields.Many2one(related="medical_center_primary_id.country_id",readonly=True)
region = fields.Char(related="medical_center_primary_id.region.name",string= "Область",readonly=True)
area = fields.Char(related="medical_center_primary_id.area.name",string="Район",readonly=True)

Шаблон
<template id="medical_form_25u">
<t t-call="web.html_container">
<t t-foreach="docs" t-as="o">
<t t-call="web.external_layout">
<div class="page">
<h4 class="text-center"><b>МЕДИЦИНСКАЯ КАРТА АМБУЛАТОРНОГО БОЛЬНОГО №<t t-esc="o.identification_code"/></b></h4>
<p><span class="big_size">Фамилия, имя. отчество:</span> <span class="big_size_b" t-esc="o.name"/></p>
<p><span class="big_size">Пол: </span><span class="big_size_b" t-field="o.gender"/><span class="big_size">Дата рождения:</span> <span class="big_size_b" t-esc="o.birthdate_date" t-options="{'widget':'date'}"/>
<t t-if="o.phone">
<span class="big_size">Телефон: Домашний</span> <span class="big_size_b" t-esc="o.phone"/>
</t>
</p>

<p class="big_size"><b>Адрес больного</b></p>
<p><span class="big_size">область: </span><span class="big_size_b" t-field="o.region"/>
<span class="big_size">район: </span><span class="big_size_b" t-field="o.area"/>
<span class="big_size">населенный пункт: </span><span class="big_size_b" t-esc="o.city"/>
</p>

и так далее
...
Рейтинг: 0 / 0
Пользовательская функция
    #39674912
kalin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu,

Backend Form
...
Рейтинг: 0 / 0
Пользовательская функция
    #39674986
ValeriuБлок А.Н.,
Я попросил продвинутым средствам, показать
как в ДИНАМИКУ из любой БД получить отчетик,
который получил я в PDF из браузера (выше показал)

Node.js + React + MongoDB

...
Рейтинг: 0 / 0
Пользовательская функция
    #39675065
kalin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не рубящий в каше,
Не впечатлило никак.
Должно работать и правильно отображаться на мобильных устройствах и планшетах.
Пример отображения Backend для таблицы (tree)
...
Рейтинг: 0 / 0
Пользовательская функция
    #39675069
kalin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не рубящий в каше,
Оно же в виде kanban
...
Рейтинг: 0 / 0
Пользовательская функция
    #39675073
kalin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не рубящий в каше,
Оно же в виде Graph
...
Рейтинг: 0 / 0
Пользовательская функция
    #39675075
kalin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot не рубящий в каше]
Оно же в виде dashboard
...
Рейтинг: 0 / 0
Пользовательская функция
    #39675098
kalinне рубящий в каше,
Не впечатлило никак.
Должно работать и правильно отображаться на мобильных устройствах и планшетах.
Пример отображения Backend для таблицы (tree)

Разговор про передачу данных с backend'а или отображение на frontend'е?
...
Рейтинг: 0 / 0
Пользовательская функция
    #39675104
kalin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не рубящий в кашеkalinне рубящий в каше,
Не впечатлило никак.
Должно работать и правильно отображаться на мобильных устройствах и планшетах.
Пример отображения Backend для таблицы (tree)

Разговор про передачу данных с backend'а или отображение на frontend'е?

1. Данные отображения представлены в Backend
2. Разговор про современные инструментальные средства, позволяющие создавать Backend и отчеты через шаблоны и описанные модели данных.
В данном примере используется технология создания ORM модели данных и ее отображение через шаблоны.
Подробнее здесь
YouTube Video
...
Рейтинг: 0 / 0
Пользовательская функция
    #39675115
kalin
1. Данные отображения представлены в Backend
2. Разговор про современные инструментальные средства, позволяющие создавать Backend и отчеты через шаблоны и описанные модели данных.
В данном примере используется технология создания ORM модели данных и ее отображение через шаблоны.


Не понимаю, что Вы подразумеваете под Backend.
Чем odoo лучше связки, допустим, angular на фронте и sequelize на бэке? Или мы говорим об одном и том же?
...
Рейтинг: 0 / 0
Пользовательская функция
    #39675143
kalin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не рубящий в каше,

Изначально речь шла о том, что-бы с использованием современных инструментальных средств получить максимально быстро "навороченное" работающее приложение с минимум затрат по его программированию, что-бы самому не программировать json выборки и не писать код на JavaScript для получения результата. Чем больше "самостоятельно" писанного "собственного кода" получения данных и их обработке, тем больше уйдет времени на конечный результат. Современные средства создания приложения позволяют больше времени уделить на "описание" получения нужных форм приложения с автоматическим поиском и проверками вводимых данных, что экономит время на ненужной работе писания кода для их отображения и хранения в базе. Весь "нижний код" по авторизации в системе, организации хранения и целостности данных , их получения и преобразования в необходимые формы пускай пишет поставщик системы проектирования. У него это получится гораздо эффективней и быстрей.
...
Рейтинг: 0 / 0
Пользовательская функция
    #39675151
kalin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не рубящий в каше
Чем odoo лучше связки, допустим, angular на фронте и sequelize на бэке? Или мы говорим об одном и том же?
Когда Вы берете эти две технологии, Вам все равно придется их каким либо образом объединять и писать в итоге свой "некий" framework. Odoo. к примеру, позволяет это все обойти и используя готовые механизмы наследования шаблонов и виджетов быстро написать любое приложение. Благо, всегда можно скачать много готовых модулей под свои потребности.
...
Рейтинг: 0 / 0
Пользовательская функция
    #39675215
kalin, согласен. Но любой framework, который решает "всё на свете" ограничен по своей сути. Например, Вам нужно будет работать с клиентами через websocket, что может предложить odoo?
Так что я всё-таки за ODM/ORM на сервере, application web-сервер, обмен данными через REST и клиент на фронте на любом популярном фреймворке вроде react или angular.
У Intersystems, как я понимаю, тоже такой взгляд.
А генерировать JSON на MUMPS - моветон, да. И тема сваливается в оффтопик имхо.
...
Рейтинг: 0 / 0
Пользовательская функция
    #39675292
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valeriu,

тогда извиняюсь, я не понял проблемы. Решил, что так долго обсуждаете, как из базы данные взять.
Ну а сделать PDF - это, кажется, уже не вопрос к субд, а внешними средствами должно делаться, разве нет?
Если jsPDF вас устраивает - ну и хорошо, только выбор средства к самой Каше вроде бы уже не относится.
...
Рейтинг: 0 / 0
Пользовательская функция
    #39675294
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kalinkrvsa,

Не будут
июня 2015 года Министерство связи и массовых коммуникаций Российской Федерации издало «Протокол экспертной оценки проектов по импортозамещению инфраструктурного программного обеспечения», в котором проект «СУБД PostgreSQL и связанные с ним решения» занимает 1-е место по направлению «Системы управления базами данных» протокола экспертной оценки

http://minsvyaz.ru/ru/documents/4662/
Постгре - это, конечно, хорошо. Только я смотрел выступление представителя нашей новосибирской команды разработчиков этого Постгре-про, и он рассказывал, зачем вообще нужна это "про", почему кто-то покупает то, что и так бесплатно и все в таком духе.
И вы знаете, я удивился. Оказывается, в бесплатном постгре не поддеживаются 64разрядные счетчики, не поддерживается хранение данных в индексе, и многие подобные, казалось бы, уже тривиальные вещи. И он рассказывал о проблемах того, что с одной стороны они двигают свою ветку вперед, а с другой стороны, боятся уйти слишком далеко, чтобы не потерять возможность интегрировать разработки основной ветки. Так что и с Постгре не так все прекрасно. Возможно, она одна из самых развитых среди открытых (а значит, ее не закроешь санкциями, тем более, в РФ есть разработчики ядра), но точно не из самых развитых вообще. Так что здесь очень сильно влияет политика.
...
Рейтинг: 0 / 0
Пользовательская функция
    #39675374
Valeriu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.,
Если jsPDF вас устраивает - ну и хорошо, только выбор средства к самой Каше вроде бы уже не относится
jsPDF - буквально несколько строк кода, но для этого нужно было всего
правильно данные с GT.M (Cache) получить, или обработать на клиенте в JSON.
Я думаю, тема исчерпана.
Спасибо всем за отклики.
...
Рейтинг: 0 / 0
51 сообщений из 51, показаны все 3 страниц
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Пользовательская функция
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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