diff --git a/DBStorageStructureInfo.epf b/DBStorageStructureInfo.epf new file mode 100644 index 0000000..8697fe9 Binary files /dev/null and b/DBStorageStructureInfo.epf differ diff --git a/src/DBStorageStructureInfo.xml b/src/DBStorageStructureInfo.xml new file mode 100644 index 0000000..c903ecf --- /dev/null +++ b/src/DBStorageStructureInfo.xml @@ -0,0 +1,31 @@ + + + + + + c3831ec8-d8d5-4f93-8a22-f9bfae07327f + 486e4187-14ff-4a4a-8b61-23d09bf40908 + + + 6ecfb3f8-eedb-4d79-b9f2-2e28a5e0e865 + 18940b80-8f60-4d77-b88e-b97f4e594c70 + + + + DBStorageStructureInfo + + + ru + DB storage structure info + + + + ExternalDataProcessor.DBStorageStructureInfo.Form.ФормаУправляемая + ExternalDataProcessor.DBStorageStructureInfo.Form.Форма + + +
Форма
+
ФормаУправляемая
+
+
+
\ No newline at end of file diff --git "a/src/DBStorageStructureInfo/Forms/\320\244\320\276\321\200\320\274\320\260.xml" "b/src/DBStorageStructureInfo/Forms/\320\244\320\276\321\200\320\274\320\260.xml" new file mode 100644 index 0000000..3a008ec --- /dev/null +++ "b/src/DBStorageStructureInfo/Forms/\320\244\320\276\321\200\320\274\320\260.xml" @@ -0,0 +1,22 @@ + + +
+ + Форма + + + ru + Форма + + + + Ordinary + false + + PlatformApplication + MobilePlatformApplication + + + +
+
\ No newline at end of file diff --git "a/src/DBStorageStructureInfo/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.bin" "b/src/DBStorageStructureInfo/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.bin" new file mode 100644 index 0000000..a98d436 Binary files /dev/null and "b/src/DBStorageStructureInfo/Forms/\320\244\320\276\321\200\320\274\320\260/Ext/Form.bin" differ diff --git "a/src/DBStorageStructureInfo/Forms/\320\244\320\276\321\200\320\274\320\260\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217.xml" "b/src/DBStorageStructureInfo/Forms/\320\244\320\276\321\200\320\274\320\260\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217.xml" new file mode 100644 index 0000000..7b7e277 --- /dev/null +++ "b/src/DBStorageStructureInfo/Forms/\320\244\320\276\321\200\320\274\320\260\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217.xml" @@ -0,0 +1,22 @@ + + +
+ + ФормаУправляемая + + + ru + Форма управляемая + + + + Managed + false + + PlatformApplication + MobilePlatformApplication + + + +
+
\ No newline at end of file diff --git "a/src/DBStorageStructureInfo/Forms/\320\244\320\276\321\200\320\274\320\260\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217/Ext/Form.xml" "b/src/DBStorageStructureInfo/Forms/\320\244\320\276\321\200\320\274\320\260\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217/Ext/Form.xml" new file mode 100644 index 0000000..4a853e6 --- /dev/null +++ "b/src/DBStorageStructureInfo/Forms/\320\244\320\276\321\200\320\274\320\260\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217/Ext/Form.xml" @@ -0,0 +1,733 @@ + +
+ useIfNecessary + + + ПриСозданииНаСервере + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Отбор</v8:content> + </v8:item> + + + + ru + Отбор + + + Horizontal + None + false + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Поиск по слову:</v8:content> + </v8:item> + + + + + + Vertical + None + false + + + + ИмяТаблицыХранения + None + + + + + ИмяТаблицыХраненияОкончаниеВводаТекста + + + + style:FieldSelectionBackColor + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Например: Номенклатура или REFERENCE106 (регистр букв не имеет значения)</v8:content> + </v8:item> + + + + + + + + + + + List + None + false + false + true + true + true + Результат + None + None + None + + + + + + + Результат + SearchStringRepresentation + + + + + + + Результат + ViewStatusRepresentation + + + + + + + Результат + SearchControl + + + + + + РезультатПриАктивизацииСтроки + + + + Результат.ИмяТаблицы + EnterOnInput + + + + + Результат.Метаданные + EnterOnInput + + + + + Результат.Назначение + EnterOnInput + + + + + Результат.ИмяТаблицыХранения + EnterOnInput + + + + +
+ + Horizontal + None + false + + + + List + Top + None + true + true + true + Поля + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Поля</v8:content> + </v8:item> + + None + None + None + + + + + + + Поля + SearchStringRepresentation + + + + + + + Поля + ViewStatusRepresentation + + + + + + + Поля + SearchControl + + + + + + + Поля.ИмяПоляХранения + EnterOnInput + + + + + Поля.ИмяПоля + EnterOnInput + + + + + Поля.Метаданные + EnterOnInput + + + + + Поля.ИмяТаблицы + false + EnterOnInput + + + + +
+ + Vertical + None + false + + + + List + Top + None + 5 + true + true + true + Индексы + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Индексы</v8:content> + </v8:item> + + None + None + None + + + + + + + Индексы + SearchStringRepresentation + + + + + + + Индексы + ViewStatusRepresentation + + + + + + + Индексы + SearchControl + + + + + + ИндексыПриАктивизацииСтроки + + + + Индексы.ИмяИндексаХранения + EnterOnInput + + + + + Индексы.ИмяПоля + EnterOnInput + + + + + Индексы.ИмяТаблицы + EnterOnInput + + + + +
+ + List + Top + None + true + true + true + ПоляИндексов + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Поля индексов</v8:content> + </v8:item> + + None + None + None + + + + + + + ПоляИндексов + SearchStringRepresentation + + + + + + + ПоляИндексов + ViewStatusRepresentation + + + + + + + ПоляИндексов + SearchControl + + + + + + + ПоляИндексов.ИмяПоляХранения + EnterOnInput + + + + + ПоляИндексов.ИмяПоля + EnterOnInput + + + + + ПоляИндексов.Метаданные + EnterOnInput + + + + + ПоляИндексов.ИмяТаблицы + false + EnterOnInput + + + + + ПоляИндексов.ИмяИндексаХранения + false + EnterOnInput + + + + +
+
+
+
+
+
+ + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Объект</v8:content> + </v8:item> + + + cfg:ExternalDataProcessorObject.DBStorageStructureInfo + + true + + + + xs:string + + 0 + Variable + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Адрес структуры базы</v8:content> + </v8:item> + + + xs:string + + 0 + Variable + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Результат</v8:content> + </v8:item> + + + v8:ValueTable + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Имя таблицы</v8:content> + </v8:item> + + + xs:string + + 0 + Variable + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Метаданные</v8:content> + </v8:item> + + + xs:string + + 0 + Variable + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Назначение</v8:content> + </v8:item> + + + xs:string + + 0 + Variable + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Имя таблицы хранения</v8:content> + </v8:item> + + + xs:string + + 0 + Variable + + + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Поля</v8:content> + </v8:item> + + + v8:ValueTable + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Имя поля хранения</v8:content> + </v8:item> + + + xs:string + + 0 + Variable + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Имя поля</v8:content> + </v8:item> + + + xs:string + + 0 + Variable + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Метаданные</v8:content> + </v8:item> + + + xs:string + + 0 + Variable + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Имя таблицы</v8:content> + </v8:item> + + + xs:string + + 0 + Variable + + + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Индексы</v8:content> + </v8:item> + + + v8:ValueTable + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Имя индекса хранения</v8:content> + </v8:item> + + + xs:string + + 0 + Variable + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Имя поля</v8:content> + </v8:item> + + + xs:string + + 0 + Variable + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Имя таблицы</v8:content> + </v8:item> + + + xs:string + + 0 + Variable + + + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Поля индексов</v8:content> + </v8:item> + + + v8:ValueTable + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Имя поля хранения</v8:content> + </v8:item> + + + xs:string + + 0 + Variable + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Имя поля</v8:content> + </v8:item> + + + xs:string + + 0 + Variable + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Метаданные</v8:content> + </v8:item> + + + xs:string + + 0 + Variable + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Имя индекса хранения</v8:content> + </v8:item> + + + xs:string + + 0 + Variable + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Имя таблицы</v8:content> + </v8:item> + + + xs:string + + 0 + Variable + + + + + + + + + + <v8:item> + <v8:lang>ru</v8:lang> + <v8:content>Установить отбор</v8:content> + </v8:item> + + + + ru + Установить отбор + + + УстановитьОтбор + + + \ No newline at end of file diff --git "a/src/DBStorageStructureInfo/Forms/\320\244\320\276\321\200\320\274\320\260\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217/Ext/Form/Module.bsl" "b/src/DBStorageStructureInfo/Forms/\320\244\320\276\321\200\320\274\320\260\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217/Ext/Form/Module.bsl" new file mode 100644 index 0000000..a9d975b --- /dev/null +++ "b/src/DBStorageStructureInfo/Forms/\320\244\320\276\321\200\320\274\320\260\320\243\320\277\321\200\320\260\320\262\320\273\321\217\320\265\320\274\320\260\321\217/Ext/Form/Module.bsl" @@ -0,0 +1,134 @@ +&НаСервере +Процедура ЗаполнитьТаблицы() + + СтруктураБазы = ПолучитьИзВременногоХранилища(АдресСтруктурыБазы); + + Если СтруктураБазы = Неопределено Тогда + + СтруктураБазы = ПолучитьСтруктуруХраненияБазыДанных(); + ПоместитьВоВременноеХранилище(СтруктураБазы, АдресСтруктурыБазы); + + КонецЕсли; + + Результат.Очистить(); + Поля.Очистить(); + Индексы.Очистить(); + ПоляИндексов.Очистить(); + + Для Каждого ТекСтрока Из СтруктураБазы Цикл + ЗаполнитьЗначенияСвойств(Результат.Добавить(), ТекСтрока); + ПоляИзСтруктуры = ТекСтрока.Поля; + Для Каждого ТекСтрокаПоля Из ПоляИзСтруктуры Цикл + НоваяСтрока = Поля.Добавить(); + ЗаполнитьЗначенияСвойств(НоваяСтрока, ТекСтрокаПоля); + НоваяСтрока.ИмяТаблицы = ТекСтрока.ИмяТаблицыХранения; + КонецЦикла; + + ИндексыИзСтруктуры = ТекСтрока.Индексы; + Для Каждого ТекСтрокаИндексы Из ИндексыИзСтруктуры Цикл + НоваяСтрока = Индексы.Добавить(); + ЗаполнитьЗначенияСвойств(НоваяСтрока, ТекСтрокаИндексы); + НоваяСтрока.ИмяТаблицы = ТекСтрока.ИмяТаблицыХранения; + + ПоляИндексовИзСтруктуры = ТекСтрокаИндексы.Поля; + Для Каждого ТекСтрокаПоляИндексов Из ПоляИндексовИзСтруктуры Цикл + НоваяСтрока = ПоляИндексов.Добавить(); + ЗаполнитьЗначенияСвойств(НоваяСтрока, ТекСтрокаПоляИндексов); + НоваяСтрока.ИмяИндексаХранения = ТекСтрокаИндексы.ИмяИндексаХранения; + НоваяСтрока.ИмяТаблицы = ТекСтрока.ИмяТаблицыХранения; + КонецЦикла; + + КонецЦикла; + + КонецЦикла; + +КонецПроцедуры + +&НаСервере +Процедура НайтиПоИмениТаблицыХранения() + + СтруктураБазы = ПолучитьИзВременногоХранилища(АдресСтруктурыБазы); + + ИмяДляПоиска = ВРЕГ(СокрЛП(ИмяТаблицыХранения)); + Если Лев(ИмяДляПоиска, 1) = "_" Тогда + ИмяДляПоиска = Сред(ИмяДляПоиска, 2); + КонецЕсли; + НайденныеСтроки = Новый Массив(); + Для каждого Строка из СтруктураБазы Цикл + Если Найти(ВРЕГ(Строка.ИмяТаблицыХранения), ИмяДляПоиска) > 0 + ИЛИ Найти(ВРЕГ(Строка.ИмяТаблицы), ИмяДляПоиска) + ИЛИ Найти(ВРЕГ(Строка.Метаданные), ИмяДляПоиска) + ИЛИ Найти(ВРЕГ(Строка.Назначение), ИмяДляПоиска) Тогда + НайденныеСтроки.Добавить(Строка); + КонецЕсли; + КонецЦикла; + + Результат.Очистить(); + Для каждого Строка из НайденныеСтроки Цикл + ЗаполнитьЗначенияСвойств(Результат.Добавить(), Строка); + КонецЦикла; + +КонецПроцедуры + + +&НаКлиенте +Процедура УстановитьОтбор(Команда) + НайтиПоИмениТаблицыХранения(); +КонецПроцедуры + + +&НаСервере +Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) + + АдресСтруктурыБазы = ПоместитьВоВременноеХранилище(Неопределено, УникальныйИдентификатор); + ЗаполнитьТаблицы(); + +КонецПроцедуры + +&НаКлиенте +Процедура РезультатПриАктивизацииСтроки(Элемент) + + ТекДанные = Элементы.Результат.ТекущиеДанные; + Если ТекДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + ОтборСтрок = Новый ФиксированнаяСтруктура("ИмяТаблицы", ТекДанные.ИмяТаблицыХранения); + + Элементы.Поля.ОтборСтрок = ОтборСтрок; + Элементы.Индексы.ОтборСтрок = ОтборСтрок; + +КонецПроцедуры + +&НаКлиенте +Процедура ИндексыПриАктивизацииСтроки(Элемент) + + ТекДанные = Элементы.Индексы.ТекущиеДанные; + Если ТекДанные = Неопределено Тогда + Возврат; + КонецЕсли; + + + ОтборСтрок = Новый ФиксированнаяСтруктура("ИмяИндексаХранения, ИмяТаблицы", ТекДанные.ИмяИндексаХранения, ТекДанные.ИмяТаблицы); + + Элементы.ПоляИндексов.ОтборСтрок = ОтборСтрок; + +КонецПроцедуры + +&НаКлиенте +Процедура ИмяТаблицыХраненияОкончаниеВводаТекста(Элемент, Текст, ДанныеВыбора, Параметры, СтандартнаяОбработка) + + СтандартнаяОбработка = Ложь; + ИмяТаблицыХранения = Текст; + + Если ПустаяСтрока(ИмяТаблицыХранения) Тогда + + ЗаполнитьТаблицы(); + + Иначе + + НайтиПоИмениТаблицыХранения(); + + КонецЕсли; + +КонецПроцедуры