Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Программное объединение файлов mxl либо альтернатива ТабличныйДокумент

Программное объединение файлов mxl либо альтернатива ТабличныйДокумент
Я
   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 ?
   v77
 
2 - 21.08.20 - 22:53
И чо с этими этикетками делают? На принтере печатают?
   v77
 
3 - 21.08.20 - 23:02
Может просто выгружать данные в файл, а на той стороне читать файл и печатать частями?
Ну или скормить файл внешней программе, которая сгенерит pdf
И почему одним файлом обязательно? Он на заводе открывается часа два наверное
   v77
 
4 - 21.08.20 - 23:05
имеется ввиду в текстовый файл выгружать
   Ёпрст
 
5 - 21.08.20 - 23:32
а датаматрикс, поди через ocx еще ?
   Ёпрст
 
6 - 21.08.20 - 23:38
Пробуй печатать датаматрикс шрифтом, 
так, например:
http://catalog.mista.ru/public/127747/

и...твой моксель не будет весить ничего
   timurhv
 
7 - 22.08.20 - 00:31
(5) Так и без картинок пустой табличный документ с большим количеством строк столько съедает ОЗУ. Думаю, надо разработчикам платформы писать. Либо что-то с объединением областей неладное происходит.
(1) Проблема ещё при формировании табличного документа, сама pdf весит в итоге 55мб, а 1С свой формат съедает под 12Гб
(3) нет, минуты 2 открывается

Нашел подобную проблему

v8: Табличный документ утечка памяти.
Но у меня и без границ такая фигня
   timurhv
 
8 - 22.08.20 - 00:33
На днях сохраню пустой документ и выложу.
   Злопчинский
 
9 - 22.08.20 - 00:34
у меня как-то клинит "пустой табличный документ" и "с большим количеством строк"
   Kassern
 
10 - 22.08.20 - 09:12
Можно попробовать подключить обработчик ожидания в котором частями (например по 1000 строк) выгружать данные в файл. После того как все строки обработаны, завершить обработчик ожидания. Каждый раз, когда будет завершаться процедура из обработчика, будет очищаться память ОЗУ затраченная на ее выполнение
   Креатив
 
11 - 22.08.20 - 09:38
(4)Поддержу товарища. Выгрузить в текстовый или dbf. Написать маленькую программку, которая на основании этого файлика сздаёт word/excel/pdf.Запустить её на компе, где памяти достаточно.
   timurhv
 
12 - 22.08.20 - 14:34
(9) Неправильно выразился, с пустыми данными.

Вот пример обработки
https://yadi.sk/d/pnoV_jSJfNIzOQ

Притом прикол: если перезапустить службу сервера 1С, то первый запуск у меня бывало что не съедало по 5-6Гб ОЗУ.
   quest
 
13 - 22.08.20 - 15:35
>Печатаем этикетки с DataMatrix больше 30000 одним файлом, формируется через стандартный механизм ТабличныйДокумент.Вывести(ЗаполненнаяОбластьЭтикетки) и потом файл отправляется на завод-производитель.

А есть разница - 30 тыс или 30 этикеток для завода? может проблема ваша надумана и решается совсем другими средствами?
   timurhv
 
14 - 22.08.20 - 16:06
(13) Просто считаю, что платформа не должна столько потреблять ОЗУ при формировании табличного документа с большим количеством строк\колонок без данных в них.
Такое чувство, что 1С просто резервирует оперативку впрок, т.к. при выводе в 2 раза большего количества строк из примера (12) потребление не особо возрастает.
   timurhv
 
15 - 22.08.20 - 16:18
Скажем так, Excel же не съедает 4-12Гб ОЗУ при открытии файлов с 1048576 строками и 16384 столбцами на каждом листе, почему 1С столько жрет?
   Garykom
 
16 - 22.08.20 - 17:22
(0) Позвонить/написать на "завод-производитель", спросить про альтернативные pdf форматы.
ZPL, EPL или CPCL или еще что подобное.
   quest
 
17 - 22.08.20 - 17:31
(14) какая чушь

Список тем форума
Рекламное место пустует  Рекламное место пустует
Миста — веселый ресурс со своими эксклюзивными тараканами Ymryn
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.