Имя: Пароль:
1C
1С v8
Нехватки памяти, алкогольные декларации и все-все-все.
,
0 H A D G E H O G s
 
11.10.12
21:59
Нашел забавный баг, который выносит нехило память (ориентировочно он), в табличном документе.

По непонятной причине в макет (да и в mxl) дописывается совершенно абсурдный кусок типа

{#base64:77u/MiwxLDM4MWVkNjI0LTkyMTctNGU2My04NWRiLWM0YzNjYjg3ZGFhZSwNCnsN

Cns5LA0KeyJQYXR0ZXJuIiwNCnsiRCIsIkQifQ0KfSwNCnsNCnsNCnsxMCwxLA0K

ezMsNCwNCnswfQ0KfSwNCnszLDQsDQp7MH0NCn0sDQp7NiwzLDAsMX0sMCwNCnsz

LDMsDQp7LTIyfQ0KfSwNCnszLDQsDQp7MH0NCn0sDQp7Myw0LA0KezB9DQp9LA0K

ezMsMywNCnstN30NCn0sDQp7MywzLA0Key0yMX0NCn0sDQp7MywxLA0Key0xOH0s

MCwwLDB9LA0KezEsMH0NCn0sMjEsMCwwLDAsMCwwLDEsMCwwLDAsMSwwLDAsMCww

LDAsNCwwLA0KeyJVIn0sDQp7IlUifSwiIiwyLDEsMCwwLDAsMCwNCnszLDAsDQp7

MH0sIiIsLTEsLTEsMSwwfSwNCnszLDAsDQp7MH0sIiIsLTEsLTEsMSwwfSwwLDAs

MCwNCnswLDAsMH0sDQp7MSwwfSwwLDAsMCwwfQ0KfSwNCnsxLA0KezlhNzY0M2Qy

LTE5ZTktNDVlMi04ODkzLTI4MGJjOTE5NWE5NywNCns0LA0KeyJVIn0sDQp7IlUi

fSwwLCIiLDAsMH0NCn0NCn0sDQp7MH0sMCwxLDAsDQp7MSwwfSwwfQ0KfSww}

Причем в соседнее идентичное поле - ничего не дописывается. Лечиться полной очисткой поля и переоформлением его в макете.

Такие дела.
1 H A D G E H O G s
 
11.10.12
22:01
И так у меня в 3- х полях, что приводит к тому, что 100000-строчный таб док. отжирает 2 гига оперативки и весит на винте 600 метров.
2 H A D G E H O G s
 
11.10.12
22:01
Счаст конвертну эту base64, вдруг там че годное
3 H A D G E H O G s
 
11.10.12
22:02
Будте осторожны, когда оформляете макеты, не копируйте ячейки откуда попало
4 H A D G E H O G s
 
11.10.12
22:04
Ничего интересного там не оказалось, вот такая ботва, такое ощущение, что вложенная ячейка

?2,1,381ed624-9217-4e63-85db-c4c3cb87daae,
{
{9,
{"Pattern",
{"D","D"}
},
{
{
{10,1,
{3,4,
{0}
},
{3,4,
{0}
},
{6,3,0,1},0,
{3,3,
{-22}
},
{3,4,
{0}
},
{3,4,
{0}
},
{3,3,
{-7}
},
{3,3,
{-21}
},
{3,1,
{-18},0,0,0},
{1,0}
},21,0,0,0,0,0,1,0,0,0,1,0,0,0,0,0,4,0,
{"U"},
{"U"},"",2,1,0,0,0,0,
{3,0,
{0},"",-1,-1,1,0},
{3,0,
{0},"",-1,-1,1,0},0,0,0,
{0,0,0},
{1,0},0,0,0,0}
},
{1,
{9a7643d2-19e9-45e2-8893-280bc9195a97,
{4,
{"U"},
{"U"},0,"",0,0}
}
},
{0},0,1,0,
{1,0},0}
},0
5 H A D G E H O G s
 
11.10.12
22:04
Поискать
381ed624-9217-4e63-85db-c4c3cb87daae
9a7643d2-19e9-45e2-8893-280bc9195a97

в базе, али ну его?
6 Fragster
 
гуру
11.10.12
22:06
381ed624-9217-4e63-85db-c4c3cb87daae 'nj xnj pf nbg&
7 Fragster
 
гуру
11.10.12
22:06
это что за типа?
8 H A D G E H O G s
 
11.10.12
22:06
(7) Это GUID
9 H A D G E H O G s
 
11.10.12
22:06
(7) Откуда я знаю?
10 H A D G E H O G s
 
11.10.12
22:06
Могу образчик mxl сбросить
11 Fragster
 
гуру
11.10.12
22:10
(8) сделай ЗначениеВСтрокуВнутр и покури. Или ЗначениеИзСтрокиВнутр с этой шляпой
12 Бубр
 
11.10.12
22:10
гуид данных  которые используешь  или откуда то взявшийся?
13 Fragster
 
гуру
11.10.12
22:10
(10) ну скинь, тока я счас смотреть не буду, если только завтра
14 H A D G E H O G s
 
11.10.12
22:12
Все, отбой, это не данные, это же из макета, а не из таб дока строка
15 Fragster
 
гуру
11.10.12
22:12
просто типы тоже гуидами кодируются, например вот интересно: http://infostart.ru/public/71130/#Pro_bystrye_massivy

я так делал из массива ТЗ и обратно - вполне моментально получается
16 H A D G E H O G s
 
11.10.12
22:14
Простите за Вебфайл конечно, но искать другое лениво
http://webfile.ru/6160182
17 H A D G E H O G s
 
11.10.12
22:16
Я дятелъ, короче.
Вместо того, чтобы макет поправить, исвращался с выносами на сервер, Временными хранилищами, и.т.д.. А ведь хотел глянуть, но не верил и некогда было.
Некогда думать, надо пилить. Не всегда срабатывает
18 Fragster
 
гуру
11.10.12
22:23
это не может быть настройкой границ и форматов всяких?
19 H A D G E H O G s
 
11.10.12
22:49
нет
20 H A D G E H O G s
 
19.10.12
15:52
Подниму тему.
Непонятное продолжается.
21 H A D G E H O G s
 
19.10.12
15:54
Долгие хитрые манипуляции с временными хранилищами, таб. доками, деревьями значений, и вуаля - у нас есть 1С -ка, занимающая 600 метров оперативы и txt файл на 12 метров.
Жалкие.
12 метров.
И хоппа, при попытке его прочитать, 1С падает с нехваткой памяти.
22 H A D G E H O G s
 
19.10.12
15:54
Причем, если прочитывать на пустой 1С-ине - все нормально.
23 H A D G E H O G s
 
19.10.12
15:55
Это если ЧтениеТекста, а если:

ТекстовыйДокумент=Новый ТекстовыйДокумент;
ТекстовыйДокумент.Прочитать("b:\tmp.txt"); //отжирает 30 метров ОЗУ
ТекстДляЗаписи=ТекстовыйДокумент.ПолучитьТекст(); //Падает
ТекстовыйДокумент=Неопределено;
24 H A D G E H O G s
 
19.10.12
15:56
Я думаю, что после диких операций с объектами - память фрагментирована и чисто некуда аллокейтить 24 мегабайта ОЗУ непрерывным блоком, не?
25 H A D G E H O G s
 
19.10.12
15:57
Но почему
ТекстовыйДокумент.Прочитать("b:\tmp.txt"); //отжирает 30 метров ОЗУ

нормально?
26 H A D G E H O G s
 
19.10.12
15:58
Щас попробую паузу запилить, вдруг в 1С все же сборщик мусора юзается, есть у меня такое подозрение.
27 H A D G E H O G s
 
19.10.12
16:00
Пичаль. Столько мест обошел и завалиться буквально на самом конце, на простейшем.
28 Fragster
 
гуру
19.10.12
16:24
ха
29 Fragster
 
гуру
19.10.12
16:25
На какой итерации упадет?

Ф = "ф";
Для Сч = 1 по 100 Цикл
 Сообщить(Сч);
 Ф = Ф + Ф;
КонецЦикла;
30 Fragster
 
гуру
19.10.12
16:25
со строками у 1с все фигово
31 Fragster
 
гуру
19.10.12
16:27
(26) сборщик мусора вроде как только при возвращении в интерактивный режим вызывается. перенеси продолжение в обновление отображения (как извращенный вариант).
32 Fragster
 
гуру
19.10.12
16:28
кстати, текстовый документ больше для интерактивной работы и всяких текстовых макетов нужен, если надо много читать/писать - лучше чтение/записьТекста
33 Fragster
 
гуру
19.10.12
16:30
причем чтениеТекст.ПрочитатьСтроку() а не Прочитать(). ну и постепенная обработка.
34 Fragster
 
гуру
19.10.12
16:30
типизированная ТЗ занимает намного меньше места, чем строки
35 Fragster
 
гуру
19.10.12
16:32
кстати, наверное там память просто сильно фрагментируется
36 Axel2009
 
19.10.12
16:37
(29) 2^100 - порядка 1152921504606846976 ТБ... что значит у 1с не все в порядке со строками???
37 Fragster
 
гуру
19.10.12
16:40
(26) у меня падает на 27-й итерации, длина строки 67 108 864, памяти у процесса может быть аж до 2 гб, ЕМНИП
38 Axel2009
 
19.10.12
16:40
(1) я хз что у тебя с табличным полем, но писал обработину для декларации (скока строк не считал, но оптовая на регион), там проблем таких не было... о_О
39 H A D G E H O G s
 
19.10.12
16:40
Попробую тупо зааллокэйтить 12 метровую строку.
40 Fragster
 
гуру
19.10.12
16:41
(37) к (36)
41 H A D G E H O G s
 
19.10.12
16:41
Вывел Предупреждение () на 3 секунды - та же хрень.
42 Fragster
 
гуру
19.10.12
16:42
(39) реально, через чтениетекста фигачь в ТЗ. у меня так ТЗ с >1м строк (где-то по 60 байт по сумме полей) загрузилась нормально
43 Axel2009
 
19.10.12
16:42
(37) а тебе реально нужно было 37 метров строки анализировать? О_О
44 Fragster
 
гуру
19.10.12
16:42
или тебе прям 1 кусок нужен?
45 Fragster
 
гуру
19.10.12
16:43
(43) это тест такой
46 Axel2009
 
19.10.12
16:45
(41) прочитать строку ниразу не вылетало у меня
47 Axel2009
 
19.10.12
16:45
(23) ну если считать что 12 метров текста, в формате юникод - 2 байта на каждый символ, то 30 метров оперативы уже гдето близко. потому как там еще промежуточные наверняка переменные хранятся..
48 Fragster
 
гуру
19.10.12
16:50
(46) да, падает если Прочитать()
49 H A D G E H O G s
 
19.10.12
16:51
Надо его запихать в
Документ.ВыгрузкаРегламентированныхОтчетов
50 H A D G E H O G s
 
19.10.12
16:53
Самое забавное, что при запихивании в типовой текстовый реквизит приходит падение при записи дока, поэтому там особый, ХранилищеЗначения реквизит с максимумом сжатия.
51 Fragster
 
гуру
19.10.12
17:01
если только хранить, то Новый ДвоичныеДанные(<Имя файла>) и в хранилище...
52 Fragster
 
гуру
19.10.12
17:02
все-таки пятница
53 H A D G E H O G s
 
19.10.12
17:04
(51) Тяжко корежить типовые механизмы.
54 H A D G E H O G s
 
19.10.12
17:05
Итак уже отдельный модуль на печать отчетности на сервере запилен.
55 H A D G E H O G s
 
19.10.12
17:05
Счаст попробую кусками по 1000 символов читать и приращать переменную
56 Fragster
 
гуру
19.10.12
17:08
(55) не взлетит
57 Fragster
 
гуру
19.10.12
17:08
максимум что - точнее определишь момент падения
58 H A D G E H O G s
 
19.10.12
17:11
Логика мне говорит, что не взлетит, но я и в (0) не верил!
59 H A D G E H O G s
 
19.10.12
17:39
Тех же щей.
Ну его к херам, этот черный гроб, сделаю через Двоичные
60 H A D G E H O G s
 
19.10.12
18:06
Йессс!
Отс^%&&си, гребанный диспетчер памяти!
61 Fragster
 
гуру
19.10.12
18:07
(60) чо?
62 H A D G E H O G s
 
19.10.12
18:08
(61) Чо, чо.. Забил я на строку, сделал через Двоичные, все отрабатывает.
63 Fragster
 
гуру
19.10.12
18:09
(62) а, ну ясен фиг. туда и гигабайты вроде как засовываются...
64 Fragster
 
гуру
19.10.12
18:09
я думал со строкой обманул
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.