Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   выбрасывает из 1С (http://forums.kuban.ru/f1040/vybrasyvaet_iz_1s-2687076.html)

klimkkk 05.06.2012 09:15

выбрасывает из 1С
 
Помогите пожалуйста.
При попытке открыть определенный документ 1С закрывается. Таких документов несколько. Я нашел 3 за последний год. Выбрасывает после загрузки строкового реквизита документа в таблицу значений при попытке определить количество строк

ТОбъект.Загрузить(ЗначениеИзСтроки(Заказ.Объект));
Количество = ?(ТипЗначенияСтр(ТОбъект) = "ТаблицаЗначений", ТОбъект.КоличествоСтрок(), 1);

Сделал тестирование и исправление базы. Не помогло.

VZ 05.06.2012 09:48

Удалением без контроля ссылочной целостности балуемся?

klimkkk 05.06.2012 10:03

нет

victuan 05.06.2012 10:07

Попрубй так:
ТОбъект.Загрузить(ЗначениеИзСтроки(Заказ.Объект));
Если ТипЗначенияСтр(ТОбъект) = "ТаблицаЗначений" тогда
ТОбъект.ВыбратьСтроку();
Количество = ТОбъект.КоличествоСтрок()
Иначе
Количество = 1
КонецЕсли;

victuan 05.06.2012 10:08

3-victuan >Окно с таблицей появляется на экране?

VZ 05.06.2012 10:09

2-klimkkk > Чудес на свете не бывает. Организуй новую базу, и перенеси туда данные через файл обмена.

Зомби 05.06.2012 10:10

Возможно ТОбъект не имеет ТЧ.

victuan 05.06.2012 10:12

6-Зомби >Да, это можно проверить через ТОбъект.КоличествоКолонок()

Зомби 05.06.2012 10:23

(7)Лучше количество получить в попытке а исключением высветить бяку.

klimkkk 05.06.2012 10:25

Нет. Опять выбросило

klimkkk 05.06.2012 10:27

исключение тоже выбрасывает

klimkkk 05.06.2012 10:32

Строка имеет неограниченную длину
Если просто присваиваю пустую строку, то все решается, но данных нет.
Если
пишу например

Лев (Объект, 10000)

тоже выбрасывает

VZ 05.06.2012 10:32

10-klimkkk > См. (5)

Зомби 05.06.2012 10:39

Объект паковался ЗначениеВСтрокуВнутр()?

klimkkk 05.06.2012 10:46

ЗначениеВСтроку()

Зомби 05.06.2012 10:50

А выгрузка-загрузка ругаецца?

klimkkk 05.06.2012 10:54

Обычно делаю СОХРАНИТЬ ДАННЫЕ
и потом тестирование

Сейчас делаю ВЫГРУЗИТЬ/ЗАГРУЗИТЬ

VZ 05.06.2012 11:39

11-klimkkk > "Строка имеет неограниченную длину" - в табличной части??
Кто научил?

klimkkk 05.06.2012 11:46

нет не в табличной. В шапке.
Конфа не моя

Vacony 05.06.2012 12:00

вообще странно, т.к. если бы там был не отот объект, или бтый и т.д. - была бы просто ошибка самого 1С про нет метода и т.д., а не закрытие.
Можно точнее - как закрывается 1С ?
И как нашли именно это место вылета - пошагово отладчиком ?
А если в отладчике глянуть значение
ТипЗначенияСтр(ТОбъект) ?

VZ 05.06.2012 12:05

18-klimkkk > Перемести реквизит в конец списка.

victuan 05.06.2012 13:10

9-klimkkk >Значит выбрасывает на методе
ТОбъект.Загрузить(ЗначениеИзСтроки(Заказ.Объект));
а не на КоличествоСтрок()

17-VZ >Строка неогр. длины в табличной части не бывает - ограничение платформы.

klimkkk 05.06.2012 13:13

В отладчике содержимое строки показывает и перебрасывает в таблицу значений. Выбрасывает при попытке определить количество строк.
Сначала пишет выполняется обработка, а потом просто закрывает Предприятие

victuan 05.06.2012 13:28

22-klimkkk >отладчик при вылетах может ошибаться, особенно если выражение завернуто в Попытку.
Попробуй убрать строку с КоличествоСтрок() - будет вылет?
Ты код в (3) проверил? Перед вылетом на экране появляется таблица (метод ВыбратьСтроку())? Если вылет на методе КоличествоСтрок, то таблица должна появится, т.к. ее метод стоит раньше.

klimkkk 05.06.2012 13:56

23-victuan >КоличествоСтрок() убирал. Вылета нет
Код (3) тоже проверил. Таблицы нет.

victuan 05.06.2012 14:11

24-klimkkk >а должна быть!

klimkkk 05.06.2012 14:20

скорее всего пытается записать в таблицу какой то большой объем и вырубается. Как то можно подругому кроме

Лев (Объект, 10000)

и фиксированного размера строки в конфигураторе ограничить длину конкретного документа?

Uho 05.06.2012 14:37

[quote=klimkkk;25394025]и фиксированного размера строки в конфигураторе ограничить длину конкретного документа? [/quote]что за чушь?
смотри как эта "длина" формируется

Зомби 05.06.2012 15:28

(26) Тогда уж:
Если ТипЗначенияСтр(ТОбъект) = "ТаблицаЗначений" тогда
Для Сч=0 по 10000 Цикл
Попытка
СтрокаТЗ= ТОбъект.ПолучитьстрокуПоНомеру(Сч);
Исключение
Сообщить("На "+Сч+" заткнулось!");
Прервать;
КонецПопытки;
КонецЦикла;

Чучундер 05.06.2012 18:30

в ТЗ похоже пихается что-то очень большое...

klimkkk 06.06.2012 07:54

Я это и имел ввиду, но как обрезать?

victuan 06.06.2012 08:01

30-klimkkk >Ты (28) проверил? Почему нет?

klimkkk 06.06.2012 08:02

28-Зомби > Заткнулось на нуле

victuan 06.06.2012 08:04

32-klimkkk >там ошибка в коде, замени одну строчку:
[em]Для Сч=[b]1[/b] по 10000 Цикл[/em]

klimkkk 06.06.2012 08:06

33-victuan > Заткнулось на 1

victuan 06.06.2012 08:08

34-klimkkk >34-klimkkk >Значит первая строка уже невалидна. Кодом из 1С эту проблему не решить никак.

klimkkk 06.06.2012 08:08

ВЫгрузка/загрузка закончилась. Результат тот-же

victuan 06.06.2012 08:09

а если убрать оператор [em]Прервать[/em], то на на других строках тоже затыкается? Т.е. на всех без исключения?

klimkkk 06.06.2012 08:12

37-victuan >Не затыкается.
Выводит сообщение

На 1 заткнулось!

victuan 06.06.2012 08:21

38-klimkkk >Значит проблема только в 1-ой строчке, поэтому не срабатывает, видимо, КоличествоСтрок.
Значит не пользуйся этим методом, просто в цикле тупо перебирай строки, читая всё что удастся прочесть.


Текущее время: 08:34. Часовой пояс GMT +3.