Определение имен 1С для БД MS SQL c использованием полнотекстового индексирования строк конфигуратора

22.08.11

Разработка - Инструментарий разработчика

Данные sql-скрипты и Clr-функции (VS 2010, MS SQL Server 2008) предназначены для извлечения из 1Сv82 (MS SQL) данных об именах 1С для таблиц и столбцов БД MS SQL с использованием полнотекстового поиска. Предполагаемое использование : интеграция 1С. Не использует средства 1С.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
1
.rar 19,88Kb
79 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

См вложение.

Данные sql-скрипты и Clr-функции (VS 2010, MS SQL Server 2008) предназначены для извлечения из 1Сv82 (MS SQL) данных об именах 1С для таблиц и столбцов БД MS SQL с использованием полнотекстового поиска. Предполагаемое использование : интеграция 1С. Не использует средства 1С. 

 

О том, как устроены clr-функции и как их разворачивать на сервере см. http://msdn.microsoft.com/ru-ru/library/w2kae45k.aspx

В примере база 1С установлена в [Ad], а Clr развернуты в [Rig], но можно ставить их и вместе.

Искомые данные содержатся в двух таблицах : Params и Config.

Из Params они извлекаются запросом

SELECT BinaryData FROM Params WHERE FileName = N'DBNames'

Полученное поле имеет двоичный формат и читается функцией lines. Она принимает аргумент SQLBytes  и возвращает в таблицу @db набор строк вида

{49bec45b-a7ee-4cb0-9de5-19440ac12e4b,"CKinds",1},

{ed0a9c1c-c7eb-47b6-b75b-7a2a1b3d38ce,"Node",2},

{16e8215b-eadd-4663-aff6-c400a657d768,"Node",3},

...

В начале строки - ключ 1С типа char(36)  (k36) , по которому осуществляется привязка к Config, в конце - индекс sql-наименования столбца или таблицы (num), по которому можно это самое наименование однозначно определить  в дальнейшем.

Полученный выше набор ключей 1С (Select k36 from @db)содержит, в том числе, ключи таблиц 1С, которым соответствуют поля [FileName] в Config.  Из последнего извлекаются записи с where [FileName] in (Select k36 from @db),

а поля BinaryData распаковываются в наборы строк вышеупомянутой функцией lines.

insert Clines

SELECT [FileName], f.Line [CLine]

  FROM [dbo].[Config]

  cross apply [Rig].[dbo].[lines] ([BinaryData]) f

  where [FileName] in (Select k36 from @db)

Однако далее возникает проблема, связанная с большим объемом данных, полученных при распаковке. В моем варианте он составил около 300 тыс. строк текста, из которого надо извлечь ключи char(36).

Вариант решения связан с полнотекстовым индексированием полученных строк и использованием предиката CONTAIN  вида

SELECT *   WHERE CONTAINS(c.CLine, @k36) and LEFT(c.CLine, 5)='{0,0,'

Второе условие в WHERE - это просто выделение строк с 1С -именами.

Далее полученная таблица привязывается к представлениям метаданных [INFORMATION_SCHEMA].[TABLES],[INFORMATION_SCHEMA].[COLUMNS]

c  помощью  индекса num.  Он формируется с помощью функции fnGetNum, которая выделяет группу цифр подряд в конце имени таблицы или столбца, например из  _Acc6_ExtDim8081 получится 8081.

 

Остальное в комментариях внутри скриптов.

Вступайте в нашу телеграмм-группу Инфостарт

См. также

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку одновременно в несколько потоков. А так же автоматически, без непосредственного участия пользователя. Решение в Реестре отечественного ПО

24900 руб.

20.08.2024    56660    305    154    

277

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта 1С:Предприятие 8 Платные (руб)

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

16500 руб.

02.09.2020    238959    1299    419    

1107

Инструментарий разработчика Нейросети Платные (руб)

Первые попытки разработки на 1С с использованием больших языковых моделей (LLM) могут разочаровать. LLMки сильно галлюцинируют, потому что не знают устройства конфигураций 1С, не знают нюансов синтаксиса. Но если дать им подсказки с помощью MCP, то результат получается кардинально лучше. Далее в публикации: MCP для поиска по метаданым 1С, справке синтакс-помошника и проверки синтаксиса.

15000 руб.

25.08.2025    35493    77    19    

89

Пакетная печать Печатные формы Инструментарий разработчика Программист 1С:Предприятие 8 1С:Зарплата и кадры бюджетного учреждения 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Библиотека стандартных подсистем Платные (руб)

Расширение для создания и редактирования печатных форм в системе 1С:Предприятие 8.3. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и прозрачность разработки, а также навести порядок в многообразии корпоративных печатных форм.

18500 руб.

06.10.2023    33514    87    34    

109

Инструменты администратора БД Инструментарий разработчика Роли и права Программист 1С:Предприятие 8 1C:Бухгалтерия Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

17000 руб.

10.11.2023    22845    83    42    

98

Инструментарий разработчика Программист 1С:Предприятие 8 Платные (руб)

Инструмент для написания и отладки кода в режиме «1С:Предприятие». Представляет собой консоль кода с возможностью пошаговой отладки, просмотра значений переменных любых типов, использования процедур и функций, просмотра стека вызовов, вычисления произвольных выражений на встроенном языке в контексте точки останова, синтаксического контроля и остановки по ошибке. В консоли используется удобный редактор кода с подсветкой, контекстной подсказкой, возможностью вызова конструкторов запроса и форматной строки.

9500 руб.

17.05.2024    47010    160    63    

200

Разработка Инструментарий разработчика Работа с интерфейсом Адаптация типовых решений Нейросети 1C:Бухгалтерия 1C:ERP 1С:ЗУП 1С:КА 1С:УНФ 1С:УТ 1С:Розница 1С:ДО 1С:ERP Управление предприятием 2 Платные (руб)

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

36000 руб.

28.08.2025    4987    2    2    

5
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
0. lucas_ 13 22.08.11 12:17 Сейчас в теме
Данные sql-скрипты и Clr-функции (VS 2010, MS SQL Server 2008) предназначены для извлечения из 1Сv82 (MS SQL) данных об именах 1С для таблиц и столбцов БД MS SQL с использованием полнотекстового поиска. Предполагаемое использование : интеграция 1С. Не использует средства 1С.

Перейти к публикации

1. German 414 22.08.11 12:17 Сейчас в теме
2. VSerge 08.09.11 14:31 Сейчас в теме
Если я правильно понял, эта статья является логическим продолжением этой http://infostart.ru/public/74406/ ?
Отличие только в том, что здесь используется полнотекстовый поиск.

В обоих случаях используется технология LINQ
http://infostart.ru/public/58981/
Для отправки сообщения требуется регистрация/авторизация