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 не будет опубликован. Обязательные поля помечены *