Имя: Пароль:
1C
 
СКД. Миллион строк в отчете. Как выводить?
0 IamAlexy
 
20.02.10
20:04
Соответственно интересует вопрос: есть некий отчет на СКД итог которого - допустим миллион строк.

вопрос - как такое выводить?

где то решения с "постраничным" выводом есть чтобы подсмотреть ?
1 Джинн
 
20.02.10
20:12
А его не нужно выводить. Нужно просто уволить заказчиков такого отчета. Ибо проанализировать лям строк и сделать какие-либо выводы на основании анализа просто невозможно.
2 IamAlexy
 
20.02.10
20:13
(1) ну хорошо..

300 строк в отчете..

то же ведь неудобно

а как выводить ?
3 Jolly Roger
 
20.02.10
20:16
(0) на рулонное АЦПУ...
4 AlexSSSS
 
20.02.10
20:17
(2) не понял проблему. Прокрутку отменили?
5 IamAlexy
 
20.02.10
20:17
(3) шестым шрифтом :)
6 IamAlexy
 
20.02.10
20:18
(4) допустим "нет прокрутки" :)


чисто теоретически - как организовать "постраничный" вывод результатов запроса ?
7 IamAlexy
 
20.02.10
20:18
кстати вопрос:

первые 100 можно выбрать, а как выбрать результаты с 101 по 200 ?
8 Джинн
 
20.02.10
20:21
(2) На прежней работе у директора было требование, чтобы любой отчет, попадающий к нему на стол занимал не более трех страниц. Вместе с пояснениями к отчету. Все остальное сходу выбрасывалось в корзину.

И в этом есть логика - нужно уметь выделять главное, классифицировать информацию, агрегировать ее и т.п.
9 AlexSSSS
 
20.02.10
20:23
(6) предварительный просмотр печати?
10 IamAlexy
 
20.02.10
20:23
(8) в этом есть логика.

но тем не менее задачу не отменяет.

отчет с большим количеством строк.
нужно вывести его на экран пользователю "постранично"
11 IamAlexy
 
20.02.10
20:23
(6) хм.. программно ? то есть результат запроса в поле табличного документа не показывать а сразу программно открывать предпросмотр ?
12 AlexSSSS
 
20.02.10
20:25
(11) зачем такой изврат то нужен???
13 AlexSSSS
 
20.02.10
20:25
(11) + и что такое "постранично" применительно к выводу в экранное окно
14 ERWINS
 
20.02.10
20:30
давно бесил этот момент
15 IamAlexy
 
20.02.10
20:30
(13) OFF: Почему городские библиотеки уничтожают книги

вот что такое постранично применительно к выводу в экранное окно.
16 IamAlexy
 
20.02.10
20:31
просто если СКД выводит большое количество строк зараз - оно жутко клиентскую машину завешивает...

а вот если разделить - то было бы клева.
17 IamAlexy
 
20.02.10
20:32
причем 2 направления поиска решений:

1. получать массив данных сразу и только выводить его постранично
2. получать данные порциями
18 IamAlexy
 
20.02.10
20:32
+(16) причем тормозит именно вывод на экран..
19 supremum
 
20.02.10
20:47
(0) Сколько строк занимает один лист а4?
(17) Порциями более правильный вариант, но скорости это не прибавит в выводе.
20 IamAlexy
 
20.02.10
21:19
вопрос в том как выбрать в запросе записи с 101ой по 200ую
21 IamAlexy
 
20.02.10
21:23
на предприятии 10000 человек и одно подразделение.
бухи хотят иметь возможность видеть отчет, ну например тот который по отпускам в СКД сделан - по 100 человек на странице.


вопрос - почему они должны быть лишены такого права ?
22 IamAlexy
 
20.02.10
21:25
в MySQL была конструкция типа:

SELECT * FROM tbl LIMIT 5,10;  # Retrieve rows 6-15


вопрос-  в 1С можно нечто подобное изобразить ?
23 ERWINS
 
20.02.10
21:31
(22) в мс есть только первые

за предлами транзакции нет гарантированного выбора следующих
24 IamAlexy
 
20.02.10
21:31
(23) про транзакцию речи не ведется

см. пример (21)

количество сотрудников меняется редко.
необходимо результат вывести "порциями"
25 ERWINS
 
20.02.10
21:43
(24) как раз проблема в незакрытии транзакции
26 Lama12
 
20.02.10
22:26
(0)Вроде не видел такого предложения, но есть волшебные кнопки "PgUp" и "PgDn". Как раз постранично...
(21)Ответ на вопрос- потому что бухи не понимаю как 100 строк на экране будут выглядеть на принтере. В принципе можно и миллион строк на один экран поместить, и 10 не поместить на лист бумаги.
В (15) нет ни одного упоминания про "постранично". А если имелось ввиду, как скан страницы книги, то тоже не понятно - что, через СКД выводить сканы книг из базы?
(19)+100
27 IamAlexy
 
20.02.10
22:27
(26) еп.. в (15)ссылка на ветку где есть страницы по 100 постов  чтобы было видно что такое "постранично"
28 МихаилМ
 
20.02.10
22:48
если известно правило упорядочивания (а оно всегда известно, но не всегда очевидно), выгрузите результат запроса в ТЗ с индексом по этому правилу и выбирайте порциями.    
а скд тут не причем, тк не расчитан на "крайние" случаи, как и все технологии
рапид девелопмент.
29 Stim
 
20.02.10
23:28
(28) хмм...СКД возвращает результат выполнения запроса + номера строк. Если сделать так: В одном отчете с СКД создать основной текст запроса, а со второго(рабочего) отчета обращаться в результату запроса первого с отбором по количеству?
30 IamAlexy
 
21.02.10
01:10
сделал.

2 процедуры:

1 процедура заполняет внешний источник данных. В таблицу значений попадают все строки запроса - например миллион строк.


2 прцедура выводит программно СКД с внешним источником данных "Объект" по сформированной таблице.

соответственно во вторую процедуру передаются номера крайних строк и соответственно из созданной в первой процедуре таблицы формируется источник данных для СКД включающий только строки заданного интервала.
31 IamAlexy
 
21.02.10
01:11
осталось сделать программный расчет количества страниц, формирование ссылок на страницы и вставку всего этого в каждую отображаемую страницу
32 IamAlexy
 
21.02.10
02:07
УАААХХААА ХАААа


смотрите и плачьте:

все работает http://xmages.net/upload/b2398f25.gif
33 Злопчинский
 
21.02.10
02:12
(32) АБАЛДЕТЬ!!!
34 Masquerade
 
21.02.10
02:29
(32)
Круто. Но сама идея "10 000 человек и одно подразделение "- нездорова, ИМХО.
35 IronDemon
 
21.02.10
02:42
(32) Думаешь отбор по н/пп будет быстр на таких объемах?
36 IronDemon
 
21.02.10
02:44
Упс, не прочитал (30)
37 syktyk
 
21.02.10
04:28
Вообще не могу понять таких отчетов. Это наверное очень круто? Может лучше pivot, или диаграмму красивую нарисовать?
38 i_rodionov
 
21.02.10
04:35
(37) Сергей, не глумитесь над человеком, действительно бывает такое, я сочувствую автору
39 IamAlexy
 
21.02.10
08:33
(34) ну а куда деваться...

опять же "10 000 человек и одно подразделение" это так - для примера было.
реальная задача - немного другая.
40 IamAlexy
 
21.02.10
08:35
(38) кстати сразу приходит на ум из какой то книги по 8.2 пример со списками. где объяснялось что и для чего нужны списки и что в ряде ситуаций нужно пользователю давать кнопки создания (например нового документа) дабы отучать от старой логики "открыл список - добавил новое значение - убедился что попало в список"

некоторые пользователи хотят сформировать огромную портянку чтобы убедится что из работа "не пропала"
41 МихаилМ
 
21.02.10
09:10
то (40)
и все-таки, задача для миллиона строк Вами не решена.
42 IamAlexy
 
21.02.10
09:25
(41) гы.
на реальной базе щас пыхтит собирается первая табличка...

долго зараза собирается.. уже 500 мегов оперативы сожрано а данные все еще собираются
43 МихаилМ
 
21.02.10
09:28
(42)
ну слава богу, 1с8 умеет возвращять захваченную опер. память.
главное - уложиться в 3 гига для тз и дискового пространства для mxl.
44 Masquerade
 
21.02.10
10:19
(42) так вывод ли на экран тормозит? )))
45 IamAlexy
 
21.02.10
10:22
кстати прикольно

1 600 000 строк уложилось в 600 мегов в ТЗ сохраненной в оперативе
а далее все довольно таки шустро листается...
46 МихаилМ
 
21.02.10
10:34
(45)
Ну значит я был не прав. Зачет.
47 IamAlexy
 
21.02.10
10:35
(46) ща сделаю чтобы красиво выводились ссылки на страницу и скину гифку...

реально получается...

только почемуто с шириной колонок неполучается :(
48 ERWINS
 
21.02.10
10:44
лучше обработку кидай....
49 IamAlexy
 
21.02.10
11:43
окончательный вариант на тестовых данных:

http://xmages.net/upload/0d5062fb.gif
50 IamAlexy
 
22.02.10
17:24
а вот пример с результатом в 1 600 000 строк

http://xmage.ru/images/ckdscreen3.gif

правда накосячил с шириной ссылки на страницу :)
нужно будет поправить.

16 000 страниц по 100 записей на странице

сложно сказать - будет ли это удобнее пользователю но фак что отчет можно вообще в принципе вывести пользователю - это факт.
51 МихаилМ
 
22.02.10
17:52
а как такой отчет сохранять.
или хотябы результат. ЗначениеВФайл().
52 IamAlexy
 
22.02.10
17:55
(41) как как - постранично.. ради этого все и делалось :)
53 МихаилМ
 
22.02.10
18:04
(41)
ну вобщем сохранить в частности нужно, чтобы проверить результат.
Как в Вашем случае проверить результат? Глазиками?
54 IamAlexy
 
22.02.10
18:21
(53) есть кнопка "все записи" :)

показывающая все записи попадающие в отчет
55 Холст
 
22.02.10
19:40
еще можно компонентой йоксель (http://yoksel.net.ru) покрутить
йоксель, по крайней мере в сравнении с 7.7, шустрее управляется с большими таблицами
100тыс строк в нем, например, можно вывести за 3-5 секунд на современном C2D процессоре
56 kitt
 
06.03.10
14:10
на SQLite конструкции типа
select * from table limit 100 offset 300
и
select * from table where id > 300 limit 100

работают с одинаковой скоростью, при условии что id это первичный ключ
в 1С8 так не прокатит?
57 kitt
 
06.03.10
14:30
(56) единственный косяк, как определить id смещения, если листать не сначала
Закон Брукера: Даже маленькая практика стоит большой теории.