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

10.11.22

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

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

Скачать файл

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

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

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

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

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

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

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

 

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

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

 

 

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

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

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

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

 
 Скриншот

 

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

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

 

 

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

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

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

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

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

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


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

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

 
 Скриншот

 

См. также

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

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

15500 руб.

02.09.2020    183876    1024    403    

967

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

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

8400 руб.

20.08.2024    24148    159    84    

158

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

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

15000 руб.

10.11.2023    13632    57    33    

77

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

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

22200 руб.

06.10.2023    20251    51    19    

86

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

19200 руб.

06.12.2023    12614    56    8    

85

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

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

9360 руб.

17.05.2024    30472    104    48    

147

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

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

14400 руб.

29.04.2020    35452    113    152    

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

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

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

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

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

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

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