gifts2017

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

Опубликовал Pavel lonsby (lonsby) в раздел Программирование - Инструментарий

Обработка позволяет просматривать файлы 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. Универсальная консоль отчетов.

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

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

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
КонсольЗапросовDBF_2.4
.epf 83,60Kb
28.09.14
52
.epf 2.4 83,60Kb 52 Скачать
КонсольЗапросовDBF_1.5
.epf 79,35Kb
28.09.14
113
.epf 1.5 79,35Kb 113 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Марат Настоящий (rayastar) 03.03.14 06:19
За красивое оформление и актуальность материала - однозначно большущий плюс!
2. Николай Крылов (Nikola23) 05.03.14 10:36
А какого размера файлы проверялись? Ворочать в оперативке большими таблицами значений - накладно.
Прямо сейчас у меня есть задача загрузить данные из учетной системы на DBF в 1с. Обработка очень пригодится, но файлы имеют общий объем более 1 гб...
Через драйвера Windows быстрее работать не будет?
3. Vlad (KillHunter) 05.03.14 11:55
А зачем в оперативке большие таблицы воротить попробуй на ССД диске усе сделать.
4. Pavel lonsby (lonsby) 05.03.14 14:45
(2) Nikola23, Суммарный объем файлов, с которым мне приходилось работать около 120 мб. С вашим объемом можно попробовать через ADO.
5. unsafe (StaticUnsafe) 05.03.14 15:55
Классно сделано. Спасибо
6. Дмитрий Глеков (glek) 05.03.14 16:39
Полезная штука. Спасибо. Не помешал бы переключатель "АДО/XBASE" И в случае АДО указывать строку подключения.
7. Саня Гончар (Pervuy) 05.03.14 19:57
Интересная консоль, Спасибо!
8. Александр Зубцов (iov) 07.03.14 20:51
отличненько в коллекцию.
9. Владимир Косов (mptt) 09.03.14 14:59
Жаль только не работает с DBF-файлами у которых название полей на кириллице..
Но это уже к платформе 1С..
Плюс++
10. Vlad (KillHunter) 09.03.14 18:16
Отличная обработка, похожих невстречал!!
11. Александр Пузаков (puzakov) 09.03.14 19:18
Можно же подключить внешний источник данных, и тянуть данные обычными запросами.
12. Pavel lonsby (lonsby) 10.03.14 10:44
(11) puzakov, Можно, данный способ не является единственно верным. Идея обработки появилась еще задолго до релиза 8.2.14 (появление внешних источников данных), хотя даже после появления я все равно продолжаю пользоваться обработкой. Так как не нужно ничего создавать в конфигураторе, прописывать подключение, создавать поля и т.д. Как говориться на вкус и цвет все фломастеры разные :). Поэтому каждый выбирает свой инструментарий, в зависимости от задач, привычек, предпочтений...
13. Maxim Kolkin (the1) 11.03.14 17:27
(10) KillHunter, попробуй "Инструменты разработчика", там есть консоль запросов с подключением к DBF по ADO
14. Евгений Мадонов (madonov) 03.04.14 04:04
Полезная штука, но вот возможность задать кодировку DBF-файла вручную не помешала бы.
15. Александр / (GeterX) 05.07.14 17:07
При чтении dbf возникла какая-то проблема с кодировкой.
Прикрепленные файлы:
16. Олег Шалимов (CaSH_2004) 19.09.14 15:17
(14) Присоеденяюсь по поводу кодировки.
Все круто, но это как ложка дегтя в бочке меда. Как всегда приходится залазить и допиливать :(
Ладно ловите допиленный вариант - т.к. содержимое читается при выборе файла а не при выполнении запроса, то и кодировку сделал при выборе файла и изменить ее нельзя.

Вообще непонятно почему сделано чтение файла при его выборе, а если содержимое файла поменяли? Другой кинули? Как-то нелогично
Прикрепленные файлы:
Консоль запросов ДБФ, DBF 1.5 (red.CaSH).epf
17. Pavel lonsby (lonsby) 29.09.14 09:56
(16) CaSH_2004, Чтение файла сделано при выборе, потому что влияет на скорость выполнения запроса. При выборе dbf файл перегоняем в тз(находится в памяти) один раз и при выполнении запроса нет необходимости при каждом нажатии на кнопку "выполнить" перегонять в тз. В новой версии обработки для ситуаций когда содержимое файла меняется, реализована возможность загружать файл dbf всегда при выполнении запроса.
18. Pavel lonsby (lonsby) 29.09.14 09:58
Изменено в версии 2.4 (28.09.2014):

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

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

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

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

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

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

– Исправлена ошибка при открытии файлов dbf, которые содержат memo поля (тип: М).
19. Дмитрий Медведев (ZeroDM) 11.12.14 12:46
Добрый день!

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

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


2. Ещё хотел спросить: В текущей консоли запросов, имеется возможность сгенерировать код, и алгоритм прописан таким образом, что сначала данные из файла dbf выгружаются в таблицу значений, затем таблица значений передаётся во временную таблицу, а уже содержимое временной таблицы обрабатывается в запросе. Нельзя ли напрямую обратится запросом к dbf-файла? (ведь он по сути является внешней таблицей базы данных)
20. Pavel lonsby (lonsby) 12.12.14 11:35
(19) ZeroDM, Очень рад, что обработка оказалась полезной. Спасибо за замечания.
1. В следующей версии, подумаю над проверкой по открытию sel-файлов.
2. Сомневаюсь, не слышал я о такой возможности.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа