Время от времени возникает необходимость посмотреть в SQL таблицы и узнать за что отвечает то или иное поле, где именно хранятся данные и как всё организовано. Бывает, это нужно для исправления технических проблем с базой после обновления, сбоя диска, выключения света и т.п. Или же - просто любопытство.
Платформа "1С:Предприятие 8" не держит в секрете информацию об именах таблиц SQL (или внутренней БД для файловой). Для получения подробнейшей информации - есть штатная функция "ПолучитьСтруктуруХраненияБазыДанных".
Данная обработка - лишь обертка над функцией.
На Инфостарте можно найти несколько решений за $m, но зачем тратиться на то, что можно собрать за 5 минут?..
Потому, привожу инструкцию как самостоятельно собрать себе такую обработку на обычных и управляемых формах.
Управляемые формы
Первым делом создаем внешнюю обработку, добавляем на форму реквизит "ТаблицаСтруктураБД" тип - таблица значений, структура таблицы:
Все колонки типа строка неограниченной длины (кроме тех, тип которых - таблица значений)
Далее - добавляем обработчик события "ПриСозданииНаСервере" - собственно, заполним таблицу:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
СтруктураБД = ПолучитьСтруктуруХраненияБазыДанных();
ЗначениеВРеквизитФормы(СтруктураБД, "ТаблицаСтруктураБД");
КонецПроцедуры
Сохраняем, пользуемся.
Обычные формы
Тут чуть сложнее. Создаем внешнюю обработку и при помощи мастера закидываем на неё 4 таблицы, немного "колдуем" с настройками и получаем такое:
Таблицы я назвал так: СтруктураБД, ПоляТаблицы, ИндексыТаблицы, ПоляИндекса.
Далее - добавляем обработчик события "ПриОткрытии" - собственно, заполним таблицу:
Процедура ПриОткрытии()
СтруктураБД = ПолучитьСтруктуруХраненияБазыДанных();
КонецПроцедуры
В таблицах полей и индексов надо добавить обработчики активизации строки. Код тоже прост:
Процедура СтруктураБДПриАктивизацииСтроки(Элемент)
Если ЭлементыФормы.СтруктураБД.ТекущаяСтрока=Неопределено Тогда
ПоляТаблицы = новый ТаблицаЗначений;
ИндексыТаблицы = новый ТаблицаЗначений;
ПоляИндекса = новый ТаблицаЗначений;
Иначе
ПоляТаблицы = ЭлементыФормы.СтруктураБД.ТекущаяСтрока.Поля;
ИндексыТаблицы = ЭлементыФормы.СтруктураБД.ТекущаяСтрока.Индексы;
ИндексыТаблицыПриАктивизацииСтроки(Элемент);
КонецЕсли;
КонецПроцедуры
Процедура ИндексыТаблицыПриАктивизацииСтроки(Элемент)
Если ЭлементыФормы.ИндексыТаблицы.ТекущаяСтрока=Неопределено Тогда
ПоляИндекса = новый ТаблицаЗначений;
Иначе
ПоляИндекса = ЭлементыФормы.ИндексыТаблицы.ТекущаяСтрока.Поля;
КонецЕсли;
КонецПроцедуры
Сохраняем, пользуемся.