1. Swetlana 26 23.09.24 14:48 Сейчас в теме
Вопрос следующий
Использование ADO для создания файла DBF
Мне необходим пример создания файла и его колонок для 8 платформы

в XBase имеется ограничение при создании названии колонки более 10 и отсутствует тип данных DateTime

Возможно ли это делать из 1с?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. nomad_irk 76 23.09.24 14:56 Сейчас в теме
(1) 1С умеет нативно работать с *.dbf или использование ADO - это какое-то обязательное условие?

В синтаксис-помощнике все есть с примерами.


СоздатьФайл (CreateFile)
Синтаксис:
СоздатьФайл(<ПутьКБазе>, <ПутьКИндексу>)
Параметры:
<ПутьКБазе> (обязательный)
Тип: Строка.
Полное имя создаваемого файла таблицы базы данных в формате DBF.
<ПутьКИндексу> (необязательный)
Тип: Строка.
Полное имя создаваемого индексного файла. Если параметр не указан, индексный файл не создается.
Значение по умолчанию: Пустая строка.
Описание:
Создает новый файл таблицы базы данных в формате DBF и соответствующий ему индексный файл. Создаваемый файл таблицы базы данных будет содержать все созданные на текущий момент поля, индексный файл - все созданные индексы.
Доступность:
Тонкий клиент, сервер, толстый клиент, внешнее соединение.
Примечание:
Созданный файл будет иметь расширение "DBF", независимо от используемой операционной системы.
Пример:
ИмяФайлаБазы = "C:\test.dbf";
ИмяФайлаИндекса = "C:\test.cdx";
xB.СоздатьФайл(ИмяФайлаБазы, ИмяФайлаИндекса);
Показать



КоллекцияПолей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");
Показать



Добавить (Add)
Синтаксис:
Добавить()
Описание:
Добавляет новую пустую запись. При этом поля и свойства объекта Ключ очищаются. Для записи изменений в таблицу базы данных необходимо инициировать запись.
Доступность:
Тонкий клиент, сервер, толстый клиент, внешнее соединение.
Пример:
xB.Добавить();
xB.CODE = "00004";
xB.NAME = "Клавиатура";
xB.Записать();
Показать



Описание:
Значения данного типа содержат дату григорианского календаря (с 01 января 0001 года) и время с точностью до 0,1 миллисекунды.
Литералы:
Строка цифр, заключенная в одинарные кавычки вида: 'ГГГГММДДччммсс', где:
ГГГГ - четыре цифры года (включая тысячелетие и век);
ММ - две цифры месяца;
ДД - две цифры даты;
чч - две цифры часа (в 24-х часовом формате);
мм - две цифры минут;
сс - две цифры секунд;
Во встроенном языке в литерале типа Дата обязательно должно задаваться значение года, месяца и дня. Допускается опускать либо время целиком, либо только секунды. Если значение секунд не указано, используется значение "0". Для задания даты, соответствующей началу отсчета, достаточно указать '00010101'. В литерале даты игнорируются все значения, отличные от цифр. Разделители в литерале можно указывать для упрощения ввода даты.
Пример:
Дата('2017.03.23 10:45:25') = "23.03.2017 10:45:25"
Дата('2017\03\23-10~45~25') = "23.03.2017 10:45:25"
Доступность: Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер). Возможен обмен с сервером. Сериализуется.
Данный объект может быть сериализован в/из XDTO. Тип XDTO, соответствующий данному объекту, определяется в пространстве имен {http://www.w3.org/2001/XMLSchema}. Имя типа XDTO: может быть любым из перечисленных: dateTime, date, time.
Показать
Swetlana; +1 Ответить
3. Swetlana 26 23.09.24 15:27 Сейчас в теме
(2)
или использование ADO - это какое-то обязательное условие?


нет, изза ограничения XBase хочу попробовать ADO
так как клиент похоже использует формат DBF из Foxpro
4. Swetlana 26 23.09.24 15:30 Сейчас в теме
DBConn = Новый COMОбъект("ADODB.Connection");

DBConn.Open("Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=" + ПутьКНовомуDBF + ";" +
"Extended Properties=""DBASE IV;"";");

Ошибка

Ошибка при вызове метода контекста (Open)
{ВнешняяОбработка.РаботаСASTERISK.Форма.Форма.Форма(890)}: DBConn.Open("Provider=Microsoft.Jet.OLEDB.4.0;" +
{ВнешняяОбработка.РаботаСASTERISK.Форма.Форма.Форма(347)}: рез1 = ВыгрузитьВАДО();
по причине:
Произошла исключительная ситуация (ADODB.Connection): Не удается найти указанный поставщик. Вероятно, он установлен неправильно.
Произошла исключительная ситуация (ADODB.Connection): Не удается найти указанный поставщик. Вероятно, он установлен неправильно.

Как правильно написать открытие?

вместо "Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=" + ПутьКНовомуDBF + ";" +
"Extended Properties=""DBASE IV;"";"

что писать?
5. nomad_irk 76 23.09.24 15:34 Сейчас в теме
(4) У вас скорее не совпадают разрядность версии ADODB и сервера/клиента 1С, проверьте, зарегистрирован ли X64 драйвер.
6. Swetlana 26 23.09.24 15:43 Сейчас в теме
(5) Весело) спасибо. Будем разбираться через админа наверное
1с Сервер вроде 64 а ado хз
7. MissionOnly 7 23.09.24 16:03 Сейчас в теме
Для того, чтобы можно было поля создавать с длинными наименованиями, на ПК нужно будет драйвер ставить FoxPro 5. ADO будет через него все корректно делать. Само по себе ADO это протокол связи, без драйверов ни чего делать не умеет.
nomad_irk; Swetlana; +2 Ответить
8. Swetlana 26 23.09.24 16:05 Сейчас в теме
10. MissionOnly 7 23.09.24 16:33 Сейчас в теме
(8) Вот на скрине показано, какие драйверы установлены на ПК. Через них ADO работает с разными базами данных. По умолчанию есть только dBase, он и ограничивает размер наименования полей в 10 символов (есть еще ограничения).
Прикрепленные файлы:
nomad_irk; +1 Ответить
9. nomad_irk 76 23.09.24 16:17 Сейчас в теме
(7) а он современными ОС поддерживается? А то как бы еще и windowsNT/95 ставить не пришлось :)
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот