Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Спрошу здесь. Код GT.M vs JS  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 2021
Доброго дня !

Я построил HTML таблицу в GT.M.
Работает все отлично, но есть некоторые неудобства - ограничение на 32 Кб
Знаю многие здесь работают с JS, как бы построить такую таблицу используя JS ?
В инете очень скудная информация
Используя Ajax для приема данных со стороны сервера GT.M, можно было добиться лучших результатов ..
+
HTMLtab ;;New Routine created and compiled tools "WEB-MEditor for GT.M" 
        ;;MActive-Page [64708,31542 ]
 s html="",CrLf=$c(10,13)
 s %fcgi("o","header","Content-Type")="text/html"
 s html=html_"<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN'"_CrLf
 s html=html_"'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>"_CrLf
 s html=html_"<html xmlns='http://www.w3.org/1999/xhtml' lang='en'>"_CrLf
 s html=html_"<meta charset='utf-8'>"_CrLf
 s html=html_"<head>"_CrLf
 s html=html_"<link rel='stylesheet' type='text/css' href='webprojst/tabstyle2.css' />"_CrLf 
 s html=html_"<script type='text/javascript' src='webprojst/row.js'></script>"_CrLf
 s html=html_"</head>"_CrLf
 s html=html_"<body>"_CrLf
 ; DIV Comon --------------------------
 s html=html_"<div id='myDiv' name='myDiv' title='Example Div Element' style='font-family: Helvetica; font-size: 12pt; border: 1px solid black;'>"_CrLf
 s html=html_"<h2>HTML Table. CPAS person number.</h2>"_CrLf
 ; DIV table-style-three --------------
 s html=html_"<div style='border: 1px solid black; height:450px; overflow:auto;'>"_CrLf
 s html=html_"<table id='table' class='table-style-three' >"_CrLf
 ;
 s html=html_"<tr>"_CrLf
 s html=html_"<th>Nr.</th>"_CrLf
 s html=html_"<th>Nr. Tab.</th>"_CrLf
 s html=html_"<th>Nume, Prenime</th>"_CrLf
 s html=html_"<th>IDNP</th>"_CrLf
 s html=html_"<th>Data Nastere</th>"_CrLf
 s html=html_"<th>Sex</th>"_CrLf 
 s html=html_"<th>Domiciliu</th>"_CrLf
 s html=html_"<th>Categoria</th>"_CrLf
 s html=html_"<th>Data angajarii</th>"_CrLf
 s html=html_"<th>CPAS</th>"_CrLf
 s html=html_"<th>Subd.</th>"_CrLf
 s html=html_"<th>Edit</th>"_CrLf 
 s html=html_"<th>Del</th>"_CrLf 
 s html=html_"</tr>"_CrLf
 ; Dinamic cool data
 s (Ret,Er,str)=""
 d CPASS^cpas(.Ret,.Er)
 f Jn=1:1:170 s str=$o(Ret(str)) q:str=""  d
 . s html=html_"<tr>"_CrLf
 . s html=html_"<td>"_$p(Ret(str),"\",1)_"</td> "_CrLf
 . s html=html_"<td>"_$p(Ret(str),"\",2)_"</td>"_CrLf
 . s html=html_"<td>"_$p(Ret(str),"\",3)_"</td>"_CrLf
 . s html=html_"<td>"_$p(Ret(str),"\",4)_"</td>"_CrLf
 . s html=html_"<td>"_$p(Ret(str),"\",5)_"</td>"_CrLf
 . s html=html_"<td>"_$p(Ret(str),"\",6)_"</td>"_CrLf
 . s html=html_"<td>"_$p(Ret(str),"\",7)_"</td>"_CrLf
 . s html=html_"<td>"_$p(Ret(str),"\",8)_"</td>"_CrLf
 . s html=html_"<td>"_$p(Ret(str),"\",9)_"</td>"_CrLf
 . s html=html_"<td>"_$p(Ret(str),"\",10)_"</td>"_CrLf
 . s html=html_"<td>"_$p(Ret(str),"\",11)_"</td>"_CrLf
 . s html=html_"<td><button id='edt' onclick='check(this)'>Edit</button></td>"_CrLf
 . s html=html_"<td><button id='del' onclick='check(this)'>Del</button></td>"_CrLf
 . s html=html_"</tr>"_CrLf
 s html=html_"</table>"_CrLf
 s html=html_"</div>"_CrLf
 ; END DIV Table ---------------------------
 ;
 ; DIV input text --------------------------
 s html=html_"<div style='background-color:lightblue; border: 1px solid black; height:150px'>"_CrLf
 s html=html_"<br>"_CrLf
 s html=html_"Nr:<input type='text' name='nr' id='nr'>"_CrLf
 s html=html_"NrTab:<input type='text' name='tab' id='tab'>"_CrLf
 s html=html_"Nume:<input type='text' name='name' id='name'>"_CrLf
 s html=html_"IDNP:<input type='text' name='idnp' id='idnp'>"_CrLf
 s html=html_"DataNastere:<input type='text' name='dt' id='dt'>"_CrLf
 s html=html_"Sex:<input type='text' name='sex' id='sex'><br><br>"_CrLf
 s html=html_"Domiciliu:<input type='text' name='dom' id='dom'>"_CrLf
 s html=html_"Categoria:<input type='text' name='cat' id='cat'>"_CrLf
 s html=html_"DataAngaj:<input type='text' name='dtang' id='dtang'>"_CrLf 
 s html=html_"</div>"_CrLf
 ; END DIV input text ------------------------
 ;
 ; END comon DIV
 s html=html_"   </div>"_CrLf
 s html=html_"</body>"_CrLf
 s html=html_"</html>"_CrLf
 s %fcgi("o","stdout")=html
 q
out(txt) ;
 s html=html_txt
 q
28 мар 18, 09:17    [21292086]     Ответить | Цитировать Сообщить модератору
 Re: Спрошу здесь. Код GT.M vs JS  [new]
DAiMor
Member

Откуда: Volzhsky -> Moscow -> CZ, Brno
Сообщений: 2583
Valeriu,

Если хотите впихнуть все данные обернутые в HTML в 32 килобайта, как ни крути то проще просто вывести данные отдельно. Если не хотите возиться с AJAX можете собрать данные в json и статично его подгружать.
И на стороне клиента уже генерировать таблицу по этим данным. А можно воспользоваться готовыми компонентами для таблиц, коих в интернете полно.

Ну и я сейчас уже крайне не рекомендую, генерировать html/js/css код на стороне GT.m/Cache. Порочная практика ни к чему хорошему не приводящая. В вашем примере почти весь HTML статичный, почему бы не выложить его как HTML файл. И внутри JS который бы добавил то что вы хотели изменить в нем.
28 мар 18, 09:36    [21292144]     Ответить | Цитировать Сообщить модератору
 Re: Спрошу здесь. Код GT.M vs JS  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 2021
DAiMor,
Можно и так. json-ом отправить.
Насчет готовых таблиц. То что я посмотрел - очень громадный код.
Я еще не очень силен в JS (но стараюсь ;) ).
Насчет статического HTML согласен, но все ровно код должен инициироваться
на стороне GT.M , хотя бы стартовый какой-то ...
Я с Ajax-ом как-то "подружился" и даже нравиться его использовать.
28 мар 18, 09:55    [21292220]     Ответить | Цитировать Сообщить модератору
 Re: Спрошу здесь. Код GT.M vs JS  [new]
Alexey Maslov
Member

Откуда: СПб
Сообщений: 1526
Valeriu
Работает все отлично, но есть некоторые неудобства - ограничение на 32 Кб
Немного не понял, откуда оно берётся?
28 мар 18, 10:52    [21292419]     Ответить | Цитировать Сообщить модератору
 Re: Спрошу здесь. Код GT.M vs JS  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 2021
Alexey Maslov,
Заложено так в коде.
Но это не так важно, если использовать не на серверной стороне.
Можно передать и порциями.
28 мар 18, 11:10    [21292499]     Ответить | Цитировать Сообщить модератору
 Re: Спрошу здесь. Код GT.M vs JS  [new]
doublefint
Member

Откуда: Беларусь, Минск
Сообщений: 931
Valeriu, https://codepen.io/doublefint/pen/RMQqom
29 мар 18, 18:00    [21297277]     Ответить | Цитировать Сообщить модератору
 Re: Спрошу здесь. Код GT.M vs JS  [new]
DAiMor
Member

Откуда: Volzhsky -> Moscow -> CZ, Brno
Сообщений: 2583
doublefint
Valeriu, https://codepen.io/doublefint/pen/RMQqom


https://codepen.io/daimor/pen/xWYeMw
29 мар 18, 20:00    [21297501]     Ответить | Цитировать Сообщить модератору
 Re: Спрошу здесь. Код GT.M vs JS  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 2021
DAiMor, doublefint
Прям мое TABLE . И названий не пропустили ...
Спасибо. ;)
Ученик я, и, не стесняюсь.
29 мар 18, 20:54    [21297583]     Ответить | Цитировать Сообщить модератору
 Re: Спрошу здесь. Код GT.M vs JS  [new]
doublefint
Member

Откуда: Беларусь, Минск
Сообщений: 931
DAiMor
https://codepen.io/daimor/pen/xWYeMw
:) Можно и просто flex
30 мар 18, 00:29    [21297899]     Ответить | Цитировать Сообщить модератору
 Re: Спрошу здесь. Код GT.M vs JS  [new]
DAiMor
Member

Откуда: Volzhsky -> Moscow -> CZ, Brno
Сообщений: 2583
doublefint
DAiMor
https://codepen.io/daimor/pen/xWYeMw
:) Можно и просто flex
Нуу, флекс уже не модно и прошлый век, поэтому и сделал на гридах.
30 мар 18, 10:44    [21298440]     Ответить | Цитировать Сообщить модератору
 Re: Спрошу здесь. Код GT.M vs JS  [new]
doublefint
Member

Откуда: Беларусь, Минск
Сообщений: 931
DAiMor
... флекс уже не модно и прошлый век...
flex vs grid Сколько людей, столько и мнений...
30 мар 18, 11:30    [21298670]     Ответить | Цитировать Сообщить модератору
 Re: Спрошу здесь. Код GT.M vs JS  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 2021
doublefint,
Прошу прощения, как бы не в тему, но никак не могу понять.
Почему разделитель '\' показывает ошибку,
а другой нет '/' ?
console.log(arr[i].split("\")[0], arr[i].split("\")[1]); - ошибка
console.log(arr[i].split("/")[0], arr[i].split("/")[1]); - НЕТ

Спасибо.
18 апр 18, 15:55    [21349377]     Ответить | Цитировать Сообщить модератору
 Re: Спрошу здесь. Код GT.M vs JS  [new]
Блок А.Н.
Member

Откуда: Новосибирск
Сообщений: 3771
Valeriu,

видимо, потому что \ - управляющий символ. Попробуйте
console.log(arr[i].split("\\")[0], arr[i].split("\\")[1]);
18 апр 18, 16:22    [21349508]     Ответить | Цитировать Сообщить модератору
 Re: Спрошу здесь. Код GT.M vs JS  [new]
DAiMor
Member

Откуда: Volzhsky -> Moscow -> CZ, Brno
Сообщений: 2583
Valeriu,

потому что это специальный символ и его нужно экранировать довавив еще один слеш
console.log(arr[i].split("\\")[0], arr[i].split("\\")[1]);
18 апр 18, 16:23    [21349510]     Ответить | Цитировать Сообщить модератору
 Re: Спрошу здесь. Код GT.M vs JS  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 2021
Блок А.Н.,
поменял на '~' и все ОК.
Видимо да.
18 апр 18, 16:24    [21349514]     Ответить | Цитировать Сообщить модератору
 Re: Спрошу здесь. Код GT.M vs JS  [new]
doublefint
Member

Откуда: Беларусь, Минск
Сообщений: 931
Valeriu, а еще, вместо текста с разделителями, можно сразу формировать родной для javascript JSON
+
const data = [ 
 [1, "Nr. Tab.1", "Nume", "Prenime1", "IDNP1", "Data Nastere1", "Sex1", "Domiciliu1", "Categoria1", "Data angajarii1", "CPAS1", "Subd1" ],
 [2, "Nr. Tab.2", "Nume", "Prenime2", "IDNP2", "Data Nastere2", "Sex2", "Domiciliu2", "Categoria2", "Data angajarii2", "CPAS2", "Subd2" ],
 // etc.
]
19 апр 18, 10:49    [21351326]     Ответить | Цитировать Сообщить модератору
 Re: Спрошу здесь. Код GT.M vs JS  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 2021
doublefint,
Я пробовал JSON, видимо из за этого разделителя
у меня там выскакивала постоянно ошибка... что то с кодировкой
(не помню там серия некоторых паспортов было на кирилице)
Счс нету времени, занимаюсь другими делами. Посмотрю еще раз обязательно.
Очень в последнее время присел на JS (Ajax + GT.M )
Для меня раньше настольные приложения было ВСЕ. Понял что ошибался. Еще как...
19 апр 18, 20:07    [21353005]     Ответить | Цитировать Сообщить модератору
 Re: Спрошу здесь. Код GT.M vs JS  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 2021
doublefint,
Пробовал JSON, почему-то медленнее чем простой JS (insert)
Еще insert почему-то с хвоста начинает отсчет :) ...
+
//****** Add Rows
function addRow()
{
   var arrTables = document.getElementById('table');
   var oRows = arrTables.rows;
   var numRows = oRows.length;
  
   var cntr = myIncriment(); 
    var callback = function(req){
    var rtncode = req.responseText;
    var arr = rtncode.split('|');



 for (var i = 0; i < arr.length; i++) {

    var newRow = document.getElementById('table').insertRow( numRows );
    var cell1 = newRow.insertCell(0);
    var cell2 = newRow.insertCell(1);
    var cell3 = newRow.insertCell(2);
    var cell2 = newRow.insertCell(3);
    var cell4 = newRow.insertCell(4);
    var cell5 = newRow.insertCell(5);
    var cell6 = newRow.insertCell(6);
    var cell7 = newRow.insertCell(7);
    var cell8 = newRow.insertCell(8);
    var cell9 = newRow.insertCell(9);
    var cell10 = newRow.insertCell(10);
    var cell11 = newRow.insertCell(11);
    var cell12 = newRow.insertCell(12);
    cell1.innerHTML = arr[i].split('~')[0];
    cell2.innerHTML = arr[i].split('~')[1];
    cell3.innerHTML = arr[i].split('~')[2];
    cell4.innerHTML = arr[i].split('~')[3];
    cell5.innerHTML = arr[i].split('~')[4];
    cell6.innerHTML = arr[i].split('~')[5];
    cell7.innerHTML = arr[i].split('~')[6];
    cell8.innerHTML = arr[i].split('~')[7];
    cell9.innerHTML = arr[i].split('~')[8];
    cell10.innerHTML = arr[i].split('~')[9];
    cell11.innerHTML = arr[i].split('~')[10];

    }

  };
  AJAX( "GET", "/gt.m/tab/**" + cntr , null, callback );

}


//**** JSON parse
function f_json() {
    var txt, html = "";
    var cntr = myIncriment();
    var ret = JSON.parse(AJAX("GET","/gt.m/tab/**" + cntr, null, null).responseText);
    txt += "<table>"
    for (var i = 0; i < ret.length;i++) {
   
     txt += "<tr>"
     txt += "<td>" + ret[i].split('~')[0]; + "</td>";
     txt += "<td>" + ret[i].split('~')[1]; + "</td>";
     txt += "<td>" + ret[i].split('~')[2]; + "</td>";
     txt += "<td>" + ret[i].split('~')[3]; + "</td>";
     txt += "<td>" + ret[i].split('~')[4]; + "</td>";
     txt += "<td>" + ret[i].split('~')[5]; + "</td>";
     txt += "<td>" + ret[i].split('~')[6]; + "</td>";
     txt += "<td>" + ret[i].split('~')[7]; + "</td>";
     txt += "<td>" + ret[i].split('~')[8]; + "</td>";
     txt += "<td>" + ret[i].split('~')[9]; + "</td>";
     txt += "<td>" + ret[i].split('~')[10]; + "</td>";
     txt += "<td><button id='edt' onclick='check(this)'>Edit</button></td>";
     txt += "<td><button id='del' onclick='check(this)'>Del</button></td>";
     txt += "</tr>"        
      document.getElementById("table").innerHTML = txt;
     }
   txt += "</table>"
}

//**** Incriment  Function step 500

   function myIncriment() {
    document.getElementById("myNumber").stepUp(500);
  }
24 апр 18, 16:07    [21365137]     Ответить | Цитировать Сообщить модератору
 Re: Спрошу здесь. Код GT.M vs JS  [new]
krvsa
Member

Откуда: г Волжский
Сообщений: 13097
Valeriu, повторяющиеся, однотипные действия нужно оформлять циклом.
3 май 18, 09:27    [21383438]     Ответить | Цитировать Сообщить модератору
 Re: Спрошу здесь. Код GT.M vs JS  [new]
doublefint
Member

Откуда: Беларусь, Минск
Сообщений: 931
Valeriu, я прошу прощения, в вашем примере я не увидел JSON. Сам пример запутан и, похоже, содержит ошибки.
Выложите исходники на github ( M, js, html )
4 май 18, 12:49    [21387088]     Ответить | Цитировать Сообщить модератору
 Re: Спрошу здесь. Код GT.M vs JS  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 2021
doublefint
Я попробую.
JSON - я получаю из GT.M (готовую уже структуру)
5 май 18, 14:14    [21389467]     Ответить | Цитировать Сообщить модератору
 Re: Спрошу здесь. Код GT.M vs JS  [new]
doublefint
Member

Откуда: Беларусь, Минск
Сообщений: 931
Valeriu
я получаю из GT.M (готовую уже структуру)
Cтроки в вашем коде говорят об обратном
// у вас M ( /gt.m/tab/** ) возвращает не JSON
// добавьте в ответ заголовок 'Content-Type: application/json'
var ret = JSON.parse(AJAX("GET","/gt.m/tab/**" + cntr, null, null).responseText); 
// ...
cell1.innerHTML = arr[i].split('~')[0]; // у вас не JSON. 
// И зачем повторять разбор строки ( split ) на элементы N раз подряд?
// let cells = arr[i].split('~'); //DRY
// cell1.innerHTML = cells[0]; 
// cell2.innerHTML = cells[1]; // etc.
6 май 18, 11:50    [21390452]     Ответить | Цитировать Сообщить модератору
 Re: Спрошу здесь. Код GT.M vs JS  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 2021
doublefint,
Я получаю примерно так из GT.M
Или строки или JSON.
+
tabDINAMIC ;;New Routine created and compiled tools "WEB-MEditor for GT.M" 
           ;; Copyright 2016, 2017 Valeriu 
 ;; Select glb
 s glb=$p(%fcgi("i","header","DOCUMENT_URI"),"/",4)
 s glb=$$FUNC^%TRIM(glb)
 i glb="*" d tan q
 ;i glb["**" s nr=$p(glb,"**",2) d tab(nr) q ; 
 i glb["**" s nr=$p(glb,"**",2) d table(nr) q
 q
 ;;
table(nr) ; JSON List
 s (Ret,Er)="" 
 s n=-1
 d CPASS^cpas(.Ret,.Er) 
  s ind="" f i=1:1:500 s ind=$o(Ret(ind)) q:i=500  d
  . s n=n+1
  . s dummy(n)=Ret(i)
  s %fcgi("o","stdout")=$$ENCODE^FCGIJSON("dummy")
  s %fcgi("o","header","Content-Type")="text/json" 
 q
 ;;
tan
 k ^mTEMP
 s (var,Er,in,num,sc)="" 
 d CPASS^cpas(.Ret,.Er)
 m ^mTEMP=Ret
 q
tab(var) ; Strings
 n $et s $et="ZG "_$ZL_":badquery"
 s $zt="do badquery^table" ; ??? no work
 s (in,nod,lastnode)=""
 s n=-1
 i var'=0 s nr=var-500
 i '$d(var) s (%fcgi("o","header","Status"),%fcgi("o","stdout"))="*<>* Does not exist ..." q 
 f i=0:1:499 s nr=$o(^mTEMP(nr)) q:i=""  d
 . s dummy(i)=^mTEMP(nr)
 . s lastnode=nr
 . s in=in_dummy(i)
 s %fcgi("o","stdout")=in
 s %fcgi("o","header","Content-Type")="text/plain"
 q
 ;;
badquery
 u $i 
 s %fcgi("o","stdout")=$p($zs,",",3,99)
 s %fcgi("o","header","Content-Type")="text/plain"
 q
6 май 18, 17:36    [21391053]     Ответить | Цитировать Сообщить модератору
 Re: Спрошу здесь. Код GT.M vs JS  [new]
doublefint
Member

Откуда: Беларусь, Минск
Сообщений: 931
Valeriu,
+ вот здесь
 ;;
table(nr) ; JSON List
 s (data,err)="", max=500
 d CPASS^cpas(.data,.err) 
 s (i,j,json)="" 
 for  s i=$o(data(i)) Q:i=""  Q:i=max  d  // трехаргументная форма $order() поддерживается?
  . // вот здесь надо закодировать строки как массив
  . // вместо "колонка1~колонка2", выводить [ "колонка1", "колонка2" ]
  . // таблица - это массив строк, строка - массив колонок [ [ "k1", "k2"], ["k1","k2"] ]
  . // s j=j+1, json(j)= $$splitstr^json(data(i),"~")
 s %fcgi("o","header","Content-Type")="application/json"  //именно "application/json"
  // s %fcgi("o","stdout")=$$ENCODE^FCGIJSON("json") 
 Q
8 май 18, 10:41    [21394971]     Ответить | Цитировать Сообщить модератору
 Re: Спрошу здесь. Код GT.M vs JS  [new]
Valeriu
Member

Откуда: Chisinau
Сообщений: 2021
doublefint,
А может быть на стороне GT.M есть смысл сразу
отказаться от разделителя заменяя его пробелом ?
Или это неправильный подход ?
+
CPASS(Ret,Er)	
	...........
        ...........
	  . . ;S Nr=Nr+1 S Ret(Nr)=Nr_"~"_NT_"~"_FM_"~"_FC_"~"_DR_"~"_SE_"~"_AD_"~"_PR_"~"_DP_"~"_CPAS_"~"_NC_"|"
	  . . S Nr=Nr+1 S Ret(Nr)=" "_Nr_" "_NT_" "_FM_" "_FC_" "_DR_" "_SE_" "_AD_" "_PR_" "_DP_" "_CPAS_" "_NC
     ;
 quit
 ;
table(nr) ; JSON List
 s (Ret,Er)="" 
 s n=-1
 d CPASS^cpas(.Ret,.Er) 
  s ind="" f i=1:1:500 s ind=$o(Ret(ind)) q:i=500  d
  . s n=n+1
  . s dummy(n)=Ret(i)
  s %fcgi("o","stdout")=$$ENCODE^FCGIJSON("dummy")
  s %fcgi("o","header","Content-Type")="application/json"
  ;s %fcgi("o","header","Content-Type")="text/json" 
 q
 ;;


В консоле вроде получаю правильно данные ...
[...]
[0...99]
0: " 1 64 Topal Ivan Fiodor 0972911019915 08.02.1951 B STR. SCHINOASA DEAL 34 B,   1 18.12.2001 94101840445 101"
1: " 2 5385 Chircu Cristina  2005003086790 19.04.1989 F s. s. Cantinei, 37 ap.    3 1 05.08.2015 94101840445 101"
2: " 3 9 Gilca Elisaveta Andrei 0982401423450 25.04.1965 F STR.Deleanu 5 v ap. 101 1 06.03.1983 93100542835 103"
3: " 4 28 Cornei Mihail Climenti 0982102483708 27.06.1950 B BL. DACIA 47 AP.16 1 01.09.1971 93100542835 103"
...........
[400498]
lenght: 499
__proto__: Array []
9 май 18, 10:31    [21397548]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M Ответить