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

10.11.22

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

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

Скачать файл

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

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

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

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

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

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

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

 

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

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

 

 

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

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

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

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

 
 Скриншот

 

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

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

 

 

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

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

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

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

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

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


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

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

 
 Скриншот

 

См. также

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

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

12000 руб.

02.09.2020    172419    964    403    

925

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

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

8400 руб.

20.08.2024    14890    109    46    

108

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

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

22200 руб.

06.10.2023    17423    44    15    

76

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

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

9360 руб.

17.05.2024    27458    96    48    

139

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

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

15000 руб.

10.11.2023    12001    45    33    

67

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

78

SALE! %

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

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

4800 3840 руб.

14.01.2013    191474    1153    0    

920

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

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

14400 руб.

29.04.2020    33902    108    152    

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

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

Но она приложена!
DrAku1a; itoptimum; +2 Ответить
5. DrAku1a 1750 11.11.22 01:56 Сейчас в теме
(4) Забыл убрать фразу. Поправлено. Обработка бесплатна - чтобы сэкономить себе эти 5 минут (на её "изготовление").
bocharovki; alezander; voneska7; +3 Ответить
6. CheBurator 2695 11.11.22 08:02 Сейчас в теме
7. DrAku1a 1750 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 2469 11.11.22 11:17 Сейчас в теме
9. starik-2005 3098 11.11.22 11:41 Сейчас в теме
Автору респект уважуха, т.к. фактически рассказал, как сделать простое еще более простым. Только зачем две строки кода? Я справился и одной ))) https://infostart.ru/public/796664/
В таблицах полей и индексов надо добавить обработчики активизации строки.
Это вообще лишнее ))) Хотя... Для ОФ это не лишнее - печаль.
12. gzharkoj 523 12.11.22 20:23 Сейчас в теме
(9) Так и тут можно в одну строку написать, вопрос стиля.
10. kser87 2469 11.11.22 13:17 Сейчас в теме
А потом эти люди возмущаются, что 1С функции встроенного языка меняет. Добавят/удалят колонку и сломается непонятно что и непонятно где и быстро не исправить.
13. petrobol25 15.07.23 19:58 Сейчас в теме
а как получить виртуальные таблицы регистров?
14. DrAku1a 1750 15.07.23 20:10 Сейчас в теме
(13) Виртуальные таблицы - стороятся из других таблиц БД при формировании запроса.
15. alezander 05.01.24 03:18 Сейчас в теме
Спасибо! Нашел нужную таблицу в SQL и "надругался" над ней ))
16. iD1n 14 17.04.24 15:34 Сейчас в теме
17. dakork 37 20.05.24 09:25 Сейчас в теме
На сервере 1С:Предприятия произошла неисправимая ошибка. Приложение будет закрыто
18. dakork 37 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 1980 22.10.24 16:25 Сейчас в теме
Народ, а из внешней базы как получить данные?
Пишу
	Массив = Новый Массив;
	Массив.Добавить("Справочник.Банки");
	СтруктураХранения = Соединение.ПолучитьСтруктуруХраненияБазыДанных(Массив);

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

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

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

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