INFOSTART EVENT 2018 EDUCATION

Второй тур голосования за доклады.
Окончание 5 сентября.

Бачаева Юлия | Руководитель проектов | ГК «Софт-сервис»

«Как не потерять контроль над управлением проектом»

Изменение первоначальных условий договоренностей в процессе проекта, как основные факторы риска. Удовлетворение потребностей заказчика в рамках проекта и избежание переработки участников проекта. Эффективность проектной документации, как средство коммуникации между участниками проекта. Убеждение заказчика в рациональности предложенного решения задач автоматизации. Распределение ресурсов проекта на этапе проектирования и во время внедрения. Защита проекта: ожидания от функционала системы и реальный результат.

Структура хранения базы данных (управляемые формы)

Администрирование - Поиск данных

87
Обработка позволяет увидеть названия таблиц и полей в том виде, в котором с ними работает СУБД. Будет полезна при конструировании прямых запросов к серверу баз данных и интеграции с другими системами (минуя сервер 1С).

Платформа 1С представляет собой высокоуровневое средство работы с базами данных. В общем случае, разработчику не нужно задумываться что и как происходит на стороне СУБД, так как платформа сама решает сколько ей создавать таблиц и какие внутри них буду поля.

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

Как раз для такого случая предназначена встроенная функция ПолучитьСтруктуруХраненияБазыДанных(), возвращающая все необходимые данные в виде таблицы значений. Причем некоторые реквизиты (Поля и Индексы) этой таблицы сами представляют собой таблицы значений.

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

В связи с этим лучшим вариантом будет передавать в функцию имена объектов метаданных, чтобы уменьшить объем возвращаемых данных. Однако не все таблицы СУБД связаны с метаданными конфигурации, поэтому возможность просмотреть полный список я оставил.

Функционал обработки

При активизации элемента дерева метаданных проихсодит заполнение списка таблиц, полей и индексов. При двойном клике по корню дерева отображаются все таблицы, включая служебные (не рекомендуется, так как возрастают объемы данных, по которым идет поиск).

В табличных частях работают стандартные команды поиска и вывода списка.

Отличия от существующих реализаций

Существует несколько схожик публикаций, например, //infostart.ru/public/90486/ и //infostart.ru/public/91004/. Однако их неудобство заключается в отсутствии дерева метаданных, что затрудняет навигацию. Поиск осуществляется также по называнию таблиц и полей в базе, а не наоборот.

Наиболее близка по функционалу к публикация автора le_(//infostart.ru/public/128235/). В отличие от нее, данная обработка  содержит наиболее полное дерево метаданных (планы обмена, константы, журналы документов и пр.). Кроме того структура данных представлена более наглядно: список таблиц объекта метаданных, список полей и список индексов выводятся в отдельных табличных частях.  

UPD-2018-01-06 (v1.3). Исправлена ошибка, возникающая в режиме совместимости 8.3.7 и выше (изменилось поведение платформы).

UPD-2012-08-17 (v1.2). Сделан патч для корректной обработки регламентных заданий, исправлен пункт отображения планов видов расчета, исправлено поведение при переключении типа структуры в корне конфигурации.

P.S. Некоторые работодатели при приеме на работу задают вопрос о количестве физических и виртуальных таблиц для регистров. Неплохо бы знать ответы на эти вопросы, тем более, что это уровень 1С:Профессионал. Если вы хотите не только выучить этот ответ, но и "пощупать" эти таблицы, тогда эта обработка для вас!

87

Скачать файлы

Наименование Файл Версия Размер
СтруктураХраненияБазыДанных v1.3.epf
.epf 14,88Kb
10.05.18
51
.epf 1.3 14,88Kb 51 Скачать
СтруктураХраненияБазыДанных v1.2.epf
.epf 13,15Kb
10.05.18
717
.epf 1.2 13,15Kb 717 Скачать
СтруктураХраненияБазыДанных v1.1.epf
.epf 13,03Kb
10.05.18
67
.epf 1.1 13,03Kb 67 Скачать

См. также

Комментарии
Сортировка: Древо
1. child1983 13 16.10.13 16:55 Сейчас в теме
а в обработке предусмотрен вывод в документ(например, сохранение mxl) структуры или только просмотреть можно?
2. bforce 411 16.10.13 17:30 Сейчас в теме
(1) child1983, специально выгрузка не предусматривалась.
Доступна только стандартная возможность вывода табличной части в табличный документ, откуда его можно экспортировать.
child1983; +1 Ответить
3. Andreynikus 1070 08.11.13 13:21 Сейчас в теме
Есть ли возможность поиска объекта 1С по имени таблицы СУБД?
Было бы просто отлично.
4. bforce 411 08.11.13 15:56 Сейчас в теме
Я использую следующий метод: по двойному клику на корне получаю все таблицы, а дальше по Ctrl + F на столбце Имя таблицы хранения (или Найти из контекстного меню) получаю ту единственную строку.

Если делать это отдельной командой, то все равно так или иначе придется получать полную таблицу.
5. yaxinr 33 24.03.17 12:57 Сейчас в теме
это обработки с управляемыми формами, на моей конфигурации не открываются
6. MasterSVS 54 16.09.17 19:38 Сейчас в теме
7. RocKeR_13 393 14.11.17 17:42 Сейчас в теме
По корню не получает полную структуру: необходимо внести изменения вот сюда:
&НаСервере
Процедура ЗаполнитьТаблицыПоОбъектуНаСервере(знач МетаОбъект, ВидимостьКолонкиМетаданных)
	
	ОбъектыМетаданных = Новый Массив;
	// Патч для некорректно работающих регламентных заданий
	Если Найти(МетаОбъект, "РегламентноеЗадание.") > 0 Тогда
		МетаОбъект = Метаданные.НайтиПоПолномуИмени(МетаОбъект);
	КонецЕсли;
	// Конец патча
	
	СтруктураДанных = ПолучитьСтруктуруХраненияБазыДанных(ОбъектыМетаданных, ТипСтруктуры = 1);
Показать


перед получением структуры добавить проверку на пустую строку:
	Если Не ПустаяСтрока(МетаОбъект) Тогда
		ОбъектыМетаданных.Добавить(МетаОбъект);
	КонецЕсли;
8. bforce 411 25.11.17 20:58 Сейчас в теме
(7)
По корню не получает полную структуру...

Получает, но по двойному клику на корневом элементе дерева (на имени конфигурации). Я давно порываюсь сделать там контекстное меню или кнопку, чтобы как-то обозначить такую возможность, но пока не собрался.

перед получением структуры добавить проверку на пустую строку:

В описании изменений платформы я не нашел информации об изменении поведения в работе этой функции. То есть, передавая пустую строку в массиве можно получить полную структуру хранения. Предлагаемое изменение кажется необязательным. Расскажите подробнее об условиях использования обработки (платформа, конфигурация), если это не так.
10. bforce 411 10.05.18 23:14 Сейчас в теме
(7) (9), спасибо вам, ребята!
Сделал новую версию.
9. AndyR 18.12.17 10:19 Сейчас в теме
Платформа 8.3.10.2561, по двойному клику на корне ругалось
{ВнешняяОбработка.СтруктураХраненияБазыДанных.Форма.Форма.Форма(104)}: Ошибка при вызове метода контекста (ПолучитьСтруктуруХраненияБазыДанных)
СтруктураДанных = ПолучитьСтруктуруХраненияБазыДанных(ОбъектыМетаданных, ТипСтруктуры = 1);
по причине:
Недопустимое значение параметра (параметр номер '1')
.
Поправил начало заполнения так
&НаСервере
Процедура ЗаполнитьТаблицыПоОбъектуНаСервере(знач МетаОбъект, ВидимостьКолонкиМетаданных)
	
	Если МетаОбъект="" Тогда
		СтруктураДанных = ПолучитьСтруктуруХраненияБазыДанных(, ТипСтруктуры = 1);
	Иначе
		Если Найти(МетаОбъект, "РегламентноеЗадание.") > 0 Тогда
			МетаОбъект = Метаданные.НайтиПоПолномуИмени(МетаОбъект);
		КонецЕсли;
		
		ОбъектыМетаданных = Новый Массив;
		ОбъектыМетаданных.Добавить(МетаОбъект);
		СтруктураДанных = ПолучитьСтруктуруХраненияБазыДанных(ОбъектыМетаданных, ТипСтруктуры = 1);
	КонецЕсли;
...
Показать


В СП про 1й параметр сказано только что он необязательный. Про пустую строку не нашел:
<ОбъектыМетаданных> (необязательный)

Тип: Массив.
Массив имен объектов метаданных или массив объектов метаданных, для которых требуется получить структуру таблиц базы данных.


ЗЫ:
Пробовал на 2х конфигурациях. В одной с режимом совместимости "Версия 8.3.6" пустую строку принимает без ошибок. В другой, где режим совместимости "Не использовать", пустая строка уже не прокатывает.
11. rokhin 56 11.07.18 13:34 Сейчас в теме
Нет возможности найти метаданные по названию таблицы в базе.
12. bforce 411 11.07.18 21:24 Сейчас в теме
(11), нужно по двойному клику на корне вывести весь список метаданных, а дальше воспользоваться стандартными возможностями платформы по поиску в таблице формы.
Оставьте свое сообщение