|
Ошибка недостаточно памяти. Как лечить? | ☑ | ||
---|---|---|---|---|
0
Ivan_495
28.02.14
✎
19:40
|
Ошибка недостаточно памяти. Как лечить?
Удаленное подключение, файловая база 1с , отчет на скд , Обращается к нескольким базам, память выжирает немного больше 3 ГБ, вылетает с ошибкой "недостаточно памяти", Сервер 2008r2 |
|||
1
Banned
28.02.14
✎
19:42
|
Исправить отчёт так, чтобы он жрал чуть меньше 1гБ
|
|||
2
Ivan_495
28.02.14
✎
19:45
|
(1) невозможно , при меньшей детализации отрабатывате нормально, при увеличении детализации, ошибка недостаточно памяти, хотя на сервере 12 Гб, а процесс ест тока 4Гб
Как настроить, чтобы удаленное подключение использовало память больше 4ГБ? |
|||
3
Banned
28.02.14
✎
19:52
|
(2) Посмотри направо - там будет стенка... Тебе туда с такими вопросамию
|
|||
4
Ivan_495
28.02.14
✎
19:59
|
up
|
|||
5
Ivan_495
28.02.14
✎
20:02
|
скорее всего 32- разрядный сервер 1с не может адресовать память больше 4 гб
|
|||
6
Feunoir
28.02.14
✎
20:04
|
Ну тут как бы особо и советовать нечего. Ты сам всё понимаешь. Если с отчётом сделать ничего нельзя, значит придётся менять сервер на 64 битный.
|
|||
7
Ivan_495
28.02.14
✎
20:22
|
(6) в отчете все запросы из разных баз гружу в одну таблицу, памяти жрет меньше 1 гб,
когда эту таблицу скармливаю СКД как внешний источник данных, память выжирает сразу 4 Гб |
|||
8
vqwy
28.02.14
✎
20:34
|
(0) винпоцетином, не?
|
|||
9
H A D G E H O G s
28.02.14
✎
20:35
|
(7) Расшифровки, представления ссылочных полей, галочка "автозаполнение"
|
|||
10
France
28.02.14
✎
20:37
|
в общем, упрощать и уплощать запрос.
|
|||
11
Ivan_495
28.02.14
✎
20:46
|
(9),(10)
таблицу скармливаю СКД как внешний источник данных, никакого запроса в скд нет и нет галочки автозаполнение |
|||
12
H A D G E H O G s
28.02.14
✎
20:56
|
100500 там какая-то очевидная фигня
|
|||
13
Ivan_495
28.02.14
✎
21:44
|
(12) какое количество строк можно скормить скд?
|
|||
14
Ivan_495
28.02.14
✎
21:46
|
индикатор внизу показывает 32%
затем ошибка "недостаточно памяти" |
|||
15
Ivan_495
28.02.14
✎
21:48
|
вот создаю табл значений
КЧ = Новый КвалификаторыЧисла(12,2); КЧ3 = Новый КвалификаторыЧисла(12,3); КС = Новый КвалификаторыСтроки(100); Массив = Новый Массив; Массив.Добавить(Тип("Строка")); ОписаниеТиповС = Новый ОписаниеТипов(Массив, , КС); Массив.Очистить(); Массив.Добавить(Тип("Число")); ОписаниеТиповЧ = Новый ОписаниеТипов(Массив, , ,КЧ); Массив.Очистить(); Массив.Добавить(Тип("Число")); ОписаниеТиповЧ3 = Новый ОписаниеТипов(Массив, , ,КЧ3); tabl_all=Новый ТаблицаЗначений; tabl_all.Колонки.Добавить("Организация",ОписаниеТиповС); tabl_all.Колонки.Добавить("Период"); tabl_all.Колонки.Добавить("Контрагент", ОписаниеТиповС); tabl_all.Колонки.Добавить("Менеджер", ОписаниеТиповС); tabl_all.Колонки.Добавить("Регион", ОписаниеТиповС); tabl_all.Колонки.Добавить("Сумма",ОписаниеТиповЧ); tabl_all.Колонки.Добавить("кг",ОписаниеТиповЧ3); tabl_all.Колонки.Добавить("кор",ОписаниеТиповЧ3); tabl_all.Колонки.Добавить("Товар", ОписаниеТиповС); tabl_all.Колонки.Добавить("Документ", ОписаниеТиповС); затем запрос V84=Новый ComОбъект("V82.Application"); ПУть4="D:"; Попытка Открытие4=V84.Connect("File="""+ПУть4+""";); Исключение Сообщить("База данных не открыта!"); V84=0; Открытие4=ЛОЖЬ; Возврат; КонецПопытки; //КонецЕСли; ЗапросКом4 =V84.newObject("Запрос"); ЗапросКом4.Текст = ВНЕШНИЙЗАПРОС; ЗапросКом4.УстановитьПараметр("НачалоПериода", ЭтотОбъект.ПолучитьФорму("Продажи").ПараметрДанныхНачалоПериода.Значение); ЗапросКом4.УстановитьПараметр("КонецПериода", ЭтотОбъект.ПолучитьФорму("Продажи").ПараметрДанныхКонецПериода.Значение); ЗапросКом4.УстановитьПараметр("Периодичность",ЭтотОбъект.ПолучитьФорму("Продажи").ПараметрДанныхПериодичность.Значение); ЗапросКом4.УстановитьПараметр("ТолькоПродажи",ЭтотОбъект.ПолучитьФорму("Продажи").ПараметрДанныхТолькоПродажи.Значение); Результат = ЗапросКом4.Выполнить().Выгрузить(); Для каждого тек из Результат цикл Нов_стр=tabl_all.Добавить(); Нов_стр.Организация=тек.Организация+"old" ; Нов_стр.Период=тек.Период; Нов_стр.Контрагент=тек.Контрагент; Нов_стр.Менеджер=тек.Менеджер; Нов_стр.Регион=тек.Регион; Нов_стр.Сумма=тек.сумма; Нов_стр.кор=тек.кор; Нов_стр.кг=тек.кг; Нов_стр.Товар=тек.Товар; Нов_стр.Документ=тек.Документ; КонецЦикла; V84.ЗавершитьРаботуСистемы(ложь); V84=0; Открытие4=ЛОЖЬ; Результат=0; /////////////////////////////////////////////4-я база конец // Попытка ВнешниеНаборыДанных = Новый Структура; ВнешниеНаборыДанных.Вставить("Продано",tabl_all); tabl_all=0; Настройки = КомпоновщикНастроек.Настройки; ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных; КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки); ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,ВнешниеНаборыДанных, ДанныеРасшифровки); ЭтотОбъект.ПолучитьФорму("Продажи").ЭлементыФормы.Результат.Очистить(); ДокументРезультат = ЭтотОбъект.ПолучитьФорму("Продажи").ЭлементыФормы.Результат; ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ДокументРезультат); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); |
|||
16
Ivan_495
28.02.14
✎
21:49
|
в таблице хранятся строки длиной 100 симв и числа
|
|||
17
Ivan_495
28.02.14
✎
21:52
|
почему скд хочет больше 4 Гб памяти для обработки этой таблицы?
|
|||
18
serffer
28.02.14
✎
21:58
|
не факт что поможет, но вместо выгрузить() из запроса попробуй использовать выбрать() тогда переменная результат не будет есть память.
не используй параметр функции данныеРасшифровки - мне кажется они тоже отъедают память. а какой запрос в СхемаКомпоновкиДанных? или там просто набор-Объект? если да, то может ограничить поля выбора какнибудь? в (9) тебе это примерно советуют. |
|||
19
Ivan_495
28.02.14
✎
22:02
|
набор-Объект
поля ограничил как строковые длиной 100 симв |
|||
20
Ivan_495
28.02.14
✎
22:08
|
данныеРасшифровки тоже убрал, щас запустил
|
|||
21
Ivan_495
28.02.14
✎
22:10
|
(18) в скд Набор-Объект
|
|||
22
NcSteel
28.02.14
✎
22:11
|
(5) Батюшки вот это открытие ))))
|
|||
23
France
28.02.14
✎
22:12
|
ДокументРезультат = ЭтотОбъект.ПолучитьФорму("Продажи").ЭлементыФормы.Результат; -???
|
|||
24
NcSteel
28.02.14
✎
22:14
|
(23) Да это эпично!!!
|
|||
25
Ivan_495
28.02.14
✎
22:16
|
(18) в отчете должно получиться 365 колонок, для скд это нормально?
|
|||
26
NcSteel
28.02.14
✎
22:18
|
(25) Для человека это не нормально! Нафуя. Я уверен, что человек анализирует максимум 5. Лучше по требованию ему выдавать доп колонки
|
|||
27
Ivan_495
28.02.14
✎
22:26
|
все замечения приняты
расшифровки убрал, ограничения по полям сделал, раньше ошибка вылетала на 32% сейчас на 64% |
|||
28
Ivan_495
28.02.14
✎
22:26
|
да скд явно не OLAP
что еще посоветуете настроить в скд |
|||
29
Ivan_495
28.02.14
✎
22:35
|
перед выполнением этих операторов, отчет использует всего лишь 240 мбайт оперативки
ВнешниеНаборыДанных = Новый Структура; ВнешниеНаборыДанных.Вставить("Продано",tabl_all); Настройки = КомпоновщикНастроек.Настройки; КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки); ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,ВнешниеНаборыДанных); ЭтотОбъект.ПолучитьФорму("Продажи").ЭлементыФормы.Результат.Очистить(); ДокументРезультат = ЭтотОбъект.ПолучитьФорму("Продажи").ЭлементыФормы.Результат; ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ДокументРезультат); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); при выполнении этих операторов рост использования памяти до 4Гб |
|||
30
Ivan_495
28.02.14
✎
22:45
|
up
|
|||
31
NcSteel
28.02.14
✎
22:51
|
(30) Зачем апать, тебе уже сказали, либо уменьшай объем данных, либо переходи на 64 разряда.
|
|||
32
France
28.02.14
✎
22:57
|
и заодно почитай и про FASMI.
хы.. несчастные Кодд и Пендс.. |
|||
33
Ivan_495
28.02.14
✎
22:57
|
(31)может есть спецы по СКД еще , что-нибудь подскажут
|
|||
34
NcSteel
28.02.14
✎
22:58
|
(33) А почему:
ЭтотОбъект.ПолучитьФорму("Продажи").ЭлементыФормы.Результат.Очистить(); Не убрал... нравится объекты получать? И выводи на норальный ТабДок. |
|||
35
Рэйв
28.02.14
✎
23:33
|
Памяти добить хотябы до 8 уже предлагали?
|
|||
36
France
01.03.14
✎
00:23
|
(35) не поможет. Я свои 8 Григов кома за пару секунд кривой на стройкой скд в даун отправлял. 64 битый, кстати. И вообще, крутой комп для разработчика - это зло. Кто не верит - милости прошу в ут 11 поработать
|
|||
37
Mikhail Volkov
01.03.14
✎
10:49
|
(17) Все же сервер 1С (не 2008r2) скольки разрядный?
|
|||
38
Mikhail Volkov
01.03.14
✎
10:51
|
С такой ошибкой "недостаточно памяти" 1С вылетает, когда мало места на системном диске
|
|||
39
H A D G E H O G s
01.03.14
✎
11:57
|
Я могу подключить, глянуть
пишите 374-881-272 |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |