Консоль запросов DBF







Обработка позволяет просматривать файлы DBF и их структуры, а также связывать файлы между собой и с данными 1с. Имеется приведение типов и генератор кода.

Иногда приходиться работать с файлами дбф, которые могут быть связаны между собой и с данными 1с. Для этой цели была написана данная обработка.

View

Реализованные возможности:

  1. Просмотр структуры файла DBF;
  2. Просмотр файлов DBF (просмотр временных таблиц);
  3. Выгружать в таблицу значений только нужные поля DBF(когда есть необходимость работать с определенными полями DBF, чтобы не тянуть все поля в таблицу значений);
  4. Формировать текст пакетного запроса по умолчанию из добавленных в список файлов DBF;
  5. Приведение типов DBF к типу 1с (пока только к типу «Строка»);
  6. Указывать в структуре псевдоним поля DBF, который затем будет использоваться в запросе;
  7. Генерировать код на встроенном языке.


Изменено в версии 2.4 (28.09.2014):

– Добавлена возможность выбора кодировки(OEM/ANSI). По умолчанию: OEM.

– Добавлена возможность отладки запроса. Удобно использовать для переноса в консоль запросов DBF: запроса и его параметров (Пример).

– Добавлена возможность «Скопировать поле», когда необходимо в запросе использовать одновременно приведенный строковый тип и тип поля dbf (Пример).

– Добавлена возможность загружать файл dbf всегда при выполнении запроса. На форме списка файлов DBF в табличном поле добавлена колонка «Всегда загружать» (Всегда загружать:Да – файл DBF будет всегда загружаться во время выполнения запроса. Всегда загружать:Нет – файл DBF будет загружен только единожды, дальнейший вызов будет осуществляться из памяти).

– Добавлены проверки на корректность ввода имен файлов и полей dbf.

– Изменена структура сохранения файла запросов (*.sel). Данные файлов dbf теперь не хранятся в файле запросов. Старые файлы запросов поддерживаются новой версией.

– Исправлена ошибка при открытии файлов dbf, которые содержат memo поля (тип: М).

 

Порядок работы:

  1. Нажмите на кнопку «Список файлов DBF». В данной форме необходимо указать пути к файлам DBF. Также можно воспользоваться фильтром для быстрого поиска файла DBF (когда количество файлов не один десяток, а мы знаем имя нужного нам файла, то можно сначала указать имя файла, а уже затем указывать путь к файлу);
  2. Для любого выбранного файла нажимаем на кнопку «Структура DBF» (здесь можно указать видимые поля, псевдонимы и сделать приведение типов);
  3. На форме «Список файлов DBF» нажимаем на кнопку «Текст запроса по умолчанию» для формирования пакетного запроса;
  4. Дальнейшие действия, как и с обычной консолью запросов;
  5. Для того чтобы сгенерировать код на встроенном языке необходимо нажать на кнопку «Генератор кода».

Чтобы запустить консоль запросов DBF в отладке необходимо в режиме конфигуратора:

  1. Поставить точку останова с условием в коде;
  2. Прописать в условии: ВнешниеОбработки.Создать(«%ПолыйПутьКОбработке%»).ОткрытьДляОтладки(Запрос);
  3. Запустить отладку.

 

Хочу поблагодарить авторов, идеи которых использовались в данной обработке:

  1. Полезные вкусняшки: Консоль запросов от GROOVY;
  2. Универсальная консоль отчетов.

Найденные ошибки, замечания и пожелания приветствуются.

Обработка писалась для себя, но буду очень рад, если она кому-нибудь окажется полезной.

20 Comments

  1. rayastar

    За красивое оформление и актуальность материала — однозначно большущий плюс!

    Reply
  2. Nikola23

    А какого размера файлы проверялись? Ворочать в оперативке большими таблицами значений — накладно.

    Прямо сейчас у меня есть задача загрузить данные из учетной системы на DBF в 1с. Обработка очень пригодится, но файлы имеют общий объем более 1 гб…

    Через драйвера Windows быстрее работать не будет?

    Reply
  3. KillHunter

    А зачем в оперативке большие таблицы воротить попробуй на ССД диске усе сделать.

    Reply
  4. lonsby

    (2) Nikola23, Суммарный объем файлов, с которым мне приходилось работать около 120 мб. С вашим объемом можно попробовать через ADO.

    Reply
  5. StaticUnsafe

    Классно сделано. Спасибо

    Reply
  6. glek

    Полезная штука. Спасибо. Не помешал бы переключатель «АДО/XBASE» И в случае АДО указывать строку подключения.

    Reply
  7. Pervuy

    Интересная консоль, Спасибо!

    Reply
  8. iov

    отличненько в коллекцию.

    Reply
  9. mptt

    Жаль только не работает с DBF-файлами у которых название полей на кириллице..

    Но это уже к платформе 1С..

    Плюс++

    Reply
  10. KillHunter

    Отличная обработка, похожих невстречал!!

    Reply
  11. puzakov

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

    Reply
  12. lonsby

    (11) puzakov, Можно, данный способ не является единственно верным. Идея обработки появилась еще задолго до релиза 8.2.14 (появление внешних источников данных), хотя даже после появления я все равно продолжаю пользоваться обработкой. Так как не нужно ничего создавать в конфигураторе, прописывать подключение, создавать поля и т.д. Как говориться на вкус и цвет все фломастеры разные :). Поэтому каждый выбирает свой инструментарий, в зависимости от задач, привычек, предпочтений…

    Reply
  13. the1

    (10) KillHunter, попробуй «Инструменты разработчика», там есть консоль запросов с подключением к DBF по ADO

    Reply
  14. madonov

    Полезная штука, но вот возможность задать кодировку DBF-файла вручную не помешала бы.

    Reply
  15. GeterX

    При чтении dbf возникла какая-то проблема с кодировкой.

    Reply
  16. CaSH_2004

    (14) Присоеденяюсь по поводу кодировки.

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

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

    Вообще непонятно почему сделано чтение файла при его выборе, а если содержимое файла поменяли? Другой кинули? Как-то нелогично

    Reply
  17. lonsby

    (16) CaSH_2004, Чтение файла сделано при выборе, потому что влияет на скорость выполнения запроса. При выборе dbf файл перегоняем в тз(находится в памяти) один раз и при выполнении запроса нет необходимости при каждом нажатии на кнопку «выполнить» перегонять в тз. В новой версии обработки для ситуаций когда содержимое файла меняется, реализована возможность загружать файл dbf всегда при выполнении запроса.

    Reply
  18. lonsby

    Изменено в версии 2.4 (28.09.2014):



    – Добавлена возможность выбора кодировки(OEM/ANSI). По умолчанию: OEM.

    – Добавлена возможность отладки запроса. Удобно использовать для переноса в консоль запросов DBF: запроса и его параметров.

    – Добавлена возможность «Скопировать поле», когда необходимо в запросе использовать одновременно приведенный строковый тип и тип поля dbf.

    – Добавлена возможность загружать файл dbf всегда при выполнении запроса. На форме списка файлов DBF в табличном поле добавлена колонка «Всегда загружать» (Всегда загружать:Да – файл DBF будет всегда загружаться во время выполнения запроса. Всегда загружать:Нет – файл DBF будет загружен только единожды, дальнейший вызов будет осуществляться из памяти).

    – Добавлены проверки на корректность ввода имен файлов и полей dbf.

    – Изменена структура сохранения файла запросов (*.sel). Данные файлов dbf теперь не хранятся в файле запросов. Старые файлы запросов поддерживаются новой версией.

    – Исправлена ошибка при открытии файлов dbf, которые содержат memo поля (тип: М).

    Reply
  19. ZeroDM

    Добрый день!

    Благодарю за инструмент. Кучу времени сэкономил на рутинную работу по переносу данных из dbf-файла в запрос.

    1. Хочу добавить информацию о замеченной мною проблеме:

    Я раньше пользовался обычной типовой консолью запросов от 1с и у меня там были сохранены запросы в sel-файлах. Сейчас когда открывал новую (Вашу) консоль запросов, она выдала ошибку при попытке открыть её и пыталась загрузить sel-файлы, сделанные 1с-овской версией консоли.

    Думаю не лишним будет предусмотреть необходимые проверки на то, чьей версией консоли был сделан sel-файл, прежде чем его загружать.

    2. Ещё хотел спросить: В текущей консоли запросов, имеется возможность сгенерировать код, и алгоритм прописан таким образом, что сначала данные из файла dbf выгружаются в таблицу значений, затем таблица значений передаётся во временную таблицу, а уже содержимое временной таблицы обрабатывается в запросе. Нельзя ли напрямую обратится запросом к dbf-файла? (ведь он по сути является внешней таблицей базы данных)

    Reply
  20. lonsby

    (19) ZeroDM, Очень рад, что обработка оказалась полезной. Спасибо за замечания.

    1. В следующей версии, подумаю над проверкой по открытию sel-файлов.

    2. Сомневаюсь, не слышал я о такой возможности.

    Reply

Leave a Comment

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