СКД. Миллион строк в отчете. Как выводить? #463145


#0 by IamAlexy
Соответственно интересует вопрос: есть некий отчет на СКД итог которого - допустим миллион строк. вопрос - как такое выводить? где то решения с "постраничным" выводом есть чтобы подсмотреть ?
#1 by Джинн
А его не нужно выводить. Нужно просто уволить заказчиков такого отчета. Ибо проанализировать лям строк и сделать какие-либо выводы на основании анализа просто невозможно.
#2 by IamAlexy
ну хорошо.. 300 строк в отчете.. то же ведь неудобно а как выводить ?
#3 by Jolly Roger
на рулонное АЦПУ...
#4 by AlexSSSS
не понял проблему. Прокрутку отменили?
#5 by IamAlexy
шестым шрифтом :)
#6 by IamAlexy
допустим "нет прокрутки" :) чисто теоретически - как организовать "постраничный" вывод результатов запроса ?
#7 by IamAlexy
кстати вопрос: первые 100 можно выбрать, а как выбрать результаты с 101 по 200 ?
#8 by Джинн
На прежней работе у директора было требование, чтобы любой отчет, попадающий к нему на стол занимал не более трех страниц. Вместе с пояснениями к отчету. Все остальное сходу выбрасывалось в корзину. И в этом есть логика - нужно уметь выделять главное, классифицировать информацию, агрегировать ее и т.п.
#9 by AlexSSSS
предварительный просмотр печати?
#10 by IamAlexy
в этом есть логика. но тем не менее задачу не отменяет. отчет с большим количеством строк. нужно вывести его на экран пользователю "постранично"
#11 by IamAlexy
хм.. программно ? то есть результат запроса в поле табличного документа не показывать а сразу программно открывать предпросмотр ?
#12 by AlexSSSS
зачем такой изврат то нужен???
#13 by AlexSSSS
+ и что такое "постранично" применительно к выводу в экранное окно
#14 by ERWINS
давно бесил этот момент
#15 by IamAlexy
вот что такое постранично применительно к выводу в экранное окно.
#16 by IamAlexy
просто если СКД выводит большое количество строк зараз - оно жутко клиентскую машину завешивает... а вот если разделить - то было бы клева.
#17 by IamAlexy
причем 2 направления поиска решений: 1. получать массив данных сразу и только выводить его постранично 2. получать данные порциями
#18 by IamAlexy
+ причем тормозит именно вывод на экран..
#19 by supremum
Сколько строк занимает один лист а4? Порциями более правильный вариант, но скорости это не прибавит в выводе.
#20 by IamAlexy
вопрос в том как выбрать в запросе записи с 101ой по 200ую
#21 by IamAlexy
на предприятии 10000 человек и одно подразделение. бухи хотят иметь возможность видеть отчет, ну например тот который по отпускам в СКД сделан - по 100 человек на странице. вопрос - почему они должны быть лишены такого права ?
#22 by IamAlexy
в MySQL была конструкция типа: SELECT * FROM tbl LIMIT 5,10;  # Retrieve rows 6-15 вопрос-  в 1С можно нечто подобное изобразить ?
#23 by ERWINS
в мс есть только первые за предлами транзакции нет гарантированного выбора следующих
#24 by IamAlexy
про транзакцию речи не ведется см. пример количество сотрудников меняется редко. необходимо результат вывести "порциями"
#25 by ERWINS
как раз проблема в незакрытии транзакции
#26 by Lama12
Вроде не видел такого предложения, но есть волшебные кнопки "PgUp" и "PgDn". Как раз постранично... Ответ на вопрос- потому что бухи не понимаю как 100 строк на экране будут выглядеть на принтере. В принципе можно и миллион строк на один экран поместить, и 10 не поместить на лист бумаги. В нет ни одного упоминания про "постранично". А если имелось ввиду, как скан страницы книги, то тоже не понятно - что, через СКД выводить сканы книг из базы? +100
#27 by IamAlexy
еп.. в ссылка на ветку где есть страницы по 100 постов  чтобы было видно что такое "постранично"
#28 by МихаилМ
если известно правило упорядочивания (а оно всегда известно, но не всегда очевидно), выгрузите результат запроса в ТЗ с индексом по этому правилу и выбирайте порциями.     а скд тут не причем, тк не расчитан на "крайние" случаи, как и все технологии рапид девелопмент.
#29 by Stim
хмм...СКД возвращает результат выполнения запроса + номера строк. Если сделать так: В одном отчете с СКД создать основной текст запроса, а со второго(рабочего) отчета обращаться в результату запроса первого с отбором по количеству?
#30 by IamAlexy
сделал. 2 процедуры: 1 процедура заполняет внешний источник данных. В таблицу значений попадают все строки запроса - например миллион строк. 2 прцедура выводит программно СКД с внешним источником данных "Объект" по сформированной таблице. соответственно во вторую процедуру передаются номера крайних строк и соответственно из созданной в первой процедуре таблицы формируется источник данных для СКД включающий только строки заданного интервала.
#31 by IamAlexy
осталось сделать программный расчет количества страниц, формирование ссылок на страницы и вставку всего этого в каждую отображаемую страницу
#32 by IamAlexy
смотрите и плачьте: все работает
#33 by Злопчинский
АБАЛДЕТЬ!!!
#34 by Masquerade
Круто. Но сама идея "10 000 человек и одно подразделение "- нездорова, ИМХО.
#35 by IronDemon
Думаешь отбор по н/пп будет быстр на таких объемах?
#36 by IronDemon
Упс, не прочитал
#37 by syktyk
Вообще не могу понять таких отчетов. Это наверное очень круто? Может лучше pivot, или диаграмму красивую нарисовать?
#38 by i_rodionov
Сергей, не глумитесь над человеком, действительно бывает такое, я сочувствую автору
#39 by IamAlexy
ну а куда деваться... опять же "10 000 человек и одно подразделение" это так - для примера было. реальная задача - немного другая.
#40 by IamAlexy
кстати сразу приходит на ум из какой то книги по 8.2 пример со списками. где объяснялось что и для чего нужны списки и что в ряде ситуаций нужно пользователю давать кнопки создания (например нового документа) дабы отучать от старой логики "открыл список - добавил новое значение - убедился что попало в список" некоторые пользователи хотят сформировать огромную портянку чтобы убедится что из работа "не пропала"
#41 by МихаилМ
то и все-таки, задача для миллиона строк Вами не решена.
#42 by IamAlexy
гы. на реальной базе щас пыхтит собирается первая табличка... долго зараза собирается.. уже 500 мегов оперативы сожрано а данные все еще собираются
#43 by МихаилМ
ну слава богу, 1с8 умеет возвращять захваченную опер. память. главное - уложиться в 3 гига для тз и дискового пространства для mxl.
#44 by Masquerade
так вывод ли на экран тормозит? )))
#45 by IamAlexy
1 600 000 строк уложилось в 600 мегов в ТЗ сохраненной в оперативе а далее все довольно таки шустро листается...
#46 by МихаилМ
Ну значит я был не прав. Зачет.
#47 by IamAlexy
ща сделаю чтобы красиво выводились ссылки на страницу и скину гифку... реально получается... только почемуто с шириной колонок неполучается :(
#48 by ERWINS
лучше обработку кидай....
#49 by IamAlexy
окончательный вариант на тестовых данных:
#50 by IamAlexy
а вот пример с результатом в 1 600 000 строк правда накосячил с шириной ссылки на страницу :) нужно будет поправить. 16 000 страниц по 100 записей на странице сложно сказать - будет ли это удобнее пользователю но фак что отчет можно вообще в принципе вывести пользователю - это факт.
#51 by МихаилМ
а как такой отчет сохранять. или хотябы результат. ЗначениеВФайл.
#52 by IamAlexy
как как - постранично.. ради этого все и делалось :)
#53 by МихаилМ
ну вобщем сохранить в частности нужно, чтобы проверить результат. Как в Вашем случае проверить результат? Глазиками?
#54 by IamAlexy
есть кнопка "все записи" :) показывающая все записи попадающие в отчет
#55 by Холст
еще можно компонентой йоксель ( покрутить йоксель, по крайней мере в сравнении с 7.7, шустрее управляется с большими таблицами 100тыс строк в нем, например, можно вывести за 3-5 секунд на современном C2D процессоре
#56 by kitt
на SQLite конструкции типа select * from table limit 100 offset 300 и select * from table where id > 300 limit 100 работают с одинаковой скоростью, при условии что id это первичный ключ в 1С8 так не прокатит?
#57 by kitt
единственный косяк, как определить id смещения, если листать не сначала
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С