Имя: Пароль:
1C
1С v8
Вывод рез-а запроса в DBF не получается.
,
0 БалбесВ1с
 
08.01.12
14:17

Запрос = Новый Запрос;
   Запрос.Текст =
       "ВЫБРАТЬ
       |    АдресПоПрописки.Тип,
       |    АдресПоПрописки.Вид,
       |    АдресПоПрописки.Представление,
       |    АдресПоПрописки.Индекс,
       |    &ДатаОтчета КАК ДатаЗаявления,
ФайлБТ = Новый XBase();
   ФайлБТ.поля.Добавить("A", "S", 60);
   ФайлБТ.поля.Добавить("B", "S", 60);
   ФайлБТ.поля.Добавить("C", "S", 30);
   ФайлБТ.поля.Добавить("D", "S", 30);
     
   
   ИмяФайлаБазы  =  "F:\1.dbf";

   ФайлБТ.ОткрытьФайл(ИмяФайлаБазы);
   Если Не ФайлБТ.Открыта() Тогда
       ФайлБТ.СоздатьФайл(ИмяФайлаБазы);      
   КонецЕсли;

   Если Не ФайлБТ.Открыта() Тогда
       Сообщить ("Нет доступа к серверу .");
       Отказ=Истина;
   КонецЕсли;

       
   
   ФайлБТ.Кодировка = КодировкаXBase.ANSI;
   ФайлБТ.АвтоСохранение = Истина;
 
// 1-я строка  

   ФайлБТ.Добавить();
   ФайлБТ.A = "первый";
   ФайлБТ.B = "второй";
   ФайлБТ.C = "третий";
   ФайлБТ.D = "четвертый";
   
   Результат=Запрос.Выполнить().Выбрать();

     Пока Результат.Следующий() Цикл
           ФайлБТ.Добавить();
           ФайлБТ.A=Результат.ДатаЗаявления;

           
           ФайлБТ.Записать();
     КонецЦикла;

   ФайлБТ.Записать();
   ФайлБТ.ЗакрытьФайл();
   
[\1c]

Файл создается.Все работает.
Но если вместо ФайлБТ.A=Результат.ДатаЗаявления; ставлю  ФайлБТ.A=Результат.АдресПоПрописки.Тип;
То пишет
"Поле объекта не обнаружено (АдресПоПрописки)"

ПропИски это не моё!)

Что я не так делаю.Подскажите как правильно.
1 БалбесВ1с
 
08.01.12
14:36
Куда все подевались!
2 2S
 
08.01.12
14:40
АдресПоПропискиТип может так?
3 2S
 
08.01.12
14:40
вообще присвой имена полям, будь мужиком блеат
4 БалбесВ1с
 
08.01.12
14:53
(3)Имена полей A,B,C,D.
(2)Нет.
5 GrayT
 
08.01.12
14:59
Речь о псевдонимах в запросе, а не полей в ДБФ
6 БалбесВ1с
 
08.01.12
15:00
В общем если писать так АдресПоПрописки.Индекс КАК ИндексПрописки то
ФайлБТ.A=Результат.ИндексПрописки выводится в dbf
А если в запросе  просто  АдресПоПрописки.Индекс то "поле объекта не обнаружено.
У меня там миллион полей что мне все переделывать? Это ведь неправильно.Как то просто по другому надо написать.
7 БалбесВ1с
 
08.01.12
15:00
(5)Да,да.Я понял и проверил.
8 БалбесВ1с
 
08.01.12
15:00
(5)А без псевдонимов этих никак не обойтись?
9 БалбесВ1с
 
08.01.12
15:39
Ап.
10 KAO111
 
08.01.12
15:52
ФайлБТ.A=Результат.Тип
11 KAO111
 
08.01.12
15:52
Дело не в псевдонимах
12 БалбесВ1с
 
08.01.12
15:57
(10)А если в запросе встречаются два "тип"?
13 БалбесВ1с
 
08.01.12
15:58
АдресПоПрописки.Комментарий,
КонтактнаяИнформация.Комментарий
14 Дядя Васька
 
08.01.12
16:02
Блин, сделай в отладчике Запрос.Выполнить().Выгрузить().ВыбратьСтроку() и посмотри глазами какие по умолчанию получаются псевдонимы. Их и используй.
15 Дядя Васька
 
08.01.12
16:04
Кстати по-русски правильно не "по прописки" а "по прописке"...
16 БалбесВ1с
 
08.01.12
16:16
(15)ПропИски это не моё!)  Еще в (0) сказал.
17 БалбесВ1с
 
08.01.12
16:24
(14)А "сообщить" нельзя псевдонимы по умолчанию? А то я пока разберусь что такое отладчик,сам дядей стану.
18 Дядя Васька
 
08.01.12
16:27
(17) Можно, но долго. Можешь и в коде написать, что-то вроде:
Запрос.Выполнить().Выгрузить().ВыбратьСтроку();
Возврат;
А можешь просто после текста запроса нажать F9, как на точке останова получившейся при выполнении встанет, жмакаешь Shift-F9, и там уже Запрос.Выполнить().Выгрузить().ВыбратьСтроку(), перед глазами получается ТЗ с результатами, где названия колонок и есть нужные тебе псевдонимы.
19 echo77
 
08.01.12
16:41
В консоли запросов можно выполнить твой текст запроса и посмотреть что получится: названия колонок - и есть названия полей. Консоль запросов есть на ИТС, в интрнетах и можно консоль запросов взять здесь http://depositfiles.com/files/r7s60cg4i
20 Дядя Васька
 
08.01.12
17:03
(19) "названия колонок - и есть названия полей" - не совсем так. В его случае будет что-то вроде АдресПоПропискиТип, АдресПоПропискиВид и т.п. пока визуально не увидишь, сразу и не сообразишь.
21 БалбесВ1с
 
08.01.12
17:28
(19)Спасибо.К сожалению не получилось,у меня параметр в запросе это результат еще одного запроса,а как его там установить я не разобрался.
(18)Вроде видно так псевдонимы,спасибо.
23 БалбесВ1с
 
09.01.12
15:19
Кто знает чему в 1с соответствует формат дбф - NUMERIC(4,0)?

И еще у меня файл вот так создаётся ИмяФайлаБазы  =  "F:\1.dbf" (из примера взял код),а как создать его чтоб имя содержало дату создания?
24 andrewks
 
09.01.12
15:21
(23) ты оправдываешь свой ник :)
25 БалбесВ1с
 
09.01.12
15:23
(24)Так я не одинесник.Я ... хер знает кто короче
26 andrewks
 
09.01.12
15:25
(25) Формат(ТекущаяДата(),"ДФ=yyyy_MM_dd")
27 БалбесВ1с
 
09.01.12
15:25
Я прочитал что N-число и F-число а чем они отличаются?
N-намбер F-флоат мне F значит надо?
28 БалбесВ1с
 
09.01.12
15:26
(26)ИмяФайлаБазы  =  "F:\Формат(ТекущаяДата(),"ДФ=yyyy_MM_dd").dbf";
29 БалбесВ1с
 
09.01.12
15:26
Так?
30 andrewks
 
09.01.12
15:26
float - это число с плавающей точкой, numeric - целые числа
31 БалбесВ1с
 
09.01.12
15:27
А что значит 4,0?
32 andrewks
 
09.01.12
15:27
(28) слушай, а как ты смог запрос из (0) сваять?
33 БалбесВ1с
 
09.01.12
15:28
Притом что в этом поле могут быть только числа 21,4,7,10,22,91,1
34 andrewks
 
09.01.12
15:28
+(30) наврал, numeric - это не только целые числа
35 БалбесВ1с
 
09.01.12
15:28
(32)Я его украл!!!
36 andrewks
 
09.01.12
15:30
кстати, а 1с 8 понимает тип float в dbf?
37 БалбесВ1с
 
09.01.12
15:30
Это была обработка выгрузка данных на открытие карт в сбербанк.Там екзель катил.Перешли в другой банк там дбф надо.Лень мне раз в неделю екзель открывать и в дбф сохранять.Хочу кнопку к этой обработке прилепить чтоб дбф делался.А потом сделаю кнопку отправить по почте куда надо.
38 БалбесВ1с
 
09.01.12
15:31
(36)Ты с кем сейчас разговариваешь? Тут кроме меня никого нет.
39 БалбесВ1с
 
09.01.12
15:32
ИмяФайлаБазы  =  "F:\Формат(ТекущаяДата(),"ДФ=yyyy_MM_dd").dbf";
Так не получается.Ну так я и думал.
40 andrewks
 
09.01.12
15:33
(39) ИмяФайлаБазы  =  "F:\"+Формат(ТекущаяДата(),"ДФ=yyyy_MM_dd")+".dbf";
41 БалбесВ1с
 
09.01.12
15:36
(40)Спасибо.А в 1с также пишешь (N,4,0) и все.
42 andrewks
 
09.01.12
15:39
+(36) понимает, но приравнивает к N
43 andrewks
 
09.01.12
15:39
(41) дарю СП


КоллекцияПолейXBase.Добавить (XBaseFieldsCollection.Add)
КоллекцияПолейXBase (XBaseFieldsCollection)
Добавить (Add)
Синтаксис:

Добавить(<Имя>, <Тип>, <Длина>, <Точность>)
Параметры:

<Имя> (обязательный)

Тип: Строка.
Имя добавляемого поля. Поддерживаются только латинские имена полей длиной до 10 символов.
<Тип> (обязательный)

Тип: Строка.
Тип создаваемого поля: "N" - число, "S" - строка, "D" - дата, "L" - булево, "F" - аналогично "N" - число, "M" - мемополе (не поддерживается).
<Длина> (необязательный)

Тип: Число.
Общая длина создаваемого поля.
Является обязательным для типов полей "N", "F" и "S". Для типов "D" и "L" параметр можно не указывать (по умолчанию значение 0).
<Точность> (необязательный)

Тип: Число.
Длина дробной части (только для числовых полей).
Значение по умолчанию: 0
Описание:

Добавляет новое поле в описание структуры таблицы базы данных.

Доступность:

Сервер, толстый клиент, внешнее соединение.
Пример:

xB.Поля.Добавить("CODE", "S", 5);
xB.Поля.Добавить("NAME", "S", 40);
xB.Поля.Добавить("COST", "N", 14, 2);
xB.СоздатьФайл("c:\test.dbf");


См. также:

XBase, метод СоздатьФайл
КоллекцияИндексовXBase, метод Добавить
44 andrewks
 
09.01.12
15:40
+(43) ляпота какая. прямо, как гирлянда на ёлке )
45 БалбесВ1с
 
09.01.12
15:40
Полезная вещь этот сп.
46 БалбесВ1с
 
09.01.12
15:41
И кстати такое название с датой не прокатывает сделал покороче.Можно только 8 символов.
47 andrewks
 
09.01.12
15:42
(46) древний баян, ещё с 7-ки. можно обойти, если через ODBC работать
48 БалбесВ1с
 
09.01.12
15:44
(47)ODBC.Это ты слово жо-па так замаскировал)
49 БалбесВ1с
 
09.01.12
20:32
Ура всё получилось и даже по почте теперь файл отправляется.
Как бы его зазипить еще и запаролить программно.
50 БалбесВ1с
 
09.01.12
20:49
Всё.И зазипил и запаролил.Блога у меня нет. (с)
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший