![]() |
|
Программное объединение файлов mxl либо альтернатива ТабличныйДокумент | ☑ | ||
---|---|---|---|---|
0
timurhv
21.08.20
✎
21:58
|
Как-то наболело с ограничениями 1С возиться в последнее время, крик души.
Дано: Сервер 1С 8.3.17.1549, 8Гб ОЗУ (админы упираются и готовы увеличить только в следующем году, т.к. в бюджет на этот финансовый год не заложено). Лицензия на сервер 1С уровня ПРОФ (съедает только 80% от доступной ОЗУ, файл подкачки не учитывается - подстава со стороны 1С, честно не знал об этом, всегда думал что файл подкачки тоже сможет использовать). Куплена в прошлом году, поэтому обновления до КОРП не предусмотрено. Ставил параметр "Максимальный объем памяти рабочих процессов" в "-1" когда было пользователей меньше 10 - отрабатывалось корректно, файл подкачки съедался. Печатаем этикетки с DataMatrix больше 30000 одним файлом, формируется через стандартный механизм ТабличныйДокумент.Вывести(ЗаполненнаяОбластьЭтикетки) и потом файл отправляется на завод-производитель. Соответственно 1С съедает безбожное количество ОЗУ при выводе заполненных областей в единый ТабличныйДокумент вплоть до падения rphost (пробовал полностью очищать макет: без параметров, границ и картинок, ОЗУ съедается столько же). Утечки памяти нет, если делать периодически ТабличныйДокумент.Очистить() - ОЗУ отнимается не больше 700мб. Сами файлы mxl весят примерно 300мб. А ОЗУ с табличным документом и всем пустыми объединенными областями 12Гб (WTF, 1 к 40?!). Как вариант сейчас вижу только ТабличныйДокумент.Записать(ВременныйФайл). Далее сохранять их в pdf и сливать в единый через pdftk. Может кто-то сталкивался с такими костылями и программно парсил/объединял mxl файлы в один. Либо есть другие неординарные решения, т.к. своих мыслей уже нет. |
|||
1
Йохохо
21.08.20
✎
22:09
|
а если напечатать на Bullzip PDF Printer ?
|
|||
2
v77
21.08.20
✎
22:53
|
И чо с этими этикетками делают? На принтере печатают?
|
|||
3
v77
21.08.20
✎
23:02
|
Может просто выгружать данные в файл, а на той стороне читать файл и печатать частями?
Ну или скормить файл внешней программе, которая сгенерит pdf И почему одним файлом обязательно? Он на заводе открывается часа два наверное |
|||
4
v77
21.08.20
✎
23:05
|
имеется ввиду в текстовый файл выгружать
|
|||
5
Ёпрст
гуру
21.08.20
✎
23:32
|
а датаматрикс, поди через ocx еще ?
|
|||
6
Ёпрст
гуру
21.08.20
✎
23:38
|
Пробуй печатать датаматрикс шрифтом,
так, например: http://catalog.mista.ru/public/127747/ и...твой моксель не будет весить ничего |
|||
7
timurhv
22.08.20
✎
00:31
|
(5) Так и без картинок пустой табличный документ с большим количеством строк столько съедает ОЗУ. Думаю, надо разработчикам платформы писать. Либо что-то с объединением областей неладное происходит.
(1) Проблема ещё при формировании табличного документа, сама pdf весит в итоге 55мб, а 1С свой формат съедает под 12Гб (3) нет, минуты 2 открывается Нашел подобную проблему v8: Табличный документ утечка памяти. Но у меня и без границ такая фигня |
|||
8
timurhv
22.08.20
✎
00:33
|
На днях сохраню пустой документ и выложу.
|
|||
9
Злопчинский
22.08.20
✎
00:34
|
у меня как-то клинит "пустой табличный документ" и "с большим количеством строк"
|
|||
10
Kassern
22.08.20
✎
09:12
|
Можно попробовать подключить обработчик ожидания в котором частями (например по 1000 строк) выгружать данные в файл. После того как все строки обработаны, завершить обработчик ожидания. Каждый раз, когда будет завершаться процедура из обработчика, будет очищаться память ОЗУ затраченная на ее выполнение
|
|||
11
Креатив
22.08.20
✎
09:38
|
(4)Поддержу товарища. Выгрузить в текстовый или dbf. Написать маленькую программку, которая на основании этого файлика сздаёт word/excel/pdf.Запустить её на компе, где памяти достаточно.
|
|||
12
timurhv
22.08.20
✎
14:34
|
(9) Неправильно выразился, с пустыми данными.
Вот пример обработки https://yadi.sk/d/pnoV_jSJfNIzOQ Притом прикол: если перезапустить службу сервера 1С, то первый запуск у меня бывало что не съедало по 5-6Гб ОЗУ. |
|||
13
quest
22.08.20
✎
15:35
|
>Печатаем этикетки с DataMatrix больше 30000 одним файлом, формируется через стандартный механизм ТабличныйДокумент.Вывести(ЗаполненнаяОбластьЭтикетки) и потом файл отправляется на завод-производитель.
А есть разница - 30 тыс или 30 этикеток для завода? может проблема ваша надумана и решается совсем другими средствами? |
|||
14
timurhv
22.08.20
✎
16:06
|
(13) Просто считаю, что платформа не должна столько потреблять ОЗУ при формировании табличного документа с большим количеством строк\колонок без данных в них.
Такое чувство, что 1С просто резервирует оперативку впрок, т.к. при выводе в 2 раза большего количества строк из примера (12) потребление не особо возрастает. |
|||
15
timurhv
22.08.20
✎
16:18
|
Скажем так, Excel же не съедает 4-12Гб ОЗУ при открытии файлов с 1048576 строками и 16384 столбцами на каждом листе, почему 1С столько жрет?
|
|||
16
Garykom
гуру
22.08.20
✎
17:22
|
(0) Позвонить/написать на "завод-производитель", спросить про альтернативные pdf форматы.
ZPL, EPL или CPCL или еще что подобное. |
|||
17
quest
22.08.20
✎
17:31
|
(14) какая чушь
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |