Структура хранения ИБ - обработка за 5 минут и 2 строки кода - DIY

10.11.22

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

Платформа "1С:Предприятие 8" не держит в секрете информацию об именах таблиц SQL (или внутренней БД для файловой). Для получения подробнейшей информации - есть штатная функция "ПолучитьСтруктуруХраненияБазыДанных". Данная обработка - лишь обертка над функцией. Думаю, нет смысла качать и тратить $m на то, что можно сделать самому за 5 минут.

Скачать файл

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

Наименование Бесплатно
Обработка СтруктураХраненияИБ.epf (упр. и обычные формы)
.epf 12,53Kb
2592
2592 Скачать бесплатно
 
 Для чего это нужно?

Время от времени возникает необходимость посмотреть в SQL таблицы и узнать за что отвечает то или иное поле, где именно хранятся данные и как всё организовано. Бывает, это нужно для исправления технических проблем с базой после обновления, сбоя диска, выключения света и т.п. Или же - просто любопытство.

Платформа "1С:Предприятие 8" не держит в секрете информацию об именах таблиц SQL (или внутренней БД для файловой). Для получения подробнейшей информации - есть штатная функция "ПолучитьСтруктуруХраненияБазыДанных".

Данная обработка - лишь обертка над функцией.

На Инфостарте можно найти несколько решений за $m, но зачем тратиться на то, что можно собрать за 5 минут?..

Потому, привожу инструкцию как самостоятельно собрать себе такую обработку на обычных и управляемых формах.

 

Управляемые формы

Первым делом создаем внешнюю обработку, добавляем на форму реквизит "ТаблицаСтруктураБД" тип - таблица значений, структура таблицы:

 

 

Все колонки типа строка неограниченной длины (кроме тех, тип которых - таблица значений)

Далее - добавляем обработчик события "ПриСозданииНаСервере" - собственно, заполним таблицу:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	СтруктураБД = ПолучитьСтруктуруХраненияБазыДанных();
	ЗначениеВРеквизитФормы(СтруктураБД, "ТаблицаСтруктураБД");
	
КонецПроцедуры

Сохраняем, пользуемся.

 
 Скриншот

 

Обычные формы

Тут чуть сложнее. Создаем внешнюю обработку и при помощи мастера закидываем на неё 4 таблицы, немного "колдуем" с настройками и получаем такое:

 

 

Таблицы я назвал так: СтруктураБД, ПоляТаблицы, ИндексыТаблицы, ПоляИндекса.

Далее - добавляем обработчик события "ПриОткрытии" - собственно, заполним таблицу:

Процедура ПриОткрытии()
	
	СтруктураБД = ПолучитьСтруктуруХраненияБазыДанных();
	
КонецПроцедуры

В таблицах полей и индексов надо добавить обработчики активизации строки. Код тоже прост:

Процедура СтруктураБДПриАктивизацииСтроки(Элемент)
	
	Если ЭлементыФормы.СтруктураБД.ТекущаяСтрока=Неопределено Тогда
		ПоляТаблицы = новый ТаблицаЗначений;
		ИндексыТаблицы = новый ТаблицаЗначений;
		ПоляИндекса = новый ТаблицаЗначений;
	Иначе
		ПоляТаблицы = ЭлементыФормы.СтруктураБД.ТекущаяСтрока.Поля;
		ИндексыТаблицы = ЭлементыФормы.СтруктураБД.ТекущаяСтрока.Индексы;
		ИндексыТаблицыПриАктивизацииСтроки(Элемент);
	КонецЕсли;

КонецПроцедуры


Процедура ИндексыТаблицыПриАктивизацииСтроки(Элемент)
	
	Если ЭлементыФормы.ИндексыТаблицы.ТекущаяСтрока=Неопределено Тогда
		ПоляИндекса = новый ТаблицаЗначений;
	Иначе
		ПоляИндекса = ЭлементыФормы.ИндексыТаблицы.ТекущаяСтрока.Поля;
	КонецЕсли;
	
КонецПроцедуры

Сохраняем, пользуемся.

 
 Скриншот

 

См. также

SALE! %

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

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

12000 10000 руб.

02.09.2020    163266    902    401    

880

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

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

8400 руб.

20.08.2024    9406    73    32    

83

Инструменты администратора БД Роли и права Системный администратор Программист Пользователь 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

16800 руб.

06.12.2023    9282    44    5    

75

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

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

22200 руб.

06.10.2023    15982    39    8    

75

SALE! %

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

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

15000 10000 руб.

10.11.2023    10875    40    27    

66

Инструментарий разработчика Программист Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

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

9360 руб.

17.05.2024    24354    73    45    

122

SALE! %

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

Универсальный инструмент программиста для администрирования конфигураций. Сборник наиболее часто используемых обработок под единым интерфейсом.

4800 3840 руб.

14.01.2013    189099    1144    0    

915

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

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

14400 руб.

29.04.2020    33048    107    152    

73
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. aleksey2 89 10.11.22 08:24 Сейчас в теме
а как сделать такое для ПолучитьРазмерДанныхБазыДанных() ?
2. DrAku1a 1747 10.11.22 08:43 Сейчас в теме
(1)
ПолучитьРазмерДанныхБазыДанных
- тут чуть сложнее. Поскольку метод возвращает только суммарный размер данных по указанным отборам, нужно делать цикл по метаданным, перебирая всё, из чего состоит конфа, и заполнять вручную. В справке - достаточно прозначный пример:
МассивИменМетаданных = Новый Массив();
МассивИменМетаданных.Добавить("Справочник.Номенклатура");
РазмерДанных=ПолучитьРазмерДанныхБазыДанных(Новый Массив(),МассивИменМетаданных);

Доступен, начиная с версии 8.3.15.
3. tormozit 7238 10.11.22 09:17 Сейчас в теме
Попробовал. Работает =)
fatman78; voneska7; itoptimum; fancy; DrAku1a; ardn; +6 Ответить
4. WorkerPavel 10.11.22 14:17 Сейчас в теме
Написано
Саму обработку не прилагаю.

Но она приложена!
DrAku1a; itoptimum; +2 Ответить
5. DrAku1a 1747 11.11.22 01:56 Сейчас в теме
(4) Забыл убрать фразу. Поправлено. Обработка бесплатна - чтобы сэкономить себе эти 5 минут (на её "изготовление").
bocharovki; alezander; voneska7; +3 Ответить
6. CheBurator 2684 11.11.22 08:02 Сейчас в теме
7. DrAku1a 1747 11.11.22 10:02 Сейчас в теме
(6) Разборки с настройкой и установкой ИР обычно занимают более 5 минут. Знаю, там удобные вещи реализованы, но...
Прикрепленные файлы:
user1619761; siamagic; alezander; ixijixi; dnikolaev; +5 Ответить
11. PerlAmutor 155 12.11.22 06:34 Сейчас в теме
(7) Не пожалеть времени и один раз разобраться себе на пользу. Обновление релизов слабо сказывалось на работоспособности ИР, кроме того, автор ИР оперативно вносит доработки по заявке.
fatman78; +1 Ответить
8. kser87 2466 11.11.22 11:17 Сейчас в теме
9. starik-2005 3092 11.11.22 11:41 Сейчас в теме
Автору респект уважуха, т.к. фактически рассказал, как сделать простое еще более простым. Только зачем две строки кода? Я справился и одной ))) https://infostart.ru/public/796664/
В таблицах полей и индексов надо добавить обработчики активизации строки.
Это вообще лишнее ))) Хотя... Для ОФ это не лишнее - печаль.
12. gzharkoj 520 12.11.22 20:23 Сейчас в теме
(9) Так и тут можно в одну строку написать, вопрос стиля.
10. kser87 2466 11.11.22 13:17 Сейчас в теме
А потом эти люди возмущаются, что 1С функции встроенного языка меняет. Добавят/удалят колонку и сломается непонятно что и непонятно где и быстро не исправить.
13. petrobol25 15.07.23 19:58 Сейчас в теме
а как получить виртуальные таблицы регистров?
14. DrAku1a 1747 15.07.23 20:10 Сейчас в теме
(13) Виртуальные таблицы - стороятся из других таблиц БД при формировании запроса.
15. alezander 05.01.24 03:18 Сейчас в теме
Спасибо! Нашел нужную таблицу в SQL и "надругался" над ней ))
16. iD1n 13 17.04.24 15:34 Сейчас в теме
17. dakork 36 20.05.24 09:25 Сейчас в теме
На сервере 1С:Предприятия произошла неисправимая ошибка. Приложение будет закрыто
18. dakork 36 20.05.24 10:06 Сейчас в теме
(17)...было, когда написал сам))... но, скачанная обработка работает
19. mnb-next 15 16.07.24 15:32 Сейчас в теме
Спасибо Автору! Помогло!
20. edud 2 22.07.24 11:24 Сейчас в теме
произошла неисправимая ошибка


скачанная обработка
база на PostgreSQL
:-(
Прикрепленные файлы:
21. ixijixi 1932 22.10.24 16:25 Сейчас в теме
Народ, а из внешней базы как получить данные?
Пишу
	Массив = Новый Массив;
	Массив.Добавить("Справочник.Банки");
	СтруктураХранения = Соединение.ПолучитьСтруктуруХраненияБазыДанных(Массив);

Получаю ошибку
[ОшибкаВоВремяВыполненияВстроенногоЯзыка]
по причине:
Произошла исключительная ситуация (1C:Enterprise 8.3.25.1286): Несоответствие типов (параметр номер '1')
[ОшибкаИспользованияВстроенногоЯзыка]

Соединение - это COM-объект, из которого без проблем получаю все прочие данные (метаданные, запросы и проч.), но структуру хранения не отдает =(

Пробовал вместо "Справочник.Банки" подставлять СОМ-метаданные, результат тот же...

АПД. Использование GetDBStorageStructureInfo вместо ПолучитьСтруктуруХраненияБазыДанных дает результат, но только без параметров. Хотелось бы не стрелять из пушки по воробьям, а получать инфу точечно.
22. DrAku1a 1747 24.10.24 03:50 Сейчас в теме
(21) Вместо
Массив = Новый Массив;
попробуйте
Массив = Соединение.NewObject("Массив");
23. ixijixi 1932 24.10.24 08:34 Сейчас в теме
(22) Спасибо! Отлично работает!
24. Ninchik 25.11.24 20:23 Сейчас в теме
Оставьте свое сообщение