Имя: Пароль:
1C
1С v8
Недостаточно памяти при формировании запроса
0 ChMikle
 
07.01.15
12:23
при формировании отчета за год по продажам товаров порядка 10 тыс. позиций вываливает ошибку недостаточно памяти , начали разбираться - ограничение в самой архитектуре 1С 8.2 при работе до 4 гб , запрос простой, выборка товаров по виду документа   количество и сумма . Кто -нибудь как-то смог обойти это ограничение ?
1 XLife
 
07.01.15
12:25
клиент/сервер + sql
2 Armando
 
07.01.15
12:28
Делай выборку порциями
3 ДенисЧ
 
07.01.15
12:29
ставь 64бит сервер
4 kumena
 
07.01.15
12:29
>> начали разбираться - ограничение в самой архитектуре 1С 8.2 при работе до 4 гб

если вы сами разобрались то нафига тут писать?

выяснили бы сначала кому памяти не хватает, серверу или клиенту.
5 Armando
 
07.01.15
12:29
Оптимизация использования оперативной памяти
http://its.1c.ru/db/v8std#content:2149184374:hdoc
6 ChMikle
 
07.01.15
12:32
(3) сервак 64-битный
(4) в серваке он запрос выполнять начинает и пишет недостаточно памяти.
(2) выборку порциями - поподробнее можно , в тз частями грузить ?
7 shuhard
 
07.01.15
12:34
(0) сразу запрос покажешь или будет до вечера соплю жевать ?
8 ChMikle
 
07.01.15
12:34
(5) я не зареген , можешь в жвух словах сказать как бороться ?
9 kumena
 
07.01.15
12:35
>>  ограничение в самой архитектуре 1С 8.2 при работе до 4 гб

а это откуда можно узнать? не вяжется как то с 64битным сервером.
10 XLife
 
07.01.15
12:37
(9) толстый клиент... 32 бита
11 ДенисЧ
 
07.01.15
12:38
4гб и 64бит сервер не вяжутся.
Одна из черепашек 314здит
12 kumena
 
07.01.15
12:40
(10) причем тут клиенты, автор заявляет что у него ошибка памяти на сервер
13 unregistered
 
07.01.15
12:43
(0) >>  запрос простой

Ждём текст простого запроса...

>> недостаточно памяти

Где? На сервере? На клиенте?

>> ограничение ... до 4 гб

Как узнали? (самому аж интересно)
14 Armando
 
07.01.15
12:47
(8)
Правильно ограничивать результат запроса искусственно:

Копировать в буфер обмена
ВсеОбработано = Ложь;
Пока Истина Цикл
Запрос = Новый Запрос;
Запрос.Текст =
  "ВЫБРАТЬ ПЕРВЫЕ 1000
  | Номенклатура.Ссылка,
  | Номенклатура.Наименование,
  | Номенклатура.ВидНоменклатуры
  |ИЗ
  | Справочник.Номенклатура КАК Номенклатура
  |ГДЕ
  | <условие выборки необработанных записей>";

Копировать в буфер обмена
РезультатЗапроса = Запрос.Выполнить();
ВсеОбработано = РезультатЗапроса.Пустой();
Если ВсеОбработано Тогда
  Прервать;
КонецЕсли;

Копировать в буфер обмена
// Обход порции результата запроса
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
  // Обработка элемента выборки
  // ...
КонецЦикла;

Копировать в буфер обмена
КонецЦикла;

Также правильно:

Копировать в буфер обмена
Выборка = Справочники.Номенклатура.Выбрать(..., Отбор);
Пока Выборка.Следующий() Цикл
  // Обработка элемента выборки
  // ...
КонецЦикла;

поскольку в этом случае платформа 1С:Предприятие выполняет получение данных из базы порциями фиксированного размера.
15 SleepyHead
 
гуру
07.01.15
12:48
(0) реквизиты составного типа есть?
16 ChMikle
 
07.01.15
12:49
на сервере запускаю отчет , вываливает недостаточно памяти , в отладчике в процедуре на выполнении запроса .
(11) админ ковырял , что сама платформа 1С 8.2 под 32 бита написана , и на нее соответсвенно действуют ограничения даже если сам сервер 64 ьита
(14) там абс надо делать и ранжировать по объему продаж :( внутри иерархии, долго работать будет
(15) нет
17 XLife
 
07.01.15
12:51
(16) >админ ковырял , что сама платформа 1С 8.2 под 32 бита написана , и на нее соответсвенно действуют ограничения даже если сам сервер 64 ьита

клиент 32 бита
сервер 64 бита

запускай не на клиенте, а на сервере... профит!
18 ChMikle
 
07.01.15
12:53
(17) на 64 объем занимаемой оперативной памяти динамически расширяет ?
19 XLife
 
07.01.15
12:57
(18) на 64 битах совсем другие ограничения
20 ChMikle
 
07.01.15
12:58
(19) а размер ограниения не скажите ?
21 ДенисЧ
 
07.01.15
12:59
(16) " админ ковырял , что сама платформа 1С 8.2 под 32 бита написана , и на нее соответсвенно действуют ограничения даже если сам сервер 64 ьита "
Админа выгнать. Написать ему такую характеристику, чтобы его даже в в дворники не взяли (тем более там уже занято)
22 ДенисЧ
 
07.01.15
12:59
(20) 2 ТБ тебя устроит?
23 unregistered
 
07.01.15
12:59
(16) >>  админ ковырял

Админ бредит или не отошёл ещё от праздников.
24 unregistered
 
07.01.15
13:00
Текст запроса будет?...
Или можно не ждать?
25 unregistered
 
07.01.15
13:02
- реквизиты составного типа есть?
- нет

Как же нет, если в (0) написано "выборка товаров по виду документа"

Как минимум есть различные виды документов. Если конечно в тексте запроса вы напрямую не ограничиваете типы.
26 ChMikle
 
07.01.15
13:04
(22) впечатляет , пошел разбираться
ВЫБРАТЬ
    Обороты.Товар КАК Товар,
    Обороты.Склад КАК Склад,
    Обороты.СуммаРасход - Обороты.СуммаПриход КАК Себестоимость,
    Обороты.СуммаПродажиРасход - Обороты.СуммаПродажиПриход КАК Сумма,
    Обороты.КоличествоРасход - Обороты.КоличествоПриход КАК Количество
ИЗ
    РегистрНакопления.ДвиженияТоваров.Обороты(&ДатаНачала, &ДатаОкончания, Запись, ) КАК Обороты
ГДЕ
    Обороты.СуммаПродажиОборот <> 0
27 Mutniy2
 
07.01.15
13:09
Обороты.Товар КАК Товар,
    Обороты.Склад КАК Склад,
местами поменять, не?
28 mdocs
 
07.01.15
13:10
А если избавится от виртуальной таблицы оборотов - быстрее не будет? Все равно ж деталька по записям идет.
29 ChMikle
 
07.01.15
13:12
(28) да я думаю тут надо по ДенисуЧ :)), сам запрос посылать на сервер , сервак-то 64 битный , пример бы еще кода листинга , вообще был бы благодарен
30 mdocs
 
07.01.15
13:17
Ну кроме того, очевидно что расход-приход и есть оборот с минусом.
31 ChMikle
 
07.01.15
13:17
вобщем при ночном тесте выявилось, вываливает ошибку на клиенте при возврате результата запроса на клиенте
32 ChMikle
 
07.01.15
13:22
http://msdn.microsoft.com/en-us/library/aa366778(v=vs.85).aspx толстый клиент стоит у пользователей :)
33 unregistered
 
07.01.15
13:23
Не понял для чего тут детализация по записям?...
Явно текст не полный, либо надо убирать детализацию по записям.
34 ChMikle
 
07.01.15
13:26
(33) у записией есть разный признак типа документа , из буфера в рдп с сервака копировал не совсем удобно
35 mdocs
 
07.01.15
13:28
Ну так реальный текст запроса будет или нет? Никаких типов и видов документов в запросе из (26) нет
36 ChMikle
 
07.01.15
13:34
(33) да тут детализация ни к чему
(35) нет отбора нет , весь запрос ...как есть
37 ChMikle
 
07.01.15
13:39
детализация периода запись тут лишняя
38 unregistered
 
07.01.15
13:56
А что хоть за конфа?
И что за регистр такой интересный, где вместе живут и Сумма и СуммаПродажи?
СуммаПродажи это ресурс? Если да, то как он в ноль закрывается? Или это реквизит?
39 ChMikle
 
07.01.15
14:14
(38) да самописка , есть один регистр , суммапродаж -это ресурс , регистр 1 партии товаров :) , заработало быстро , цифры конечные сошлись ... но все равно я так понимаю с толстого клиента надо слезать , пробывать тонкий клиент -сервер , как Денис Ч советует, тогда все летать должно начать
40 unregistered
 
07.01.15
14:26
(38) (39) Судя по структуре регистра, есть подозрения, что регистр этот какой-то кривой... В противном случае я в упор не понимаю как он может закрыться в ноль.

>> пробовать тонкий клиент...тогда все летать должно начать

Если речь идёт о самописке, то я бы особо не спешил. У управляемых форм есть куча своих собственных тормозов, которые не только нивелируют профит от клиент-серверной архитектуры, но и полностью его дискредитируют. Достаточно посмотреть типовые конфы от 1С, переписанные на УФ.
41 ChMikle
 
07.01.15
14:41
(38)(39) регистр измерения : товар,склад,фирма ,ресурсы суммапродаж,себестоимость,количество
42 unregistered
 
07.01.15
14:52
(41) А что такое тогда в тексте запроса Обороты.СуммаРасход - Обороты.СуммаПриход?...

А вид регистра какой - остатков или оборотов?

Что-то я вообще перестаю понимать как у вас эта хреновина работает....

Судя по (41) это регистр оборотов, в который делаются движения при продаже.
Но судя по тексту запроса там есть Приход и Расход - значит это регистр остатков. Но как вы закрываете такой регистр, если у вас в ресурсах сумма продажи и себестоимость?....

Впрочем, проблема из (0) решилась, а остальное - ваше дело.
43 Другая
 
07.01.15
19:03
Вы стебаетесь штоле? Автор, сделай СГРУППИРОВАТЬ по СКЛАД, ТОВАР, либо пеши полный текст запроса, без упрощений.
44 senior
 
08.01.15
11:34
А с чего вообще взяли что памяти не хватает при выполнении запроса на сервере, а не при построении табличного документа на клиенте. Например если сделать карточку счета за большой период, проблема возникнет на клиенте (естественно речь о сервере64)
45 ChMikle
 
09.01.15
16:54
(44) на клиенте на толстом , уже тут вроде раобрались сервак 64-битный , там вроде как нет ограничений . переписывать надо на тонкий клиент отчеты, если я правильно понял из дисскуссии