|
Как найти битую запись |
☑ |
0
qazokm
11.03.15
✎
11:33
|
Прохожу циклом по таблице, но где -то встречается битая запись и выходит сообщение "мало памяти" и 1с завершает работу, как найти на какой записи выходит ошибка?
выборка = Справочники.ХранилищеДополнительнойИнформации.Выбрать();
Пока выборка.Следующий() = 1 Цикл
Сообщить("Документ " + выборка.Объект.наименование);
КонецЦикла
Может как-то сохранять "Документ " + выборка.Объект.наименование в текстовый файл
|
|
1
mikecool
11.03.15
✎
11:34
|
(0) нет объекта - нет и наименования
пробуй сохранять тип объекта и ссылку
|
|
2
Сергиус
11.03.15
✎
11:36
|
(0)А ты уверен, что проблема в битой записи? Возможно реально памяти не хватает.. Попробуй сделать тоже самое, но запросом. В смысле делаешь выборку из запроса, и далее ее обход.
|
|
3
mikecool
11.03.15
✎
11:37
|
(2) был как то на семинаре софтпоинта, показывали фишку - при попытке читать битый объект память кушалась неимоверно и приводила к нехватке памяти
|
|
4
qazokm
11.03.15
✎
11:39
|
(2) При запросе полдня висел(снял задачу) и непонятно, то ли делается запрос, то ли висит
|
|
5
qazokm
11.03.15
✎
11:42
|
не важно, вместо объекта.наименование, я могу поставить строковое поле ИмяФайла, все равно выходит та же ошибка, я просто не знаю как в 1с, при ошибке формируется файл с указанием ошибка, записи и т.д.
|
|
6
mikecool
11.03.15
✎
11:43
|
(5) параметры запуска смотри - есть выходной файл
|
|
7
D_E_S_131
11.03.15
✎
11:44
|
А сколько элементов в справочнике вообще? Ну и Сообщить() же не "бесплатно" для памяти происходит.
|
|
8
mistеr
11.03.15
✎
11:49
|
(0) >как найти на какой записи выходит ошибка?
Каждые N записей вемсто Сообщить() пиши лог во внешний файл (с закрытием) или в ЖР.
Ну и выборку сделай упорядоченной.
|
|
9
qazokm
11.03.15
✎
11:50
|
(7) 5000, там какой то рисунок офигенного размера в хранилище значений, а где не могу понять, пока делаю цикл
типа
Файл = Новый ЗаписьТекста("d:\x+i
|
|
10
Гёдза
11.03.15
✎
11:51
|
запросами ищи
|
|
11
qazokm
11.03.15
✎
11:53
|
(10) они подвешивают комп, первые 3000 проходят, дальше виснет...
|
|
12
Гёдза
11.03.15
✎
11:56
|
(11) не верю. Покажи запрос
|
|
13
D_E_S_131
11.03.15
✎
11:57
|
(11) Ты запросом выбирай представление от объекта (для идентификации) и хранилище (для определения размера).
|
|
14
qazokm
11.03.15
✎
12:02
|
Спасибо, проблему решил, вылетает на 4667 записи
XDI = Справочники.ХранилищеДополнительнойИнформации.select();
i=0;
while xdi.next() = 1 do
i=i+1;
Файл = Новый ЗаписьТекста("d:\tmp\x"+строка(i));
Файл.ЗаписатьСтроку(""+xdi.Объект);
Файл.закрыть();
enddo;
|
|
15
rozer76
11.03.15
✎
12:40
|
(14) ндя )
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший