Декодировать содержание таблиц Config, Params и v8users

31.05.15

База данных - Инструменты администратора БД

Нередко мы сталкиваемся с ограничениями, которые останавливают нас стеной. Вот как, скажите, разобраться в базе 1С8 на SQL, если конфигуратор 1С не запускается на веб-сервере? Нам остается в этом случае разобраться в том, как хранятся данные на сервере. Т.е. увидеть их в том виде, в котором с ними работает платформа 1С. Сегодня я помогу вам с декодированием отдельных таблиц.

Скачать файл

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

Наименование По подписке [?] Купить один файл
Компонента
.dll 10,00Kb
17
17 Скачать (10 SM) Купить за 4 550 руб.

Это компонента не для 1С, а для SQL-сервера. Все действия выполняются в консоли сервера (management studio, скачивается бесплатно, рабочий сервер можно прилинковать и выпонять целевые запросы удаленно)


Подключите компоненту так:
CREATE ASSEMBLY sqlDeflate from 'C:\sqlDll.dll' WITH PERMISSION_SET = SAFE
(для удаления drop ASSEMBLY sqlDeflate)

Свяжите с ней функции, которыми можно будет пользоваться:
CREATE FUNCTION fdecode(@inbyte varbinary(max)) RETURNS varbinary(max) WITH EXECUTE AS CALLER AS EXTERNAL NAME sqlDeflate.[sqlDllmy.sqlDll].decode


CREATE FUNCTION fcode(@inbyte varbinary(max)) RETURNS varbinary(max) WITH EXECUTE AS CALLER AS EXTERNAL NAME sqlDeflate.[sqlDllmy.sqlDll].code


CREATE FUNCTION fdecodeToStr(@inbyte varbinary(max)) RETURNS nvarchar(max) WITH EXECUTE AS CALLER AS EXTERNAL NAME sqlDeflate.[sqlDllmy.sqlDll].decodeToStr

CREATE PROCEDURE load(@Path nvarchar(max))   WITH EXECUTE AS CALLER AS  EXTERNAL NAME sqlDeflate.[sqlDllmy.sqlDll].load

CREATE FUNCTION fdecodeUser(
                                           @inbyte as varbinary(max),
                                           @cmd as nvarchar(max) ,
                                           @sqlPathToTable as nvarchar(max)
) RETURNS nvarchar(max) WITH EXECUTE AS CALLER AS EXTERNAL NAME sqlDeflate.[sqlDllmy.sqlDll].decodeUser


(для удаления: drop FUNCTION fdecode и аналогично остальные)

Выполнять функции возможно после разрешения использовать компоненту:
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'clr enabled', 1;
GO
RECONFIGURE;
GO

Примеры использования:
select dbo.fdecodeUser(t.Data,'decode',''), * from v8users as t
(извлекаем строку)
select dbo.fdecodeUser(t.Data,'hpwd',''), * from v8users as t
(извлекаем хеш пароля)

select dbo.fdecodeUser(t.Data,'pwd ru 6',''), * from v8users as t (до 6 цифр и букв)

select dbo.fdecodeUser(t.Data,'pwd en 6',''), * from v8users as t (до 6 цифр и букв)

select dbo.fdecodeUser(t.Data,'pwd all 6',''), * from v8users as t (до 6 цифр и букв)

select dbo.fdecodeUser(t.Data,'roles id',''), * from v8users as t (роли идентификаторами)

exec dbo.load "test1С.dbo.Params" (инициализация описаний для базы test1С.dbo.Params)

select dbo.fdecodeUser(t.Data,'roles','test1С.dbo.Params'), * from v8users as t (роли именами, требуется указание базы, из которой инициализировались описания)

А это печать содержания DBNames:
declare @var nvarchar(max);
select @var=dbo.fdecodeToStr(t.BinaryData) from Params as t where t.FileName='DBNames';
--печатаем
DECLARE @Counter INT
SET @Counter = 0
DECLARE @TotalPrints INT
SET @TotalPrints = (LEN(@var) / 4000) + 1
WHILE @Counter < @TotalPrints
BEGIN
PRINT SUBSTRING(@var, @Counter * 4000, 4000)
SET @Counter = @Counter + 1
END

Важно понимать, что какие-то данные (к примеру, Config и Params) просто сжаты алгоритмом Deflate, а какие-то (v8users) уже именно закодированы.
Я не стал писать обратное кодирование для v8users, т.к. легко себе представил, как оно может доставить неприятности (кто-нибудь по неопытности может мимо платформы вписать в таблицу свои данные).

Надеюсь этот мануал будет полезен для восстановления работоспособности базы 1С8. И конечно для отчетов по ролям пользователей пригодится.

Декодировать Config Params и v8users

См. также

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

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

8400 руб.

20.08.2024    17031    119    59    

121

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

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

15000 руб.

10.11.2023    12446    49    33    

70

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

Роли… Вы тратите много времени и сил на подбор ролей среди около 2400 в ERP или 1500 в Рознице 2, пытаясь понять какими правами они обладают? Вы все время смотрите права в конфигураторе или отчетах чтоб создать нормальные профили доступа? Вы хотите наглядно видеть какие права дает профиль и редактировать все в простом виде? А может хотите просто указать подсистему и дать права на просмотр и добавление на объекты и не лезть в дебри прав и чтоб обработка сама подобрала нужные роли? Все это теперь стало возможно! Обновление от 18.09.2024, версия 1.2

18000 руб.

06.12.2023    11376    48    8    

78

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

Расширение «Оперативное проведение» в 4 раза уменьшает время проведения документов и закрытия месяца. Является комплексным решением проблем 62 и 60 счетов. Оптимизирует проведение при включенной функциональной опции «Раздельный учет НДС». Используется в более 10 организациях уже 2 года. Совместимо с конфигурацией Бухгалтерия 3.0 (+КОРП).

14400 руб.

29.04.2020    34304    109    152    

75

Инструменты администратора БД Системный администратор Программист Платформа 1С v8.3 1C:Бухгалтерия Платные (руб)

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

3600 руб.

06.02.2017    32849    145    18    

51

Архивирование (backup) Инструменты администратора БД Платформа 1С v8.3 Управляемые формы 1C:Бухгалтерия 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Данная разработка позволит решить вопрос с резервным копированием Ваших баз в автоматическом режиме, расположенных на сервере 1С. Система умеет ставить блокировки на вход, блокировать фоновые задания, принудительно отключать сеансы пользователей. И все это система делает в автоматически при создании бэкапа (или через команду). Выгрузка происходит в родной формат 1С - .dt. Так же система умеет архивировать данные выгрузки с установкой пароля. Умеет менять расширение файла zip или dt на любое указанное вами, что позволит сохранить выгрузки от шифровальщика. Может удалять старые копии выгрузок, оставляя указанное количество резервных копий, начиная с самой поздней. Только для WINDOWS!

6000 руб.

06.11.2012    74081    629    45    

88

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

Многие сталкиваются с проблемой когда изображения, находящиеся в базе разные по объему и размерам. Менеджеры могут добавить файлы в очень высоком разрешении, объемом свыше 20 Мегабайт. База данных становится слишком большой, выгрузка на сайт идёт медленно и требуется много место на хостинге. Как сжать картинки и уменьшить размер базы 1С? Это можно сделать с помощью данной обработки. Существует возможность выбрать различные варианты для того чтобы уменьшить картинки: в разы, в процентах от первоначального объема, а также сделать картинки одинаковой ширины. В результате размер базы 1С значительно сократится (в зависимости от количества и размера картинок), а изображения станут небольшого объема, равными по ширине, почти без потери качества. Работает на управляемых формах для УТ 11, КА, ERP.

3000 руб.

21.07.2022    10330    10    4    

18
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. МихаилМ 15.05.15 18:16 Сейчас в теме
на этом форуме уже были 2 подобные clr библиотеки в готовом виде
и 2 в виде исходников.

http://infostart.ru/public/88850/
http://infostart.ru/public/21461/

и мб
http://infostart.ru/public/75831/

интересней были бы примеры использования. парсинг метаданных и dbnames и прочего.
2. ture 613 15.05.15 18:19 Сейчас в теме
(1) ими и вдохновился.
Кое-что добавил от себя, чтоб самому потом пользоваться. В любом случае, публикация давно не в топе и монеток не приносит.

Примеры парсинга метаданных?
- Там какой-то неправильный json. Сколько на него не смотрю, всегда склоняюсь к мысли, что это json, но только после удаления каких-то полей, чтоб место под хранение сократить. С парсингом проблем быть не должно и в таком виде. Это текст. Я из него простейшими регулярками вынимаю нужные фрагменты (единственно, где мне роли потребовались).
Парсинг в конечном счете заканчивается view к таблицам http://infostart.ru/public/352750/, которые делаются непосредственно из 1С. Принято считать, что за view должны стоять реальные данные и критерии отборов сделать так нельзя. Это ошибочный взгляд, я делаю и критерии отборов в публикации без проблем.
Получается, что у парсинга по SQL очень специфичное применение. Я, к примеру, вынужден парсить базу 1С, где команда боится и тормозит любое начинание. Но если доступ есть к 1С и view разрешено делать, то парсить остается только что-то совсем уж специфичное (v8users, к примеру) - но это уже баловство.

Мной msdn использовался в основном, нет секретов совсем. По кодированию паролей опять же открытые источники все (форумы сплошные, ссылки некуда давать, там пароли гадают на заказ).
3. swyatogor 12.04.19 08:17 Сейчас в теме
Данная тема в последнее время может стать вновь актуальной в плане расставления галки "защита от опасных действий" в 8.3 ))
также другие разработки, указанные выше - работают только с файлами конфигураций. Хотелось как раз получить версию как у ТС -
во первых - получать матрицу пользователей по текущим базам на прямую с SQL;
во вторых - (возможно) заведение новых пользователей автоматически));
в третьих - получение текущего релиза конфы (есть такая задача)) в ломы просто по 40-ка базам бегать и собирать такую инфу)
ну и так далее..
ybatiaev; +1 Ответить
4. ybatiaev 59 10.12.19 22:44 Сейчас в теме
(3) Тоже ищу подобную инфу. У нас порядка 800 баз. Собрать инфу быстро можно только используя HTTP сервисы. Работает очень быстро. Но есть одно ограничение - базу надо публиковать. Хотя пользователям поясняю, что только в локальной сети, но говорят БЕЗОПАСНОСТЬ дороже. Короче сделал, проверил механизм и... забросил ((((((
Плюсы очевидны
- скорость в сотни раз;
- любые операции доступны, к примеру добавить пользователя во все 800 баз (бывало по 50 баз);
- не естся лицензия;
- инфу хоть в браузер толкай.
- "подобие хранимок" можно затолкать в расширение, т.е. обезопасить доступ к данным;
- кстати, при чтении расширения можно сразу получить информацию РАБОТАЕТ или НЕТ расширение после установки (удобство при автоматическом обновлении, как у нас)...

На данный момент не могу вытащить инфу по тому, что база на полной поддержке, с возможностью изменений или нет(
5. sbelousov 02.09.21 06:16 Сейчас в теме
Важно понимать, что какие-то данные (к примеру, Config и Params) просто сжаты алгоритмом Deflate, а какие-то (v8users) уже именно закодированы.

Интересует таблица v8users. Не получается у себя воспроизвести чтение Data из нее, выходит ошибка при вызове метода Read для DeflateStream (за основу брал публикацию https://infostart.ru/1c/articles/21461/?ID=21461).
Исходя из утверждения, что данные в таблице v8users закодированы, рождается предположение, что их надо декодировать. Не могли бы поделиться описанием, каким образом можно прочитать данные из поля Data? Стоит задача выявлять базы 1С, в которых есть пользователи со включенной 1С-аутентификацией с пустыми или простыми паролями, имеющими полные права или права на запуск внешних обработок.
6. sbelousov 02.09.21 07:58 Сейчас в теме
Оставьте свое сообщение