0
- 05.06.2012 - 09:15
|
Помогите пожалуйста. При попытке открыть определенный документ 1С закрывается. Таких документов несколько. Я нашел 3 за последний год. Выбрасывает после загрузки строкового реквизита документа в таблицу значений при попытке определить количество строк ТОбъект.Загрузить(ЗначениеИзСтроки(Заказ.Объект)); Количество = ?(ТипЗначенияСтр(ТОбъект) = "ТаблицаЗначений", ТОбъект.КоличествоСтрок(), 1); Сделал тестирование и исправление базы. Не помогло. | | |
1
- 05.06.2012 - 09:48
| Удалением без контроля ссылочной целостности балуемся? | | |
2
- 05.06.2012 - 10:03
| нет | | |
3
- 05.06.2012 - 10:07
|
Попрубй так: ТОбъект.Загрузить(ЗначениеИзСтроки(Заказ.Объект)); Если ТипЗначенияСтр(ТОбъект) = "ТаблицаЗначений" тогда ТОбъект.ВыбратьСтроку(); Количество = ТОбъект.КоличествоСтрок() Иначе Количество = 1 КонецЕсли; | | |
4
- 05.06.2012 - 10:08
| 3-victuan >Окно с таблицей появляется на экране? | | |
5
- 05.06.2012 - 10:09
| 2-klimkkk > Чудес на свете не бывает. Организуй новую базу, и перенеси туда данные через файл обмена. | | |
6
- 05.06.2012 - 10:10
| Возможно ТОбъект не имеет ТЧ. | | |
7
- 05.06.2012 - 10:12
| 6-Зомби >Да, это можно проверить через ТОбъект.КоличествоКолонок() | | |
8
- 05.06.2012 - 10:23
| (7)Лучше количество получить в попытке а исключением высветить бяку. | | |
9
- 05.06.2012 - 10:25
| Нет. Опять выбросило | | |
10
- 05.06.2012 - 10:27
| исключение тоже выбрасывает | | |
11
- 05.06.2012 - 10:32
|
Строка имеет неограниченную длину Если просто присваиваю пустую строку, то все решается, но данных нет. Если пишу например Лев (Объект, 10000) тоже выбрасывает | | |
12
- 05.06.2012 - 10:32
| 10-klimkkk > См. (5) | | |
13
- 05.06.2012 - 10:39
| Объект паковался ЗначениеВСтрокуВнутр()? | | |
14
- 05.06.2012 - 10:46
| ЗначениеВСтроку() | | |
15
- 05.06.2012 - 10:50
| А выгрузка-загрузка ругаецца? | | |
16
- 05.06.2012 - 10:54
|
Обычно делаю СОХРАНИТЬ ДАННЫЕ и потом тестирование Сейчас делаю ВЫГРУЗИТЬ/ЗАГРУЗИТЬ | | |
17
- 05.06.2012 - 11:39
|
11-klimkkk > "Строка имеет неограниченную длину" - в табличной части?? Кто научил? | | |
18
- 05.06.2012 - 11:46
|
нет не в табличной. В шапке. Конфа не моя | | |
19
- 05.06.2012 - 12:00
|
вообще странно, т.к. если бы там был не отот объект, или бтый и т.д. - была бы просто ошибка самого 1С про нет метода и т.д., а не закрытие. Можно точнее - как закрывается 1С ? И как нашли именно это место вылета - пошагово отладчиком ? А если в отладчике глянуть значение ТипЗначенияСтр(ТОбъект) ? | | |
20
- 05.06.2012 - 12:05
| 18-klimkkk > Перемести реквизит в конец списка. | | |
21
- 05.06.2012 - 13:10
|
9-klimkkk >Значит выбрасывает на методе ТОбъект.Загрузить(ЗначениеИзСтроки(Заказ.Объект)); а не на КоличествоСтрок() 17-VZ >Строка неогр. длины в табличной части не бывает - ограничение платформы. | | |
22
- 05.06.2012 - 13:13
|
В отладчике содержимое строки показывает и перебрасывает в таблицу значений. Выбрасывает при попытке определить количество строк. Сначала пишет выполняется обработка, а потом просто закрывает Предприятие | | |
23
- 05.06.2012 - 13:28
|
22-klimkkk >отладчик при вылетах может ошибаться, особенно если выражение завернуто в Попытку. Попробуй убрать строку с КоличествоСтрок() - будет вылет? Ты код в (3) проверил? Перед вылетом на экране появляется таблица (метод ВыбратьСтроку())? Если вылет на методе КоличествоСтрок, то таблица должна появится, т.к. ее метод стоит раньше. | | |
24
- 05.06.2012 - 13:56
|
23-victuan >КоличествоСтрок() убирал. Вылета нет Код (3) тоже проверил. Таблицы нет. | | |
25
- 05.06.2012 - 14:11
| 24-klimkkk >а должна быть! | | |
26
- 05.06.2012 - 14:20
|
скорее всего пытается записать в таблицу какой то большой объем и вырубается. Как то можно подругому кроме Лев (Объект, 10000) и фиксированного размера строки в конфигураторе ограничить длину конкретного документа? | | |
27
- 05.06.2012 - 14:37
| Цитата:
смотри как эта "длина" формируется | | |
28
- 05.06.2012 - 15:28
|
(26) Тогда уж: Если ТипЗначенияСтр(ТОбъект) = "ТаблицаЗначений" тогда Для Сч=0 по 10000 Цикл Попытка СтрокаТЗ= ТОбъект.ПолучитьстрокуПоНомеру(Сч); Исключение Сообщить("На "+Сч+" заткнулось!"); Прервать; КонецПопытки; КонецЦикла; | | |
29
- 05.06.2012 - 18:30
| в ТЗ похоже пихается что-то очень большое... | | |
30
- 06.06.2012 - 07:54
| Я это и имел ввиду, но как обрезать? | | |
31
- 06.06.2012 - 08:01
| 30-klimkkk >Ты (28) проверил? Почему нет? | | |
32
- 06.06.2012 - 08:02
| 28-Зомби > Заткнулось на нуле | | |
33
- 06.06.2012 - 08:04
|
32-klimkkk >там ошибка в коде, замени одну строчку: Для Сч=1 по 10000 Цикл | | |
34
- 06.06.2012 - 08:06
| 33-victuan > Заткнулось на 1 | | |
35
- 06.06.2012 - 08:08
| 34-klimkkk >34-klimkkk >Значит первая строка уже невалидна. Кодом из 1С эту проблему не решить никак. | | |
36
- 06.06.2012 - 08:08
| ВЫгрузка/загрузка закончилась. Результат тот-же | | |
37
- 06.06.2012 - 08:09
| а если убрать оператор Прервать, то на на других строках тоже затыкается? Т.е. на всех без исключения? | | |
38
- 06.06.2012 - 08:12
|
37-victuan >Не затыкается. Выводит сообщение На 1 заткнулось! | | |
39
- 06.06.2012 - 08:21
|
38-klimkkk >Значит проблема только в 1-ой строчке, поэтому не срабатывает, видимо, КоличествоСтрок. Значит не пользуйся этим методом, просто в цикле тупо перебирай строки, читая всё что удастся прочесть. | |
| Интернет-форум Краснодарского края и Краснодара |