Имя: Пароль:
1C
1С v8
объемные отчеты на основе внешних источников данных (ТаблицаЗначений -> СКД)
0 892689
 
15.05.18
12:15
Добрый день!
Возможно эта проблема не имеет решения на текущий момент, но если подскажете альтернативные варианты, то буду несказанно рад)

Проблема такая: Сделал мега-большой специфический расчетный отчет с данными в ТаблицеЗнаений. Эту ТаблицуЗначений использовал в качестве источника данных для СКД.

НО: при очень большом количестве записей в ТаблицеЗначений при формировании отчета на СКД вылетает ошибка "нехватки памяти"
Если повезет, то сам отчет все же выведется в макет, но через 15 минут.

Искал возможности загрузить ТаблицуЗначений во временные таблицы запроса и последующего использования в СКД - ПИШУТ НЕВОЗМОЖНО!

Подскажите, пожалуйста, альтернативные варианты?

(совет делать все в одном запросе не подходит, т.к. ТаблицаЗначений формируется на основе не менее 10-ти запросов к WEB-сервисам других информационных баз)
1 kabanoff
 
15.05.18
12:58
(0) На каком этапе вылетает? На этапе компоновки или на этапе вывода в форму отчета?
2 Buster007
 
15.05.18
13:20
И как проанализировать этот отчет? Подозреваю, что его будут выгружать и там уже накладывать фильтры. Не проще ли сразу их наложить?
3 892689
 
15.05.18
13:28
(1) Ошибка возникает на этапе вывода в форму отчета
4 catena
 
15.05.18
13:29
(3)а чем бы тогда помогла загрузка этой таблицы во времянку в запросе?
5 892689
 
15.05.18
13:30
(2) Фильтры уже сделал, но иногда будет необходима возможность просмотра всей консолидированной информации
6 Timon1405
 
15.05.18
13:30
отключите расшфровки в отчете
7 fedoss
 
15.05.18
13:31
Как вариант - пнуть эту таблицу на SQL сервер, а СКД данные получить уже оттуда
8 catena
 
15.05.18
13:31
(5)Может быть тогда имеет смысл завести под нее физическую таблицу? Регистр там...
9 892689
 
15.05.18
13:33
(4) В 1С если отчет СКД формируется на основе запроса - то все хорошо. Если этот же запрос просто выгрузить в ТаблицуЗначений и использовать в качестве внешнего источника для СКД, то при больших объемах время вывода в макет вырастает в 10 и более раз.
10 fedoss
 
15.05.18
13:40
Кстати, раз уж это "мега-большой специфический расчетный отчет" не проще регламентом периодически получать эти данные в физические таблицы (хошь прям внутри 1С, хошь во внешний источник), а СКД строить уже по данным этих таблиц?
11 catena
 
15.05.18
13:46
(9)Вы свое сообщение перечитайте - у СКД проблема именно с выводом этого объема.
12 catena
 
15.05.18
13:48
Есть у меня один упоротый отдел, который заказал себе такой отчет. Долго я их отговаривала, в результате плюнула, сделала им регистр, чтобы хотя бы базу не грузили в момент формирования. Ежемесячно его формируют, три часа сохраняют, три часа в екселе открывают и, с-ка, фильтры накладывают. Ночуют на работе, чтоб к концу месяца успеть. Дебилоиды.
13 892689
 
15.05.18
13:48
(10) Данные в каждую минуту меняются - это и остатки по всем складам всех организаций и взаиморасчеты и прочее. Вариант с физической таблицей подходит и не_подходит. Подходит - потому что гарантированно даст положительный результат. А вот какова скорость этого решения будет - пока неизвестно. Может быть он будет 30 минут только записывать эту таблицу. А если одновременно начнут формировать этот отчет 10 пользователей, то может и не прокатить
14 892689
 
15.05.18
13:52
(7) записывать данные напрямую в SQL не пробовал. Кто знает: это будет быстрее, чем запись в таблицу 1С?
(если запись будет производится из самой 1С-ки)
15 RKx
 
15.05.18
14:00
(0) 1с - х32, поди?
16 kabanoff
 
15.05.18
14:01
(3) Зачем пользователям такой отчет, в котором 100500 строк? Как они его будут потом анализировать?

(14) Если использовать bulk-insert, то да, т.к. 1С пишет в SQL построчно.
17 RKx
 
15.05.18
14:04
(0) "ТаблицаЗначений формируется на основе не менее 10-ти запросов к WEB-сервисам других информационных баз)"

Сделай регистр сведений, или справочник - не суть важно. Запихай туда свою ТЗ, и делай сколько угодно СКД...
18 fedoss
 
15.05.18
14:05
(13) ну все равно есть какой-то разумный интервал обновления, судя по информации об отчете, он не моментально выполняется. Так что и данные можно обновлять периодически централизовано, а не получать для каждого пользователя.

(14) Можно попробовать через ВнешнийИсточникДанныхТаблицаНаборЗаписей, должно быть быстрее записи в таблицу 1С. Хотя РСНаборЗаписей тоже должно быть довольно быстро. Все зависит от объема данных.
19 kittystark
 
15.05.18
14:06
(0) перейти на х64 версию платформы/клиента
20 RKx
 
15.05.18
14:09
(14) Лицензию нарушить хочешь? Щас копирасты набегут...

Гораздо быстрее. Я-бы, и обработал всё на SQL-сервере. А в ТЗ результат уже утянул-бы.
21 fedoss
 
15.05.18
14:11
(20) Почему нарушить?? Никто не говорил про прямую запись в таблицы 1С
22 scanduta
 
15.05.18
14:13
(0) Была такая проблема в больших отчетах с 0.5 - 1 млн строк и выше.

СКД очень долго их обрабатывает. Решили выгрузкой в excel без использования СКД
23 RKx
 
15.05.18
14:13
(21) А как он СКД делать будет? Из внешних источников, или уложив ТЗ в темпдб?
24 kabanoff
 
15.05.18
14:21
(3) А вообще, как вариант, можно попробовать заменить вывод в Табличный документ на вывод в Таблицу значений. И если удастся вывести, то полученную таблицу сохранить в XLS.
25 fedoss
 
15.05.18
14:28
(23) Проще всего СКД по таблице ВИД
26 892689
 
15.05.18
15:46
(15) Да, сервер 32-х разрядный, как перенесут я сообщу результатах.
27 892689
 
15.05.18
15:48
(6) Спасибо, как-то сразу об этом не задумался, но проверить смогу только завтра. Интересно, какой % производительности это может дать;
28 892689
 
15.05.18
15:50
(22) Спасибо за идею с excel! Как вариант - очень даже подходит.
29 Timon1405
 
15.05.18
15:53
держите в курсе, тема интересная
30 Buster007
 
15.05.18
15:55
(28) удали им эксель на компе и все научаться пользоваться фильтрами в отчетах
31 892689
 
15.05.18
18:17
(29) Отключение расшифровки сократило время вывода на 16%, - не фонтан, но какой-никакой прирост.
32 mistеr
 
15.05.18
21:34
(13) >Данные в каждую минуту меняются - это и остатки по всем складам всех организаций и взаиморасчеты и прочее.

У вас явная проблема с дизайном. Такие данные тащить в отчеты через веб сервисы неправильно. Их нужно загружать в базу-хранилище и строить отчеты там.

Почитайте про 1С:Консолизацию, что ли.
33 mistеr
 
15.05.18
21:34
1С:Консолидацию
34 tesseract
 
16.05.18
01:36
(13) Для таких случаев придумали тот же сервер отчетов, который потом стал BI.

Каждую минуту данные не могут меняться. Может меняться некоторый процент данных. Вот их берем и записываем, например через регистр какой-нибудь, который после всех "ЯТутвСКЛИспользуюСтрокиЧерезЛайкЧерезКучуТаблицкоторыеЕщеФормируютсяИспользуяЗапросыВЦикле" даёт нормальный результат.