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