|   |   | 
| 
 | Программное объединение файлов 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) какая чушь     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |