Clr-функция для работы с метаданными 1С 8.1

19.08.10

Разработка - Математика и алгоритмы

Идея была подсказана на этом сайте. Clr-функция позволяет работать с метаданными клиент-серверной (MS SQL) 1С 8.1.

Скачать файл

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

Наименование По подписке [?] Купить один файл
clr.rar
.rar 4,29Kb
81
81 Скачать (1 SM) Купить за 1 850 руб.

Clr-функция, которая позволяет работать с метаданными (таблицы Config, Params) 1С 8.1. Читает данные из полей sqlbinary, обрабатывает их, проводя декомпрессию соответствующего потока байтов и выделяя ключи 1С. Развернуть проще на VS 2008: создать sql -проект, подключиться к базе [Adv] ( к примеру), добавить в проект приложенную функцию fn_GetBinary() и развернуть на свой sql-сервер. В указанную базу предварительно установить свою клиент-серверную 1С. Скрипт для проверки в Тест.sql. Собственно, это только демонстрация идеи. Но все работает. Можно, например, легко сопоставить имена в 1С именам на MS SQL.

См. также

Универсальные функции Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

21.05.2024    20236    dimanich70    81    

145

WEB-интеграция Универсальные функции Механизмы платформы 1С Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

28.08.2023    14774    YA_418728146    7    

166

Пакетная печать Печатные формы Адаптация типовых решений Универсальные функции Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Абонемент ($m)

Расширение для программ 1С:Управление торговлей, 1С:Комплексная автоматизация, 1С:ERP, которое позволяет распечатывать печатные формы для непроведенных документов. Можно настроить, каким пользователям, какие конкретные формы документов разрешено печатать без проведения документа.

2 стартмани

22.08.2023    3593    57    progmaster    8    

4

Инструментарий разработчика Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 1С:Розница 2 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Абонемент ($m)

Копирует в буфер значения из списков, из ячеек отчетов, таблиц, настроек списков, других отборов и вставляет в выбранную настройку отбора. Работает с Объект не найден. Работает как в одной так и между разными базами 1С. Использует комбинации [Alt+C] Копировать список, [Alt+V] Вставить список. Также для копирования данных используется стандартная [Ctrl+C] (например из открытого xls, mxl, doc и т.п. файла скопировать список наименований)

1 стартмани

13.10.2022    18499    171    sapervodichka    112    

135

Универсальные функции Механизмы типовых конфигураций БСП (Библиотека стандартных подсистем) Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

В данном материале рассмотрим типовой алгоритм подсистемы контроля учета БСП в конфигурациях на примерах.

18.07.2022    8374    quazare    8    

111

СКД Универсальные функции Программист Стажер Платформа 1С v8.3 Система компоновки данных Конфигурации 1cv8 Бесплатно (free)

Столкнулся с тем, что мне приходится писать гору отчетов. Во многих приходится использовать повторяющиеся приемы. Решил написать шпаргалку, которая, надеюсь пригодится не только мне. В этой статье: Объединение ячеек в отчете только на определенном уровне иерархии, Постобработка итогов в табличном документе, Скрытие колонок в зависимости от количества месяцев в периоде.

28.05.2022    10444    milkers    11    

98

Универсальные функции БСП (Библиотека стандартных подсистем) Программист Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

25.04.2022    19214    quazare    11    

139
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. detec 136 19.08.10 18:28 Сейчас в теме
Просьба развёрнуто пояснить: что подразумевается под работой с метаданными?
2. wirg 19.08.10 18:34 Сейчас в теме
Ничего не понятно из описания.
3. dglucas_ 12 19.08.10 18:54 Сейчас в теме
Под "работой с метаданными" в контексте данной темы следует понимать извлечение любых данных, содержащихся в конкретной конфигурации 1С (только для MS SQL). :D
5. cleaner_it 209 19.08.10 18:59 Сейчас в теме
(3) - то есть можно просмотреть пользовательские данные 1С? Список элементов справочника/документа/регистра?
4. cleaner_it 209 19.08.10 18:57 Сейчас в теме
Не понятна цель изложенных в (0) действий. Картинок нет, описания развертки проекта нет...
6. dglucas_ 12 19.08.10 19:13 Сейчас в теме
Да. Описание развертки проектов для создания clr-функций можно найти в хелпе Майкрософт. Оно стандартное, без особенностей для конкретной ситуации. :D
7. tsd 105 19.08.10 19:20 Сейчас в теме
(6) ага, но здесь не настоящие программисты ;) , и половине народа (мне в том числе) не понятно в чем фишка.
А нафига все это надо? И в чем собственно говоря идея, демонстрацию которой Вы делаете? С метаданными я и так могу работать (в локальной базе через сом и т.п.).
8. German 413 19.08.10 21:54 Сейчас в теме
:!: :!: :!: :!: :!:
Сильно. Автору респект.
Минусы и нытье в комментах непонятно.
ИМХО. Это самая сильная вещь на ИС за последние 2 года с момента опубликования V8unpack
9. awa 2610 19.08.10 23:42 Сейчас в теме
(8) German, не преувеличивай. Всё, что здесь есть - это чтение двоичных данных из поля BINARYDATA таблиц CONFIG и PARAMS и их распаковка (deflate).
В качестве примера производится парсинг записи DBNames из таблицы PARAMS, содержимое которой имеет вид

...
{92b8043c-b023-496a-9498-fcfad09de34a,"Fld",394},
{c38ad01d-6049-4ff0-a15f-e8e89616971c,"ByParentField",395},
{c38ad01d-6049-4ff0-a15f-e8e89616971c,"ByField",396},
{f47b419b-4aed-4975-83d8-978c710710d1,"ReferenceChangeRec",397},
{41bda9ce-9cd4-4285-afc9-c5126dc0330e,"Fld",398},
...

и попытка чтения всех подряд полей с GUID-именами, распарсенными из DBNames, в таблице CONFIG.
То, что в DBNames содержатся идентификаторы не только основных таблиц объектов 1С, а также идентификаторы полей, индексов и вспомогательных таблиц объектов 1С, никак не учитывается. Также нет никакого реального разбора данных из CONFIG. На самом деле, разбор метаданных надо начинать с записи root таблицы CONFIG. Так что, до реального извлечения "любых данных, содержащихся в конкретной конфигурации 1С" еще очень далеко.

А минусы, как я понимаю, за совершенно невнятное описание, что же на самом деле выложено.
theshadowco; +1 Ответить
10. German 413 20.08.10 08:36 Сейчас в теме
(9) пример бессмысленный, но я считаю полезной именно саму технологию распаковки.
идею можно развить в действительно полезные вещи.
12. awa 2610 20.08.10 09:17 Сейчас в теме
(10) Какая технология? Вся технология заключается в распаковке двоичных данных (deflate). Двоичные данные упакованы zip-ом и хранятся как поток без заголовка. Это давным давно всем известно, точно также потоки упакованы в cf. Т.е. вся технология, представленная в этой публикации заключается в строке

DeflateStream deflstrm = new System.IO.Compression.DeflateStream(param.Stream, CompressionMode.Decompress);

То же самое делает zlib1.dll, который используется в v8unpack. То же самое я делаю в Tool_1CD c помощью библиотеки Abbrevia. Нет в этой публикации ничего нового.
Минусов, конечно, автор не заслуживает, но и на плюс пока не тянет.
13. cleaner_it 209 20.08.10 10:33 Сейчас в теме
(8) Да, я тоже провел аналогию с V8unpack - не дотягивает пока. Зато идея мне нравится.
PS: Самая сильная вещь за последнее время, мне кажется - GUI клиент к 1С на Java с использованием J1C:)
11. dglucas_ 12 20.08.10 09:14 Сейчас в теме
Согласен с German. Я ведь и писал именно про демонстрацию идеи и ее оценку хотел получить (для начала).Что же касается ''реального извлечения", то до него уже не так уж далеко. Собственно, модифицирована функция, и примеры. Просто я не очень понимаю, как это добавить сюда.

Что касается мутности описания, оно действительно рассчитано на людей, которые знают про clr и проблему с sqlbinary в 1cv8. ;)
14. dglucas_ 12 24.08.10 12:38 Сейчас в теме
Собственно говоря, можно было бы попробовать "порасплетать" метаданные и более вдумчиво, благо, предложенная идея вполне это позволяет сделать. Просьба дать ссылки на любые ресурсы, где описано, как устроена конфигурация восьмерки "изнутри". То есть, как устроенные эти дивные файлы ( или записи :D ) с фигурными скобками.
15. German 413 25.08.10 13:01 Сейчас в теме
17. cleaner_it 209 30.08.10 06:12 Сейчас в теме
(14) http://infostart.ru/public/19734/ (правда, для файловых БД, но что-то общее по-любому будет)
16. dglucas_ 12 25.08.10 14:50 Сейчас в теме
Спасибо, обязательно посмотрю.
18. пользователь 29.12.11 16:46
Сообщение было скрыто модератором.
...
19. DrZombi 301 11.12.14 10:21 Сейчас в теме
Присоединюсь... Статья ни о чем ОТСОЙ
20. METAL 299 22.06.16 12:23 Сейчас в теме
dglucas_, спасибо большое, очень интересно!

Но воспользоваться не получается.

Тестовый скрипт Test.sql возвращает пустую таблицу.
Скрипт
SEL ECT * FROM [mybase].[dbo].[fn_GetBinary] (
(Select TOP 1 BinaryData Fr om Config)) k
также возвращает пустую таблицу... :(

Возможно неправильно подключил?

Скрипты подключения во вложении (один вспомогательный просто разрешает выполнение CLR)
Прикрепленные файлы:
Разрешение исполнения CLR.sql
Подключение внешнего метода к SQL.sql
Оставьте свое сообщение