|
Критическая ошибка платформы при выводе большого количества печ. форм | ☑ | ||
---|---|---|---|---|
0
mzelensky
13.01.20
✎
11:36
|
Доброго времени суток!
Имеется: 1) Win Server 20008 2) 1С:Предприятие 8.2.19.130 3) База на SQL 4) Работа в RDP терминале 4) Конфа на обычных формах (толстый клиент), нетиповая (что-то между Ут10.3 и Розницей) Запускаю обработку печати ценников. В тестовом примере 350 номенклатурных единиц, совокупно 5700 этикеток. Варианты: 1) При выводе (через "ТабДок.Показать()") в один табличный документ система падает (зависает с выводом сообщения "Прекращена работа программы 1cv8") 2) При выводе (через "ТабДок.Показать()") в несколько табличных документов, по 100 этикеток в каждый, система падает (зависает с выводом сообщения "Прекращена работа программы 1cv8") 3) При сохранении (через "ТабДок.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.XLSX)") в несколько табличных документов, по 100 этикеток в каждый, система падает (зависает с выводом сообщения "Прекращена работа программы 1cv8") По последним наблюдениям, когда идет сохранение табличных документов (описанный выше вариант №3), то система на протяжении всего процесса "выжирает" память. Но каких-то критических значений нет. Как только выделяемый размер оперативной памяти на процесс доходит до "560 000 Kb", то в этот момент система зависает. И все это никак не связано с составом самих товаров, их последовательностью и так далее. Вопрос: 1) Почему в данном случае выжирается память, если я ничего не накапливаю? 2) Как победить эту проблему? |
|||
1
ДенисЧ
13.01.20
✎
11:37
|
1. Потому что неустраняемый баг в платформе со времён 77.
2. Вывести 100, перезапустить 1с, повторить |
|||
2
mzelensky
13.01.20
✎
11:40
|
(1) Это где-то документировано, описано?
"Вывести 100, перезапустить 1с, повторить" - меня юзеры уже достали жаловаться на эту проблему. Им периодически нужно выводить большой объем этих этикеток и вручную выделять эти "порции" безумно неудобно. |
|||
3
Ёпрст
13.01.20
✎
11:43
|
(0) А зачем их показывать ? Отправляй сразу на выбранный принтёр и всё.
|
|||
4
mzelensky
13.01.20
✎
11:47
|
(3) Без разницы. Я тоже сперва думал, что дело в отображении. Но нет.
|
|||
5
shuhard
13.01.20
✎
11:48
|
(1) +1
фича известная, способы борьбы очевидны |
|||
6
mzelensky
13.01.20
✎
12:25
|
(5) Ну как, поделись "очевидными" способами. Я что-то адекватных не вижу.
Мне нужно или "показатЬ" все эти печатные формы или сохранить в файлы, чтобы потом можно было переслать. |
|||
7
Adilgeriy
13.01.20
✎
12:49
|
печать в PDF не пробовал?
|
|||
8
Franchiser
гуру
13.01.20
✎
13:11
|
Если печатаешь штрихкоды, то м.б. отказаться от ВК ШК ?
|
|||
9
ProxyInspector
13.01.20
✎
13:31
|
У меня подобная фигня была, когда был реализован кривой механизм формирования картинки ШК. По сути получалось что каждая картинка ШК это был объект типа Paint.exe и каждый занимал кучу места. В какой то момент это все отваливалась.
Я сейчас попробовал на своей базе порядка 2000 этикеток на 300 страниц. Проблем нет. Вероятнее всего у (0) кривые ручки |
|||
10
mzelensky
13.01.20
✎
14:07
|
(9) Как сейчас вывод ШК у тебя реализован?
|
|||
11
Ёпрст
13.01.20
✎
14:47
|
(10) шрифтом поди
|
|||
12
mzelensky
13.01.20
✎
15:29
|
(9) Так как?
|
|||
13
Ёпрст
13.01.20
✎
15:35
|
(12) чего как ? Обычный шрифт для печати шк
|
|||
14
Franchiser
гуру
13.01.20
✎
15:35
|
(12) только функция спец нужна: не просто применить шрифт к 13 цифрам EAN 13
|
|||
15
unenu
13.01.20
✎
15:36
|
(2) а что не так?
платформа не падает, просто ваш кривой код поедает все ресурсы. |
|||
16
Franchiser
гуру
13.01.20
✎
15:37
|
Функция СформироватьСтрокуEanGnivc(ШтрихкодСтрокойСимволов) Экспорт
Попытка Тест = Число(ШтрихкодСтрокойСимволов); Исключение ВызватьИсключение "Штрихкод может содержать только цифры"; КонецПопытки; СимволыСпособовКодирования = "#$%&'()*+,"; ЛевыйЗащитныйШаблон = "!"; СреднийЗащитныйШаблон = "-"; ПравыйЗащитныйШаблон = "!"; СимволыШрифтаПоТипамКодов = Новый Соответствие; СимволыШрифтаПоТипамКодов.Вставить("L", "0123456789"); СимволыШрифтаПоТипамКодов.Вставить("G", "ABCDEFGHIJ"); СимволыШрифтаПоТипамКодов.Вставить("R", "abcdefghij"); СпособыКодированияЛевойЧасти = Новый Массив; СпособыКодированияЛевойЧасти.Добавить("LLLLLL"); СпособыКодированияЛевойЧасти.Добавить("LLGLGG"); СпособыКодированияЛевойЧасти.Добавить("LLGGLG"); СпособыКодированияЛевойЧасти.Добавить("LLGGGL"); СпособыКодированияЛевойЧасти.Добавить("LGLLGG"); СпособыКодированияЛевойЧасти.Добавить("LGGLLG"); СпособыКодированияЛевойЧасти.Добавить("LGGGLL"); СпособыКодированияЛевойЧасти.Добавить("LGLGLG"); СпособыКодированияЛевойЧасти.Добавить("LGLGGL"); СпособыКодированияЛевойЧасти.Добавить("LGGLGL"); СпособКодированияПравойЧасти = "RRRRRR"; Если СтрДлина(ШтрихкодСтрокойСимволов) = 13 Тогда КоличествоСимволовВГруппе = 6; ИначеЕсли СтрДлина(ШтрихкодСтрокойСимволов) = 8 Тогда КоличествоСимволовВГруппе = 4; СимволыСпособовКодирования = ""; ШтрихкодСтрокойСимволов = "0"+ШтрихкодСтрокойСимволов; Иначе ВызватьИсключение "Поддерживаются только штрихкоды длиной 13 и 8 символов"; КонецЕсли; ИндексСпособаКодирования = Число(Лев(ШтрихкодСтрокойСимволов,1)); ЛеваяЧастьКода = ""; ПраваяЧастьКода = ""; Для ИндексСимвола = 1 По КоличествоСимволовВГруппе Цикл ЛеваяЧастьКода = ЛеваяЧастьКода + Сред(СимволыШрифтаПоТипамКодов[Сред(СпособыКодированияЛевойЧасти[ИндексСпособаКодирования],ИндексСимвола,1)] ,Число(Сред(ШтрихкодСтрокойСимволов,(ИндексСимвола+1),1))+1 ,1); ПраваяЧастьКода = ПраваяЧастьКода + Сред(СимволыШрифтаПоТипамКодов[Сред(СпособКодированияПравойЧасти,ИндексСимвола,1)] ,Число(Сред(ШтрихкодСтрокойСимволов,(ИндексСимвола+КоличествоСимволовВГруппе+1),1))+1 ,1); КонецЦикла; Результат = "" + Сред(СимволыСпособовКодирования,ИндексСпособаКодирования+1,1) + ЛевыйЗащитныйШаблон + ЛеваяЧастьКода + СреднийЗащитныйШаблон + ПраваяЧастьКода + ПравыйЗащитныйШаблон; Возврат Результат; КонецФункции |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |