Имя: Пароль:
1C
1C 7.7
v7: Как проверить наличие поля в дбф-файле?
0 mikecool
 
09.01.12
20:30
Пробовал в попытке ПолуитьЗначениеПоля - исключения нет, тупо валится ошибка иксбазе
как можно проверить наличие поля?
1 ДенисЧ
 
09.01.12
20:31
Перебрать через КоличествоПолей()/ОписаниеПоля()...?
2 mikecool
 
09.01.12
20:35
(1) ээх... делать нечего, придется )
расслабила восьмерка
3 Torquader
 
09.01.12
20:42
Ну, можешь ещё файл, как текст открыть и получить список полей там - может даже будет проще (и можно открыть файл только на чтение).
4 BlackSeaCat
 
09.01.12
20:49
(3) Ага, попадется (и наверняка!) в начале заголовка файла символ с кодом 0 - и фиг ты чего получишь!
5 Torquader
 
09.01.12
20:51
(4) Ну, если "попросить" Scripting.FileSystemObject открыть файл через OpenTextFile, то не стоит бояться нулевого символа, если читать посимвольно, то можно даже и нулевые символы прочесть (если прочиталась строка нулевой для 1С длины, то для нормальных программ - там нулевой символ).
6 BlackSeaCat
 
09.01.12
20:59
(5) По мне так проще через цикл. Но это дело вкуса.

(0) А если попробовать использовать в Попытка/Исключение не метод, а обращение к полю, как к  атрибуту?

Типа:

Попытка
  А=Xbase.Проверяемое поле;
Исключение
  Сообщить("Нет такого поля!");
КонецПопытки;

P.S. Хотя не люблю я вообще попытки с исключениями...
7 Torquader
 
09.01.12
21:03
(6) XBase открывает файл монопольно, и невозможно заглянуть в собственные файлы 1С (а это иногда нужно).
8 Cthulhu
 
09.01.12
21:13
(6): правильно не любишь. помимо некошерности - ещё и тормозит нещадно.
(кстати, не так давно нашел случайно способ определить "в одно действие"(!), без возникновения ошибки или исключения, и быстро проверить наличие в ТЗ колонки с заданным идентификатором))))
9 Cthulhu
 
09.01.12
21:14
(8)+: (а может и баян. но я просто не знал и нашел методом тыка - чему рад))))
10 mikecool
 
09.01.12
21:15
замутил цикл )
14 Torquader
 
09.01.12
21:36
(9) Есть мнение, что "ВидимостьКолонки" возвращает -1, если идентификатор передан неверно.
15 Cthulhu
 
09.01.12
21:37
(14): угумц.
16 Torquader
 
09.01.12
21:40
Попытка с исключением тоже хороши, но в 1С нельзя самому генерировать исключения, и прекрасный механизм оказывается "микроскопом для забивания гвоздей".
17 Дядя Васька
 
09.01.12
21:41
А я говорил... Ромиксу-то, про попытку-исключение ))))
18 Дядя Васька
 
09.01.12
21:44
Когда уже народ поймет что исключительная ситуация, это именно исключение, а не если - тогда? Ну нельзя же так ей-богу...
19 Cthulhu
 
09.01.12
21:45
(16): даладно. в глоб.переменную - код исключения + делишь на ноль - и телемаркет.
20 Torquader
 
09.01.12
21:45
(18) Это ты программистам на Java порассказывай - там без исключений ничего путного не слепишь.
21 Torquader
 
09.01.12
21:47
(19) Это совсем некошерно - проще в функции ноль вернуть, а информацию в ту же глобальную переменную (слава богу, что в 1С нет параллельного исполнения - на Сях у меня глобальные переменные не приживались).
22 Дядя Васька
 
09.01.12
21:58
(20) А может руки?
23 Torquader
 
09.01.12
22:00
(22) В 1С, может быть, и руки, только тех, кто 1С придумал.
Если происходит ошибка, то её передавать проще через исключения, только в 1С инструкции finally нет, чтобы завершать исполнение корректно.
24 Дядя Васька
 
09.01.12
22:04
(23) Ну вообще-то можно и "пердусмотреть"...
25 Ковычки
 
09.01.12
22:18
Мнение про -1 уточняйте у Ёпрст о первенстве
26 Torquader
 
10.01.12
00:38
(25) Если вы про (14) то я просто посмотрел на (8) и (9) и быстренько проверил, какой из методов не возвращает ошибки - оказалось "ВидимостьКолонки".
27 slowpoke1C
 
11.01.12
15:24
(14) не знал.. Возьму на вооружение :-)
28 1Сергей
 
11.01.12
15:34
(14) рваный
29 НЕА123
 
11.01.12
15:41
НомерПоля(ИмяПоля) может не упадет?