Имя: Пароль:
1C
1С v8
Оперативная память 1с при сохранении большого числа файлов
0 UMthis
 
09.11.17
07:45
Доброго времени суток!
1с 8.2 Ситуация следующая.

Есть каталог картинок которые лежат на сервере(jpg).(картинок около 10 000 штук)
Есть ссылки на эти картинки в 1с.
Необходимо данные картинки по определенному признаку сгруппировать и поместить в общие файлы pdf. (в одном файле пдф будет по 3-6 листов с картинками)

Груповую обработку по формированию пдф файлов написал(Создается таб док, в него рисуются картинки с разделителем)

но вот не задача... 1С начинает дико жрать память и не высвобождать ее при сохранении каждого отдельного таб документа.
Порциями выгружать вообще не вариант..

Кто-нить решал данную проблему с высвобождением памяти?? и как?
Благодарю..
1 Ёпрст
 
09.11.17
08:02
(0) не использовать 1с и табличный документ для этих целей.
2 Otark
 
09.11.17
08:10
ТабДок = Неопределено или формирование каждого дока в отдельной функции не спасает? Про управление памятью которую занимает 1с из самой 1с не слышал не разу. И да (1) может иметь смысл.
3 Фрэнки
 
09.11.17
08:19
(2) скорей всего, что не спасает. Как минимум, на прежних релизах платформы такие манипуляции видимого эффекта не давали
4 rphosts
 
09.11.17
08:20
не существует у 1с релиза 8.2 есть релиз например 8.2.19.130.
Если у релиза есть проблема с утечкой памяти - инфа об этом давно известна. Если это не проблема платформы - значит проблема кода.
5 Фрэнки
 
09.11.17
08:23
(2) под отдельной функцией тоже не спасает. Нужно спасаться открытием отдельного контекстного пространства в виде объекта или специальной придуманной формы.

НО! Это если не прибегать к использованию регламентных заданий или фоновых и т.п. Нормальный вариант есть в том, чтобы создать задание регламентное, стартовать его в фоновом режиме и тогда оно само за собой подчистит память при завершении. На относительно новых релизах платформы и на 8.2.19.х уже должно работать нормально.
6 UMthis
 
09.11.17
08:23
(2) так и делаю в отдельной функ-ции. Пробовал очищать его после записи..

(1)Дело в том, что данная манипуляция необходима для пользователей в дальнейшем.
7 Фрэнки
 
09.11.17
08:26
(6) к сожалению убедился в том, что если существует табличный документ в контексте, то выделенная ему память продолжает "висеть" до закрытия контекста - не закрытия окна/поля с табличным документом, а самого того владельца, которому это все окно или поле принадлежит.
8 mehfk
 
09.11.17
08:26
(6)
Откликаешься на эту вакансию https://kemerovo.hh.ru/vacancy/20157532
Устраиваешься работать в 1С.
Исправляешь баги платформы.
Увольняешься из 1С.
Профит!
9 UMthis
 
09.11.17
08:28
(7) Принудительно программно его нельзя закрыть?
Меня очень смущает сей факт, что это не предусмотрено..
10 Фрэнки
 
09.11.17
08:38
(9) нельзя. В классических языках есть отдельное понятие и процедура деструктора объекта, в котором проверяется вся захваченная объектом память и освобождается принудительно. В 1С деструкторов объектам не раскрыли и конструкции
ТабДок = Неопределено
не являются дестурктором. Чтоб закрылись все созданные явным и неявным образом объекты с владельцем "текущий контекст" должно "закрыться" объект-владелец, например, именно форма, указанная владельцем в создании табличного документа. Если не указан владелец, то даже не знаю, кого нужно будет "закрыть", чтоб произошла очистка памяти без завершения сеанса пользователя, например.
11 ildary
 
09.11.17
08:39
(10) тогда может имеет смысл добавить окно прокладку, которое открывается, отрабатывает текущую задачу и закрывается, освобождая ТабДок?
12 UMthis
 
09.11.17
08:41
(10) в теории, на грани фантастики.-
Если данная функция будет вешаться на форму(определенную)
А цикл, будет вызывать- открывать/закрывать формы и выполнять алгоритм.
В теории это же сработает?)))
13 Фрэнки
 
09.11.17
08:48
(11,12) ТабДок на чем создается? Если это поле самой формы, то я подозреваю, что форму нужно сделать не внутри объекта вида отчет/обработка, а допустим общая форма конфигурации. Подозреваю, что для общих форм вероятно предусмотрели очистку памяти. А если это формы создаются после создания объекта обработка/отчет, то они продолжат существовать в памяти до момента закрытия само объекта-родителя формы.

Тут важно понимать, что формы это не совсем объекты.
14 Фрэнки
 
09.11.17
08:50
В реальности надо копать в регламентные/фоновые задания. Тогда эти задания будут создавать новые сеансы, записывать файловые документы на диск и завершаться, а затем уже результаты открывать и смотреть, причем, если говорим о пдф, то открывать их уже запуском нового приложения-вьювера
15 Сияющий в темноте
 
09.11.17
09:00
ну да,если нн хватает памяти на клиенте,давайье перейдем на сервер и будет не хватать памяти там,но он же 64 бита,и мы это не сразу заметим
а вообще,говорилось,что 1с при освобождении памяти не сразу возвращает ее системе,поэтому,посмотрите,что происходит с памятью при формировании второго документа,возможно,она больше памяти не запррсит
16 Фрэнки
 
09.11.17
09:01
13+ скорей всего, что общая форма тоже не является самостоятельным объектом и "привяжется" к контексту того объекта, в котором она открывается
17 Фрэнки
 
09.11.17
09:03
(15) но за пределами открываемых/закрываемых сеансов утечки памяти нет
18 UMthis
 
09.11.17
09:04
(16) Таб док я не открываю и не вывожу.. он висит программно. я его только заполняю(области). потом в пдф выгружаю.
19 UMthis
 
09.11.17
09:12
(16) все верно... не работает через доп форму это решить.
20 xxTANATORxx
 
09.11.17
09:25
(0)а почему не использовать 8.3?
21 UMthis
 
09.11.17
09:53
(20) ок, допустим есть возможность в упр режиме запустить.
и как это реализовать?
22 H A D G E H O G s
 
09.11.17
12:39
(0) Вы говорите, как будто это что-то плохое.
23 H A D G E H O G s
 
09.11.17
12:41
Это вы еще на 32x сидите скорее всего.
Добро пожаловать в светлое будущее x64, когда 1Ска ограничивает себя только свободной оперативной памятью:
https://photos.app.goo.gl/agVEXa1cv3FvFpRA3
24 ildary
 
09.11.17
12:43
(23) позвольте поинтересоваться - это реальное потребление памяти при работе или результат утечек памяти?
25 igork1966
 
09.11.17
12:44
(0) может имеет смысл формировать html и его уже конвертить
в pdf?

https://forum.infostart.ru/forum9/topic76893/
https://geektimes.ru/post/134505/
26 H A D G E H O G s
 
09.11.17
12:45
(24) Это реальное потребление памяти при печати/просмотре 100500 высококачественных tiff изображений.

Как только свободная оперативка подходит к концу - 1С сбрасывает потребленную оперативку.
27 ildary
 
09.11.17
12:46
(26) т.е. в 1С открываем картинку, за ней другую, и так 100500 раз -и получаем (23)?
28 H A D G E H O G s
 
09.11.17
12:46
Хочу выразить респект. Если раньше, при потреблении больше 1.5 гига изображения иногда проскакивали неотрисованными/неотпечатанными, то теперь такой фигни нет. Все хорошо в x64.
29 H A D G E H O G s
 
09.11.17
12:47
(27) Да, все так.
30 Фрэнки
 
09.11.17
12:50
(29) Так это не просто 64-битный клиент, а вероятно более свежая версия платформы. Я видел где-то рекомендации использовать 64-бит начиная с какой-то там версии для решения проблем с нехваткой памяти при работе конфигуратора в режиме сравнения конфигураций, объединения, обновления и т.п.
31 UMthis
 
10.11.17
10:58
вопрос решен..
Развернут сервак с 128гб оперативки)))