Имя: Пароль:
1C
1С v8
Не хватает памяти при выводе в табличный документ
0 ssserg
 
19.04.13
16:14
Добрый день всем.
При попытке формирования одного самописного отчета за большой период выходит ошибка "Недостаточно памяти".

Стал разбирать в скд наборы данных в консоли запросов.
Запрос набора данных отрабатывал как надо, но когда я попытался вывести результат запроса в табличный документ, ну то есть клацаешь правой кнопкой по окну вывода консоли и "вывести список", то оно мне опять выдало ту же ошибку про нехватку памяти.

Тут нужно каким то образом вручную выводить результаты запроса небольшими кусками, посоветуйте способы как этой сделать?
1 ДенисЧ
 
19.04.13
16:16
Разбивай на отдельные периоды и выводи в разные табличные документы
2 butterbean
 
19.04.13
16:16
записывай сразу в экселевский файл, например
3 Fragster
 
гуру
19.04.13
16:17
расшифровку по максимуму убрать, группировок поменьше, особенно за колонки
4 ssserg
 
19.04.13
16:21
(1) (2)
Не вариант.
5 ssserg
 
19.04.13
16:23
(3) Всё что есть резать нельзя, тем более что причина не в отчете, а в способе вывода в табличный документ.
6 Fragster
 
гуру
19.04.13
16:23
что в "расшифровку по максимуму убрать" не подходит?
7 ssserg
 
19.04.13
16:25
(6) не подходит.
8 Мохнатое рыло
 
19.04.13
17:26
(7) Ну добавь памяти и купи Сервер 64 бит ;)
9 ssserg
 
19.04.13
17:40
(8) Интересует как это можно сделать программно ;)
10 Maxus43
 
19.04.13
17:42
(4) сформируй отчет на нормальной машине, на серваке какомнить, а не на ноуте для просмотра фильмов
11 ssserg
 
19.04.13
17:48
(10) Память не причем, в процессах она не засирается даже до половины. Пробовал формировать отчет на сервере о 16гб - та же фигня.
12 H A D G E H O G s
 
19.04.13
17:49
(10) Ахереть.
13 Fragster
 
гуру
19.04.13
17:49
(11) ты хоть понял, что значи "убрать расшифровку"?
14 H A D G E H O G s
 
19.04.13
17:50
(11) ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент.Вывести (DataCompositionResultSpreadsheetDocumentOutputProcessor.Output)
ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент (DataCompositionResultSpreadsheetDocumentOutputProcessor)
Вывести (Output)
Синтаксис:

Вывести(<ПроцессорКомпоновки>, <ВозможностьПрерыванияПользователем>)
Параметры:

<ПроцессорКомпоновки> (обязательный)

Тип: ПроцессорКомпоновкиДанных.
Процессор компоновки данных, из которого будут получаться элементы результата.
<ВозможностьПрерыванияПользователем> (необязательный)

Тип: Булево.
Указывает, может ли пользователь прервать вывод при помощи комбинации клавиш Ctrl+Break.
Значение по умолчанию: Истина
Возвращаемое значение:

Тип: ТабличныйДокумент.

Описание:

Выводит весь результат в объект.
При этом автоматически исполняется метод НачатьВывод, перебираются все элементы процессора компоновки и выводятся в результат. После чего исполняется метод ЗакончитьВывод, результат которого возвращается данным методом.

Доступность:

Сервер, толстый клиент, внешнее соединение.
15 H A D G E H O G s
 
19.04.13
17:51
Доступность:

Сервер


Запилить это на сервере, и сервер 64-х битный, либо перезагружать перед выводом и пробовать.
16 ssserg
 
19.04.13
17:55
(13) Каким же образом можно убрать из _результата запроса_
в _консоли запросов_ расшифровку которой там и так нет?

Данных так много, что убирание расшифровки в СКД тут погоды не сделает.
17 Fragster
 
гуру
19.04.13
17:59
а сколько данных?
18 Maxus43
 
19.04.13
18:01
(12) чегойто ругаешся, а?
19 ssserg
 
19.04.13
18:02
(14) Так вот, каким образом получить доступ к этим самым элементам при выводе. То есть нужно часть данных из элементов процессора компоновки вывести в табличный документ - пауза(как то вызывать принудительное прерывание) - затем другую часть и.т.д.
20 H A D G E H O G s
 
19.04.13
18:04
(18) Мы обсудим это через час, за кружечкой пива.
21 Fragster
 
гуру
19.04.13
18:07
дарю, я сегодня добрый....

   ПроцессорВывода.НачатьВывод();
   Пока Истина Цикл
       ОбработкаПрерыванияПользователя();
       ЭлементРезультата = ПроцессорКомпоновки.Следующий();
       Если ЭлементРезультата = Неопределено Тогда
           Прервать;
       КонецЕсли;
       ПроцессорВывода.ВывестиЭлемент(ЭлементРезультата);
   КонецЦикла;
   ПроцессорВывода.ЗакончитьВывод();