Имя: Пароль:
1C
1С v8
Ошибка в модуле внешнего соединения
0 LeshiyL
 
27.01.12
06:02
Всем привет!
Есть простейший код:
ТЗ=Новый ТаблицаЗначений;
Для К=1 по 10 Цикл
 ТЗ.Колонки.Добавить("Кол"+К);
КонецЦикла;
Н=0;
Для К=1 по ТЗ.Колонки.Количество() Цикл
Н=Н+1;
КонецЦикла;
который в модуле внешнего соединения вызывает ошибку.
Если быть более точным то ошибку вызывает попытка получить количество колонок ТЗ.
А как с этим бороться?
1 Cube
 
27.01.12
06:05
Текст ошибки в студию.
2 ZanderZ
 
27.01.12
06:05
ошибка то какая ?
3 Wobland
 
27.01.12
06:15
все помнят, что нумерация с нуля? хотя, в коде, конечно, пофих
4 LeshiyL
 
27.01.12
06:18
Текст ошибки канешно интересно было бы посмотреть только как его из внешнего соединения достать? :)
5 LeshiyL
 
27.01.12
06:19
В обычном модуле все работает и не пищит
6 ZanderZ
 
27.01.12
06:53
(4) как узнал что именно на "ошибку вызывает попытка получить количество колонок ТЗ"
7 Cube
 
27.01.12
06:54
(6) +1
8 Cube
 
27.01.12
06:59
Так попробуй:

ЛогФайл = Новый ТекстовыйДокумент;
ИмяЛогФайла = "C:\111.txt";
ТЗ=Новый ТаблицаЗначений;
ЛогФайл.ДобавитьСтроку("Точка1");
ЛогФайл.Записать(ИмяЛогФайла);
Для К=1 по 10 Цикл
ЛогФайл.ДобавитьСтроку("Точка2_" + К);
ЛогФайл.Записать(ИмяЛогФайла);
 ТЗ.Колонки.Добавить("Кол"+К);
КонецЦикла;
ЛогФайл.ДобавитьСтроку("Точка3");
ЛогФайл.Записать(ИмяЛогФайла);
Н=0;
Для К=1 по ТЗ.Колонки.Количество() Цикл
ЛогФайл.ДобавитьСтроку("Точка4_" + К + "_" + Н);
ЛогФайл.Записать(ИмяЛогФайла);
Н=Н+1;
КонецЦикла;
9 LeshiyL
 
27.01.12
07:29
(8)
ну это только позволяет узнать на какой строке спотыкается, о чем я сказал еще в самом начале, что ошибка при попытке узнать количество колонок
10 LeshiyL
 
27.01.12
07:31
завел переменную значение колонок менял через каждую строку кода ну когда прога падала в исключение то возвращала значение этой переменной
11 Wobland
 
27.01.12
07:34
(10) и что там было?
12 LeshiyL
 
27.01.12
07:36
(11) то что вылитает в исключение на строке ТЗ.Колонки.Количество()
а вот почему вылетает и именно когда эта строка в модуле внешнего соединения вот в этом большой вопрос
13 Wobland
 
27.01.12
07:36
(12) в переменной что было?
14 Cube
 
27.01.12
07:37
(12) ОписаниеОшибки()?
15 БибиГон
 
27.01.12
07:37
зачем вот это - ТЗ.Колонки.Количество() в цикле?
16 LeshiyL
 
27.01.12
07:39
(15) приходится работать с динамически формирующейся ТЗ у которой в зависимости от входных параметров функции разное количество колонок
17 Escander
 
27.01.12
07:41
(16) в том смысле сто предлагают перед циклом 1 раз прочитать их количество
18 Escander
 
27.01.12
07:43
да и вообще вместо

Н=0;
Для К=1 по ТЗ.Колонки.Количество() Цикл
Н=Н+1;
КонецЦикла;

должно быть

Н=ТЗ.Колонки.Количество();
19 LeshiyL
 
27.01.12
07:52
Интересно, но вот так пролезло:
               КолКолонок=ТЗ.Колонки.Количество();
               Для К=0 по КолКолонок Цикл
                   Н=Н+1;
               КонецЦикла;
хотя какая бы ему разница...
20 Escander
 
27.01.12
07:56
(19) может при наборе имени в 1 литере ошибся? типа ну пусть русс/eng литера "о" или "З"-"3" внешне похожи
2 + 2 = 3.9999999999999999999999999999999...