|
Хитрая задача на чтение из SQL... | ☑ | ||
---|---|---|---|---|
0
seperblunt2
29.05.19
✎
13:21
|
1. Выполняется запрос к MSSQL и затем читается через RecordSet.
2. Чтение происходит на сервере 1С. 3. Чтение происходит порциями(!). Нужно сохранить указатель RecordSet между серверными вызовами. В обычных формах проблем не было - сохранил в переменной и все работает. В УФ средствами 1С - никак (ВремХранилище + Структура(RecordSet) - не предлагать). Единственный вариант - чтобы указатели сохранялись в самом SQL. Вопрос знатокам: есть ли такая возможность? |
|||
1
Джинн
29.05.19
✎
13:26
|
SQL-сервер принципиально работает с наборами данных, а не с отделными строками. Вы требуете с него слишком многого.
|
|||
2
shuhard
29.05.19
✎
13:28
|
(1) курсор и есть набор отдельныз строк, требования не к сиквелу, а к хранению контекста ADODB на стороне клиента
|
|||
3
MM
29.05.19
✎
13:30
|
Если результат запроса монотонно упорядочен, то можно сохранить последнее значение ключа, по которому произведена сортировка, а при следующем запросе добавить условие, чтобы ключ был больше этого значения. Так работает динамическое чтение списков в 1С.
|
|||
4
Джинн
29.05.19
✎
13:30
|
(2) Курсор работает "на стороне сервера". Это его внутренняя процедурная обработка. Клиенту будет выдан набор данных.
|
|||
5
seperblunt2
29.05.19
✎
13:33
|
(3) увы, в общем случае не подходит.
|
|||
6
seperblunt2
29.05.19
✎
13:37
|
(1) по сути я его и прошу работать с набором.. просто нужно понять как можно обращаться к одному и тому же набору, без возможности сохранения указатели на клиенте
|
|||
7
ptiz
29.05.19
✎
13:40
|
А что насчет общих модулей с повторно возвращаемыми значениями?
|
|||
8
Джинн
29.05.19
✎
13:41
|
(6) Нет у него "указателя". Есть только ключ записи. Только он идентифицирует запись. Его и ищите и на него позиционируйтесь.
|
|||
9
seperblunt2
29.05.19
✎
13:50
|
(8) имею ввиду указатель на текущую запись.
1 вызов серверной процедуры: выполнил запрос SQL,получил рекорд сет, прочитал N записей 2. вызов серверной процедуры: прочитал следующие N записей из РекордСет-а на ОФ было так... |
|||
10
seperblunt2
29.05.19
✎
13:53
|
(8) да понял, не правильно формулирую. Сохранять мужду вызовами нужно не указатель, а сам объект RecordSet
|
|||
11
END
29.05.19
✎
14:00
|
(10) Может стоит все прочитать, загнать в ТЗ и, уже из нее читать порциями? Зачем нужно порциями непосредственно из рекордсета?
|
|||
12
olegves
29.05.19
✎
14:00
|
(9) а кто мешает к скулю подключиться с клиента?
|
|||
13
olegves
29.05.19
✎
14:01
|
+(12) или ты с планшета подключаешься?
|
|||
14
seperblunt2
29.05.19
✎
14:04
|
(11) это уже сделано, и хочется еще ускорить. Перегон РекордСета в ТЗ - занимает ощутимое время
|
|||
15
seperblunt2
29.05.19
✎
14:06
|
(12) с клиента нет доступа к SQL
|
|||
16
Garykom
гуру
29.05.19
✎
14:09
|
(0) Используй нечто внешнее относительно 1С
|
|||
17
Garykom
гуру
29.05.19
✎
14:10
|
А еще лучше http://v8.1c.ru/overview/Term_000000795.htm
|
|||
18
Garykom
гуру
29.05.19
✎
14:13
|
(17)+ Отдельную конфу 1С на сервере которая работает с MSSQL как с внешним источником.
В ней поднят веб или http сервис. Из своей основной конфы хоть с сервера хоть с клиента хоть пока по http соединяешься с отдельной и как хочешь хоть целиком хоть порциями получаешь. И не морочь уже голову некрофилией |
|||
19
Garykom
гуру
29.05.19
✎
14:15
|
(18)+ Имхо я бы микросервис на golang (бэк обычный же по rest) за пару часов сваял.
Простой exe'шни в итоге который после запуска работает как веб-сервер на нужном порту, принимает запросы от 1С по http и работает с MSSQL. |
|||
20
Garykom
гуру
29.05.19
✎
14:18
|
А это идея!
Хотя не верю что еще нет транслятора sql запросов по http в MSSQL сервер и получение обратно по http результата. |
|||
21
Garykom
гуру
29.05.19
✎
14:20
|
(19) Я загнул про пару часов, часа за глаза ибо https://github.com/besser/go-mssql
|
|||
22
olegves
29.05.19
✎
14:20
|
(15) СОМ объект тебе недоступен? Им прекрасно можно к скулю подключаться
|
|||
23
MM
29.05.19
✎
14:26
|
(14) Можно сохранить не в ТЗ, а во "временную" таблицу SQL, с первичным ключом в виде числа. Затем выбирать (3). В конце очистить.
(22) Если клиент веб браузер или находится в интернете с медленным каналом, то как достучаться до SQL? |
|||
24
seperblunt2
29.05.19
✎
14:35
|
(23) пожалуй вариант!
|
|||
25
Garykom
гуру
29.05.19
✎
14:43
|
(23) Вариант с "временной таблицей" слегка изврат, и предвижу кучу глюков.
Например дважды 1С запрос в двух сеансах тот же делает и что? |
|||
26
Garykom
гуру
29.05.19
✎
14:44
|
(25)+ Имя таблицы по идентификатору сеанса или еще чего из 1С?
Или еще один ключ в таблицу и очищать только свои? |
|||
27
AquaMan
29.05.19
✎
15:24
|
(0) гуглим OFFSET-FETCH
|
|||
28
Defender77
29.05.19
✎
15:41
|
(26) Временная таблица своя для каждого сеанса
|
|||
29
Вафель
29.05.19
✎
15:47
|
(26) временные таблицы вполне в рамках 1 сеанса, а вот глобальные временные -одни на всех
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |