Внешняя компонента для доступа к paradox через BDE (BDEBase 2.0.3.20 от 14.06.2006)

Встала как-то передо мной задача работать с таблицами парадокса в 1С. Так как встроенных средств для этого нет, а побродив по форумам я наткнулся на лишь на пару статей, в которых описывалась работа с парадоксом через ADO, что мне показалось не очень удобно, я решил написать свою компоненту для доступа.
Методы старался делать где это возможно максимально близкие к xBase.
Вроде самое необходимое реализовал. Впоследствии компонента будет дополняться.

Атрибуты:

  • <Поле>

Методы:

  • СоздатьФайл()
  • ОткрытьФайл()
  • Открыта()
  • ЗакрытьФайл()
  • ОчиститьФайл ()
  • Первая()
  • Последняя()
  • Следующая()
  • Предыдущая()
  • НомерЗаписи()
  • Перейти()
  • ВКонце()
  • ВНачале()
  • Найти()
  • ПолучитьЗначениеПоля()
  • УстановитьЗначениеПоля()
  • Добавить()
  • Скопировать()
  • АвтоСохранение()
  • Записать()
  • Отменить()
  • Удалить()
  • Очистить()
  • КоличествоЗаписей()
  • КоличествоПолей()
  • ОписаниеПоля()
  • ОписаниеТаблицы()
  • ПолучитьНазваниеПоля()
  • НомерПоля()
  • ДобавитьПоле()
  • КодОшибки()
  • РежимОтладки()
  • Фильтрация()

Подробное описание методов в прилагаемом als-файле.

новое в версии 2.0.3.20 от 14.06.2006

+ Новый метод Фильтрация(); -Установить режим фильтрации записей в базе.
* Косметические исправления

38 Comments

  1. ildarmcs

    Скачал, поставил, потестил. Работает.

    Нормально. Спасибо.

    А планируется ли через BDE сделать доступ из 1С 8.0 к InberBase — подобным базам?

    Reply
  2. BioAngel

    пока не планируется, собственно отсутствуют задачи для данной СУБД

    Reply
  3. znh

    Спасибо. Особенно за метод Фильтрация();

    Reply
  4. wer_alex

    Все хорошо и решил воспользоваться. Нет одной только функции . Удалить все помеченные записи (команда Раск).

    Необходимо через 1С свернуть базу Paradox на определенную дату.

    Reply
  5. BioAngel

    Возможность по доработке отсутствует, затерялись исходники и что то мне подсказывает они не найдутся. 🙁

    Reply
  6. Muhin555

    Здесь уже использовали эту разработку http://www.paltusov.ru Вот для обмена с R-Keeper………

    Reply
  7. BioAngel

    Не уловил суть комментария если честно 😀

    Reply
  8. Muhin555

    в посте №6 привожу пример использования вашей разработки 😉

    Reply
  9. egor_gsm

    Народ, закиньте плиз пример использования н 7.7 Интересует выгрузка данных в Paradox .DB файл!! Очень надо !!! Help !!

    Reply
  10. BioAngel

    Если ЗагрузитьВнешнююКомпоненту(«BDEBase.dll»)=0 Тогда

    Сообщить(«Не удалось обнаружить компоненту BDEBase.dll!»);

    КонецЕсли;

    Попытка

    БДЕ = СоздатьОбъект(«Addin.BDEBase»);

    Исключение

    Сообщить(«Не удалось создать объекты Addin.dbBase!»);

    КонецПопытки;

    БДЕ.ОткрытьФайл ( «C:deBasepLogData.DB», );

    пока БДЕ.ВКонце() = 0 Цикл

    сообщить(БДЕ.Num);

    Бде.Следующая();

    КонецЦикла;

    Reply
  11. igor_gk

    Попытаюсь использовать для импорта в 1С 8.2 из X-DOOR (есть такая бухгалтерская программа, базы — PARADOX).

    Получится?

    Reply
  12. BioAngel

    С данной системой не знаком.

    Всё зависит от поставленной задачи)

    Reply
  13. igor_gk

    Да там просто файлики, в которых хранится всякая хрень — справочники, таблицы планы счетов.

    Вобщем мне бы доступ к файликам получить и прочитать из них данные (из-под 1С v. 8.2)…

    Reply
  14. BioAngel

    Обычно проблем не вызывает, будут сложности пишите.

    Reply
  15. mikhailovaew

    Гляжу — одного плюсика для рейтинга не хватает, а работа вроде серьезная.

    Так что + )))

    Reply
  16. Михаська

    с paradox 7 не дружит(

    Reply
  17. BioAngel

    Поддержку форматов осуществляет BDE

    Reply
  18. ge_ni

    Здравствуйте!

    Давно не пользовался. а на днях попробовал и получил по варианту подключения компоненты 2 ошибку 0х800004005 под Win7. Придушил Брандмауэр полностью… не помогает. По варианту подключения компоненты 1 пишет, что отсутствует CLSID! Я так понимаю он где то в системном реестре пишется, ну и радость эта имеет двоичное представление??? Что характерно у Jmail.dll, FormEx, 1CPP эта радость есть и не требует никаких усилий. Думаю: если бы Вы перетранслировать старые исходники в какой-то новой версиии интерпретатора то проблемма снялась бы сама… С уважением Евгений

    Reply
  19. ge_ni

    Извините! Вроде сам разрулил! 2 строчки в реестре и всё! Однако… это требует достаточной квалификации. Хотя в отношении Вашей *.dll, вполне возможно, что Вам всё-равно, кто и как её будет истользовать… Работает то классно!

    Reply
  20. BioAngel

    как уже писал ранее «Возможность по доработке отсутствует, затерялись исходники» ((

    Reply
  21. Vovanich

    Пытаюсь подрубится к СКУД ОРИОН с помощью длл…Всё ок только отфильтровать по дате не получается…Может подскажет кто как отфильтровать записи за определенный период?в строку загоняю отбор «([TimeVal]>'»+НачДата+»‘) и ([TimeVal]<‘»+конецдня(КонДата)+»‘) а тащит все записи с начала года. Хотя датаНач = 01.12.2012 КонДата = 31.12.2012

    Reply
  22. BioAngel

    Пришлите пример файла и обработку

    Reply
  23. N_aix

    Спасибо.

    Reply
  24. BioAngel

    Пример создания таблицы paradox

    Попытка

    База = New(«Addin.BDEBase»);

    Исключение

    Сообщить(«Не удалось создать объекты Addin.BDEBase!»);

    КонецПопытки;

    //База.РежимОтладки(1);

    База.ДобавитьПоле(«Fml», «S» , 50 , 1); // фио

    База.СоздатьФайл(«D:
    ewdb.db»,);

    База.Добавить();

    //База.Fml = Стр.Fml;

    База.УстановитьЗначениеПоля(«Fml»,»Фёдор Емельяненко»);

    База.Записать();

    База.ЗакрытьФайл();

    Reply
  25. kozorez

    Отличная разработка!!!

    Reply
  26. kozorez

    подскажите, как отфильтровать таблицу по дате?

    Reply
  27. BioAngel

    Фильтрация(<Режим>,<КритерийФильтрации>,<Параметры>)

    Назначение:

    Установить режим фильтрации записей в базе.

    Возвращает:

    Текущее числовое значение режима фильтрации (на момент до исполнения метода).

    Параметры:

    <Режим> — выражение: 1 — задает режим фильтрации в базе, 0 — снимает (по умолчанию — 0)

    <КритерийФильтрации> — В описании критерия фильтрации можно указывать имена полей и литералы (явно заданные значения); можно использовать обычные операции отношения и логические операторы И , ИЛИ , НЕ , например:

    Эта запись фильтра оставит в таблице записи, в которых поля Doljnost=»»доцент»» и TabNum больше 3000

    Фильтрация(1,»([Doljnost]=’доцент’) И ([TabNum] > 3000)»,0)

    Reply
  28. kozorez

    после долгих проб и ошибок работает фильтрация по дате

    measure.Фильтрация(1,»([RecDTime]>'»+строка(НачДата)+»‘)»,0); 

    только при попытке добавить условие, фильтр сбрасывается…

    Reply
  29. kozorez
    measure.Фильтрация(1,»([Terminal]=7815)и([Terminal]=7814)И([RecDTime]>'»+строка(НачДата)+»‘)И([RecDTime]<‘»+строка(КонДата)+»‘)»,0);

    так не работает.. а хотелось бы..

    даже два условия вместе не работают

    Reply
  30. BioAngel

    Пришлите в личку пример таблицы и обработку на которых проблема воспроизводиться.

    как вариант пробуйте вставить пробелы перед и после «И»

    Reply
  31. kozorez

    Всё получилось! нужны пробелы.

    measure.Фильтрация(1,»(([Terminal]=7815) или ([Terminal]=7814)) И ([RecDTime]>'»+строка(НачДата)+»‘) И ([RecDTime]<‘»+строка(КонДата+1)+»‘)»,0);

    еще интересует последний параметр

    Фильтрация(<Режим>,<КритерийФильтрации>,<Параметры>) нигде не нашёл описание, а так обработка супер!

    Reply
  32. Arden

    BioAngel, Здравствуйте !

    Использую вашу разработку для регулярного чтения данных из другой базы данных, но функция ОткрытьФайл() срабатывает только на 100 файлах, затем на 101-м файле возвращает «0». Это ограничения компоненты или в каких то настройках BDE можно увеличить этот параметр? Файлы начинают открываться только после перезапуска сеанса 1С.

    Reply
  33. Arden

    похоже нашел во что упираюсь, в ограничение Paradox 100 паролей на сессию.

    Функция КодОшибки() выдает Too many passwords. 🙁

    Никак не обойти, не закрывая сеанс 1С ?

    Reply
  34. BioAngel

    без доработки видимо не получится, но как уже писал ранние исходники давно утрачены вместе с жёстким диском

    Reply
  35. ejik2012

    (34) подскажите, кириллица нормально читается компонентой? Если использовать ADODB, то при чтении кириллицы выходят кракозябры и даже не знаю как лечить это.

    Reply
  36. BioAngel

    возможно кодировка в заголовке таблицы не соответствует её содержанию, в любом случае надо проверять

    Reply
  37. ejik2012

    (22) поделись пожалуйста секретом как фильтрацию по полям с Датой делать ))))

    Reply
  38. BioAngel

    31 сообщение посмотрите

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *