CF & SQL : конструктор прямых запросов к БД 1С














Программа для чтения и анализа внутренней структуры данных 1С V8.х, Содержит конструктор прямых SQL запросов, позволяет обрабатывать и редактировать тексты SQL-запросов, выполнять прямые запросы к базе данных 1С и обрабатывать полученные результаты.

В сложных информационных системах, состоящих из множества различных баз 1с большого объема, нередко возникают задачи, требующие прямого доступа к данным. К примеру, в случае критического повреждения конфигурации 1С, когда обычный доступ к БД невозможен, но требуется восстановить данные, отсутствующие в резервной копии. Подобный доступ может потребоваться при глубоком анализе текущего состояния базы, задачах свертки объемных баз, глобальной сверке данных  в различных базах, задачах обмена с другими информационными системами в случае, когда типовые решения с использованием средств 1С могут вызвать существенное падение производительности системы либо вовсе вызвать остановку ее работы. Специальных инструментов для прямого доступа к данным не так много, как правило используется sql server management studio. Но m. studio позволяет провести анализ только в терминах СУБД, что вызывает существенные затруднения при анализе данных "битых" баз, недоступных из среды 1С. Предложенная разработка решает эту задачу. Программа работает с любыми конфигурациями 1С V8.х, с любого компьютера под управлением ОС WINDOWS. Для работы не требуются дополнительные компоненты и приложения. Представленная версия не имеет каких либо функциональных ограничений.

Рабочее окно программы.

Основные особенности программы

  • Программа является самостоятельным независимым продуктом.
  • Программа работает только с серверными базами 1С.
  • При работе программы не используется подключение к клиенту или серверу 1С.
  • Программа предоставляет возможность получения информации из базы данных 1С как при штатном режиме работы сервера 1С, так и при отключенном агенте сервера 1С, либо при испорченном файле конфигурации и прочих аварийных ситуациях.
  • Работа в программе не влияет на производительность сервера 1С.
  • Программа работает с собственной базой данных MS SQL. В ней в зашифрованном виде хранятся прочитанные в процессе работы конфигурации 1С, параметры доступа к программе и подключенным базам, а так же временные данные, необходимые для работы программы.
  • Структуры конфигураций считываются прямым запросом непосредственно из базы данных на SQL сервере, для этого необходим сетевой доступ к серверу и параметры подключения к соответствующей базе данных.
  • Программа не является завершенным продуктом и находится в стадии доработки и тестирования.

Работа с конфигурациями

В программе реализованы следующие функции работы с конфигурациями 1С:

  • Чтение и обработка любой конфигурации 1с V8.х и сохранение ее в формате программы «CF & SQL»;
  • Выбор из списка и открытие любой подключенной ранее структуры данных с подключением к соответствующей базе данных.
  • Управление списком подключенных структур данных 1С: добавление новых, удаление, обновление.
  • Представление конфигурации в привычном для разработчика 1С виде;
  • Одновременная работа с любым количеством БД из списка сохраненных конфигураций;
  • Навигация по дереву конфигурации: быстрый переход от ссылочного реквизита к соответствующей таблице данных, сортировка данных выбранного узла дерева конфигурации, контекстный поиск в выбранном узле, поиск в дереве;
  • Быстрая информация о типе любого узла конфигурации, находящегося под указателем мыши, в виде контекстной подсказки:

  • Возможность добавления для реквизита ссылочного типа, списка полей соответствующей таблицы данных.  Уровень вложенности раскрытия ссылочных узлов не ограничен.

  • Автоматическое формирование  шаблона текста SQL-запроса по отмеченным полям.

  • Просмотр свойств выбранной таблицы в отдельном окне.

Использование виртуальных наборов данных

В рамках программы  виртуальными данными обозначаются именованные наборы данных, доступные для использования в прямых запросах SQL по любым  подключенным базам данных 1С. В зависимости от условий выполнения запроса, система сама определяет, каким образом инициализировать в запросе виртуальный набор – с помощью временной таблицы, подключения linkedserver-а, либо подключения исходной таблицы с указанием родительской БД (пример на рис . 6-8). Все виртуальные наборы регистрируются в служебном узле «Виртуальные данные». Любой зарегистрированный набор может быть как самостоятельным источником данных для SQL-запроса, так и использоваться в связке с любыми таблицами подключенных конфигураций 1С и таблицами других виртуальных наборов.
Таким образом, предоставляется возможность прямого запроса к связанным таблицам, расположенным физически на разных серверах в разных базах данных 1С. Опция удобна для сверки данных в различных базах 1С, в том числе разделенных территориально, быстрой загрузки данных в территориально удаленные базы.
Виртуальные данные регистрируются 3 способами:

  • Регистрация любой таблицы любой подключенной структуры данных 1С.
  • Регистрация виртуального набора данных из файла с сохраненным результатом произвольного запроса SQL (файл в формате программы «CF & SQL» ).
  • Регистрация текущего результата выполненного запроса.

Регистрация виртуальных данных.

Подключение виртуальных данных к выбранной таблице.

Формирование запроса с использованием виртуальных данных.

Редактирование текста запросов.

Встроенный редактор текста предоставляет возможность написания и редактирования SQL-запросов любой сложности.
Функциональные возможности редактора:

  • Открытие неограниченного количества страниц;
  • Подсветка синтаксиса;
  • Контекстная подсказка с подстановкой ключевых слов TSQL и имен объектов БД;
  • Сохранение текста запроса в файл и открытие текста из файла.
  • Поиск имени поля или таблицы, находящихся под курсором, в дереве конфигураций и позиционирование фокуса на найденном узле.
  • Поиск выделенного слова в тексте и подсветка всех найденных.
  • Форматирование текста запроса и автоматическое формирование секций текста.
  • Формирование произвольных секций текста по выделенной области.
  • Для отформатированного текста отображается быстрая контекстная подсказка по любому слову под курсором при нажатии клавиши «ALT» , включая расшифровку представлений бинарных ссылок.

Контекстная подсказка по представлению ссылки под курсором.

Контекстная подсказка по слову под курсором.

  • Проверка синтаксиса с сообщением об ошибке и позиционировании на неверной строке.

  • Конвертация текущего запроса для выполнения в базе данных со схожей конфигурацией 1С, но с именами SQL, отличными от имен текущей конфигурации.
  • Запуск выполнения запроса в фоновом режиме без блокировки работы программы
  • Запуск выполнения выделенного текста запроса.

Результат запроса

Каждая вкладка редактора запроса хранит результат последнего выполненного запроса. Этот результат отображается в поле результата при активизации вкладки.
Функциональные возможности поля результата запроса:

  • Отображение значений результата разным цветом в зависимости от типа значения.
  • Сортировка любой колонки результата.
  • Фильтр результата по выделенному значению.
  • Сохранение результирующего набора данных в файл.
  • Открытие набора данных из файла.
  • Регистрация виртуальных данных по текущему результату запроса для использования в других запросах.
  • Поиск значения.
  • Просмотр текста выполненного запроса
  • Быстрый расчет суммовых характеристик выделенного набора значений(сумма, среднее, мин, макс).
  • Сохранение в буфер выделенного набора значений в виде строки с разделителями, для использования в тексте запроса в качестве аргумента условия «IN (N1, N2, …) ».
  • Контекстная подсказка по значениям полей ссылочного типа.

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

Всем удачи!

34 Comments

  1. YPermitin

    (0) это очень круто!!!

    Reply ↓
  2. dmitrydemenew

    (1)спасибо!

    Reply ↓
  3. 3vs

    Я так сразу и понял, «Загрузки 1», не Юрий ли скачал?! 🙂

    Как говорится — рыбак рыбака! 🙂

    Reply ↓
  4. YPermitin

    (3) работа у автора достойная. Так что да, скачал 🙂

    Reply ↓
  5. 3vs

    (4)Я хоть ничего не понимаю в этом, но по картинкам сразу видно, работал

    суровый профессионал! 🙂

    Вопрос, сам продукт сделан на базе 1С, или вообще собственная разработка к 1С никак не относящаяся, или это специализированная конфигурация на платформе 1С?

    И как этот софт обращается напрямую к базам 1С без сервера предприятия, напрямую к базе?

    Поддерживается только M$ SQL или PostgreSQL тоже поддерживается?

    Работа в программе не влияет на производительность сервера 1С.

    Программа работает с собственной базой данных MS SQL.

    То есть, программа вытаскивает данные из рабочей базы и переписывает куда-то к себе в укромный уголок, где позволяет извращаться с данными?

    Reply ↓
  6. dmitrydemenew

    (5)это собственная разработка не связанная с 1С и не зависящая от неё. Работа ведётся непосредственно с базой данных ms sql. Postgre не поддерживается. Из базы читается конфигурация с перекрестными связями объектов и сохраняется в базу программы. При работе используется именно этот снимок конфигурации, позволяющий формировать и анализировать sql запросы к бд (к примеру из профайлера). Сами данные нигде не пересохраняются и отображаются в поле результата как результат выполнения sql запроса. По поводу извращения над данными-так это зависит от пользователя инструмента. Порой и в 1С на такое наткнёшься-волосы дыбом 🙂

    Reply ↓
  7. 3vs

    (6)Ага, теперь примерно понятно! 🙂

    Я думаю, те, кто «в теме», заценят Ваш продукт!

    Вопрос — а для Postgre не планируется такой же софт?

    А то у нас на дворе «импортозамещение», да и сам Postgre,

    похоже, всё бодрее начинает использоваться в 1С, правда,

    в верхних решениях 1С скорее всего должен будет использоваться Postgres Pro Enterprise, который, судя по ценнику, вряд ли уступает M$ SQL! 🙂

    Ёлы-палы, читаешь посты таких профессионалов, как Вы, Юрий,…

    Не хотелось, понимаешь, замахнуться на собственную альтернативу 1С?

    Reply ↓
  8. PowerBoy

    А Update есть или только Select?

    Reply ↓
  9. dmitrydemenew

    (8)Выполняются любые запросы SQL. Перед выполнением запроса изменения данных необходимо дополнительно подтвердить запуск выполнения.

    Reply ↓
  10. alex_bob

    Под XP будет работать?

    Reply ↓
  11. dmitrydemenew

    (10)Должна, создана в среде ВСВ6. 100% гарантии не дам — под ХР последний раз запускал очень давно.

    Reply ↓
  12. fishca

    На github.com исходники выложить не планируется?

    Reply ↓
  13. dmitrydemenew

    (12)Пока не планирую.

    Reply ↓
  14. tormozit

    У меня настроена Windows аутентификация пользователя в сервере MSSQL 2014. При попытке подключения через этот способ аутентификации получаю ошибку.

    Reply ↓
  15. dmitrydemenew

    (14)Представленная версия поддерживает только аутентификацию ms sql

    Reply ↓
  16. starik-2005

    Суровые челябинские программисты не ищут легких путей )))

    Вообще, в дни, когда космические корабли бороздят просторы браузеров, а не нативного кода на «ВСВ6» (кстати, что это?), нет желания переработать и дополнить данный механизм в виде платформонезависимого веб-сервиса?А визуализацию делать уже в браузере — сейчас это мэйнстрим.

    Reply ↓
  17. dmitrydemenew

    BCB6 — это старый добрый Borland C++ Builder 6. По проекту было множество идей, но он заморожен уже более 5 лет — к сожалению, свободного времени уже не так много, как в былые времена. Но тема с выходом в веб — очень интересная новая идея. Подумаю над этим.

    Reply ↓
  18. KEV8383

    Не смог не поставить «+»

    Reply ↓
  19. user1005652

    На windows 10 фактически не работает первичное окно ввода данных о бд. Не работает переключение по текстбоксам курсором мыши. Выпадающее меню не работает, не отображается пункты меню. На кнопки тест и принять можно нажать шаманством (временно переключившись в другое окно другой программы.)

    Reply ↓
  20. user1005652

    На данный момент программа не функциональна. Результат забрать не возможно из программы.

    В результатах запроса не работает «выделить все» не работает скопировать в excel. Не работает выгрузить в excel.

    Есть сохранение в какой то не известный формат vtd, но он даже в блокноте не открывается.

    Reply ↓
  21. user1005652

    Текст запроса текущего результата не добавляет условия where, order by

    Reply ↓
  22. dmitrydemenew

    (20)Основное назначение программы — анализ структуры хранения данных, анализ и построение SQL запросов. При разработке я не ставил целей альтернативного получения и выгрузки данных из базы, с этим 1С сама справляется великолепно. [.vtd] — внутренний формат хранения данных программы и предназначен для использования только в среде CF&SQL.

    Reply ↓
  23. dmitrydemenew

    (21)не смог смоделировать, у меня отображается полный текст запроса

    Reply ↓
  24. user1005652

    Русские буквы из программы копируются в неправильной кодировке например Ñïðàâî÷íèêè_ÂèäûÊîíòàêòíîéÈíôîðìàöèè1

    Reply ↓
  25. dmitrydemenew

    Нужно копировать в русской раскладке клавиатуры

    Reply ↓
  26. user1005652

    Тогда есть более удобные разработки в этом плане. Обработки которые запускаются в самой 1С и позволяют хотя бы русские имена копировать в sql manager.

    Основные проблемы вашей программы в том что она написана на устаревших технологиях. Так как современные фраймворки и ПО написанное в vs делают данные функции доступными по умолчанию, без каких либо действий со стороны разработчика.

    А вам придется конечно потрудиться чтобы все работало корректно (удобно). Иначе пользоваться вашей программой фактически не возможно.

    На данный момент единственное что в программе функционально и одновременно нет:

    * +Структура нескольких конфигураций -Поиск не схлопывает структуру (не дает увидеть только найденные объекты)

    * +Видно русские названия значений перечислений -Нельзя выбрать таблицу из (наименование, номер, УИД)

    * +Можно сформировать запрос на основе выбранного элемента дерева -Нельзя в одном окне выполнять запросы к разным базам (union и group by в одной БД в такой программе не информативны), проблемы кодировок при копировании из программы

    * +Можно запустить запрос на исполнение -Нельзя оперировать результатами выполненного запроса(то есть выгрузить его куда либо, желательно как минимум в excel)

    * +Есть в окне итогового результата фильтрация и сортировка данных -После фильтрации и сортировка нельзя сформировать SQL запрос автомитически

    Reply ↓
  27. user1005652

    (23)

    Я сейчас конкретно занимаюсь переносом информации из 8 БД разных конфигураций в 1 БД ERP. Для этого конечно же приходится использовать SQL, так как единственно быстрый вариант. Для анализа структуры использую различное ПО и вашу программу в том числе.

    Думал получиться остановиться только на вашей программе, но многое не удобно.

    Сами понимаете, приходится сравнивать перечисления вручную, справочники вручную, сопоставлять УИД, таблицы SQL у всех баз названы по своему.

    Тут как раз вроде и требуется ваш анализатор)))

    Reply ↓
  28. user1005652

    (23)Так что можете сейчас получить информацию о проблемах из первых рук.

    Reply ↓
  29. dmitrydemenew

    Все ваши замечания верны, не буду спорить. Программа «на любителя», так как делал я ее исключительно для себя и под себя. Она не является завершенным продуктом, я отмечал это в описании. Критические проблемы постараюсь исправить. Если программа не подходит для решения Ваших задач, используйте более удобные инструменты.

    Reply ↓
  30. akpaevj

    Хорошая работа!

    Reply ↓
  31. user1329092

    Скачал программу, немного странно, что нельзя задать имя базы данных. Ну ладно, создал БД с нужным именем . Теперь при каждом запуске такое окошко с ошибкой. На любое действие либо ошибка, либо молчание. Похоже, для работы с этой программой нужно в совершенстве знать несколько языков программирования.

    Reply ↓
  32. user1329092

    (27)Здравствуйте. У меня тоже сейчас задача максимально обойтись запросами sql. Что можете посоветовать на текущий момент?

    Reply ↓
  33. dmitrydemenew

    (32)Какие вопросы? Опишите проблему более подробно.

    Reply ↓
  34. user1329092

    (33)Проблема в том, что после того, как я настроил соединение с БД, при входе в программу появляется окно с ошибкой.

    Reply ↓

Leave a Comment

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