Функция загрузки из DBF-файлов

24.05.08

Разработка - Универсальные функции

Часто приходится что-то загружать из DBF-файлов и для того, чтобы не вспоминать каждый раз, как и что, сделал универсальную функцию загрузки DBF-файла в ТаблицуЗначений.
Функция ЗаполнитьТЗизDBF(ИмяФайла)
    Файл = создатьОбъект("XBASE");
    тз = СоздатьОбъект("ТаблицаЗначений");
    // открыть файл
    Файл.ОткрытьФайл(ИмяФайла);
    Файл.КодоваяСтраница(1); //задаем кодировку: 0 - windows, 1 - DOS 
    Если Файл.Открыта()=0 Тогда
        Сообщить("Не удалось открыть файл!");
        Возврат 0;
    КонецЕсли;
    сз = СоздатьОбъект("СписокЗначений");	// список имен полей
    // заполнение колонок ТЗ
    Для к = 1 По Файл.КоличествоПолей() Цикл
        ИмяПоля = "";
        Тип = "";
        Длинна = 0;
        Точность = 0;
        Файл.ОписаниеПоля(к, ИмяПоля, Тип, Длинна, Точность);
        сз.ДобавитьЗначение(ИмяПоля);
        тз.НоваяКолонка(ИмяПоля);
    КонецЦикла;
    // заполнение строк ТЗ
    Для н = 1 По Файл.КоличествоЗаписей() Цикл
        Файл.Перейти(н);
        тз.НоваяСтрока();
        Для к = 1 По сз.РазмерСписка() Цикл
            ИмяПоля = сз.ПолучитьЗначение(к);
            тз.УстановитьЗначение(н, ИмяПоля, Файл.ПолучитьЗначениеПоля(ИмяПоля));
        КонецЦикла;
    КонецЦикла;	
    Файл.ЗакрытьФайл();
    Возврат тз;
КонецФункции

См. также

Библиотека процедур и функций для технологической платформы "1С: Предприятие 7.7"

Универсальные функции Платформа 1С v7.7 Россия Абонемент ($m)

В библиотеку собраны различные функции по работе с документами, журналами, типами данных, строками, датой и временем, таблицами значений, Excel, файлами, XML, JSON, Http-сервисами, SMTP серверами и т.п.

1 стартмани

22.12.2023    657    9    user706545_kseg1971    0    

4

1С 7.7 и новый 1С:Контрагент

Универсальные функции Платформа 1С v7.7 Конфигурации 1cv7 Россия Бесплатно (free)

Получение реквизитов контрагентов из 1С:Контрагент для старых конфигураций под 1с 7.7.

25.04.2022    1820    zhenyat    7    

6

Печать таблицы значений в 1С 7.7 при отладке

Универсальные функции Платформа 1С v7.7 Россия Бесплатно (free)

Функция выводит таблицу значений в табличный документ. (v7.7) Особенно полезно при отладке. Не нужно вносить изменения в код, вызываем функцию как вычисляемое выражение при останове. Если таблица обрабатывается в несколько этапов, можно вывести её после каждого и визуально проследить эволюцию.

30.06.2021    4399    Zoltan_Black    11    

2

Установка принтера по умолчанию для 1С 7.7

Универсальные функции Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

Установка принтера по умолчанию в 1С 7.7. Обработка может быть полезна в том случае, когда нужно установить принтер по умолчанию, а доступа к рабочему столу нет (например, терминальный режим без рабочего стола или remoteApp)

1 стартмани

13.02.2019    13286    4    alsen    3    

4

Формирование строки json в 1С: 7.7

Универсальные функции Платформа 1С v7.7 Конфигурации 1cv7 1С:Комплексная 7.7 Абонемент ($m)

Предлагается набор функций 1с 7.7 для формирования строки json стандартными средствами.

1 стартмани

10.12.2018    10096    malovandrey    2    

18

Как создать индикатор в 1С:Предприятии 7.7

Универсальные функции Работа с интерфейсом Платформа 1С v7.7 Конфигурации 1cv7 Россия Абонемент ($m)

В статье дано описание создания индикатора на форме в среде разработки 1С:Предприятие 7.7 исключительно типовыми средствами.

1 стартмани

27.09.2016    18672    2    HAMMER_59    6    

2
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Abadonna 3958 28.05.08 04:49 Сейчас в теме
http://infostart.ru/profile/1329/projects/786/
глДБФ_в_ТЗ.ert
DBF Viewer.ert (7.7)
DBFViewer.erf (8.1)
Шёпот теней; +1 Ответить
16. Шёпот теней 1779 08.09.12 11:11 Сейчас в теме
(1) ... куда катится мир ИС ... куда смотрят админы ИС ...

... перенумератоы это уже высший пилотаж по сравнению с этим ... видимо скоро "Сообщить("Hello? Word");" - станет достижением ...

... вотМЫСЛЬвот ...

п.с. ну и контингент ИС - впрочем бабки не пахнут ...

... вот ...
2. fAngel 371 28.05.08 07:30 Сейчас в теме
Спасибо действительно размерность полей не учитывает точку,
но моя проще она позволяет обрабатывать данные не излишни
заморачиваясь на удаленные записи. Мое мнение легчи читается.
3. lustin 28.05.08 08:54 Сейчас в теме
можно глупый вопрос ?
[code]
ТекстЗапроса = "select * from <ИмяТаблицыДБФ> ";
ТЗ = _OleDbCommand.ВыполнитьИнструкцию(ТекстЗапроса);
Возврат ТЗ;
[code]

извините но XBASE как то по моему "не кашерно"
4. lustin 28.05.08 08:55 Сейчас в теме
ОФФ к СУппорту - "Хочется предварительный просмотр комментария"
5. fAngel 371 28.05.08 17:17 Сейчас в теме
Согласен, но не всегда можно подгрузить 1cpp или что-то похожее,
а делать через ODBC драйвер из 1С очень грамостко получается, хотя
иногда производительность сильно возрастает.
6. lustin 28.05.08 17:51 Сейчас в теме
не вижу никаких проблем - к тому же уже давно не модно применять odbc

Код
Функция ЗаполнитьТЗизDBF_ПрямойЗапрос(ПУтьКФайлу, ИмяФайла)
   Перем ТЗ;
   Попытка
      _Соединение = СоздатьОбъект("OLEDBData");
      _Соединение.Соединение(" 
      |Provider=VFPOLEDB.1;
   //   |Deleted=Yes; 
      |Null = Yes; 
      |Exclusive = No;
      |SourceType = DBF; 
      |Data Source=" + ПУтьКФайлу + ";
      |Mode=ReadWrite;
      |Extended Properties="""";
      |User ID="""";
      |Password="""";
      |Mask Password=False;
      |Collating Sequence=MACHINE; 
      |DSN="""""); 

      _Команда = _Соединение.СоздатьКоманду();
      ТЗ = _Команда.ВыполнитьИнструкцию("SELECT * FROM "+ИмяФайла);
      _Команда.Закрыть();
      _Соединение.Закрыть();
   Исключение
      ТЗ = ЗаполнитьТЗизDBF(ПУтьКФайлу+ИмяФайла);
   КонецПопытки;
   Возврат ТЗ;
КонецФункции // ЗаполнитьТЗизDBF
Показать полностью


типа того - функцию я примерно проверил *-)
7. fAngel 371 29.05.08 07:35 Сейчас в теме
В результате опять прямой обход выборки, SQL удобнее использовать
при запросах объединениях, иначе XBASE быстрее, если нужна выборка
можно сделать индекс. Мне не нравится сама работа с OLE и гадать как примеры на
VB будут выгладить в синтаксисе 1С иногда не хочется. Документации по VFP мне не
удалось найти нормальной, что бы сделать что-то сложное.
8. diims 366 05.11.08 16:46 Сейчас в теме
Вот для 8.1 в кратце)

Функция ПрочитатьФайл(Путь);
ДБФ=Новый XBase;
ДБФ.ОткрытьФайл(Путь);
Если ДБФ.Открыта()=0 тогда
Сообщить("Невозможно открыть файл по указанному пути:"+Путь);
Возврат(0);
КонецЕсли;
//Создаем точную коопию файла в виртуальной таблице
ТаблицаИзДБФ=Новый ТаблицаЗначений;
Для к=0 по Дбф.Поля.Количество()-1 цикл
Сообщить(ДБФ.поля.Получить(к).Имя);
ТаблицаИзДБФ.Колонки.Добавить(ДБФ.поля.Получить(к).Имя);
КонецЦикла;

Для сч=1 по ДБФ.КоличествоЗаписей() цикл
ДБФ.Перейти(сч);
Стр=ТаблицаИзДБФ.Добавить();
Для к=0 по Дбф.Поля.Количество()-1 цикл
ИмяПоля=ДБФ.поля.Получить(к).Имя;
Стр.Установить(к,дбф.ПолучитьЗначениеПоля(ИмяПоля));
КонецЦикла;
КонецЦикла;
Возврат(ТаблицаИзДБФ);
//ТаблицаИзДБФ.ВыбратьСтроку();
КонецФункции
YaroslavLtv; _MPV_; fAngel; +3 Ответить
9. fAngel 371 05.11.08 19:18 Сейчас в теме
10. пользователь 14.02.10 10:47
Сообщение было скрыто модератором.
...
11. пользователь 18.09.11 22:06
Сообщение было скрыто модератором.
...
12. пользователь 18.09.11 22:06
Сообщение было скрыто модератором.
...
13. пользователь 18.09.11 22:07
Сообщение было скрыто модератором.
...
14. Анна79 113 20.03.12 08:44 Сейчас в теме
Простите за вопрос, а куда код то втыкать?
15. AlexO 135 11.05.12 15:24 Сейчас в теме
(14) анна79,
это просто функции, которые можно использовать где угодно - обычно их вставляют в обработки переноса/обмена документами, справочниками и т.д. между восьмерками 1С, семерками 1С, семерками и восьмерками...
Т.е. здесь нет интерфейса - прсото приведена ключевая функция загрузки из DBF.
Оставьте свое сообщение