К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

выбрасывает из 1С

Гость
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)

и фиксированного размера строки в конфигураторе ограничить длину конкретного документа?
Uho
27 - 05.06.2012 - 14:37
Цитата:
Сообщение от klimkkk Посмотреть сообщение
и фиксированного размера строки в конфигураторе ограничить длину конкретного документа?
что за чушь?
смотри как эта "длина" формируется
Гость
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-ой строчке, поэтому не срабатывает, видимо, КоличествоСтрок.
Значит не пользуйся этим методом, просто в цикле тупо перебирай строки, читая всё что удастся прочесть.


К списку вопросов






Copyright ©, Все права защищены