Имя: Пароль:
1C
1С v8
Программное объединение файлов 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) какая чушь
AdBlock убивает бесплатный контент. 1Сергей