Skip to content

Commit 6ab9bb9

Browse files
committed
Редактирование ТЗ временных таблиц через редактор ТЗ типовой
1 parent 40754db commit 6ab9bb9

File tree

6 files changed

+139
-54
lines changed
  • src/Инструменты/src
    • CommonForms/УИ_РедакторТаблицыЗначений
    • CommonModules/УИ_ОбщегоНазначенияКлиент
    • DataProcessors/УИ_КонсольЗапросов/Forms

6 files changed

+139
-54
lines changed

src/Инструменты/src/CommonForms/УИ_РедакторТаблицыЗначений/Form.form

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -737,6 +737,23 @@
737737
</edit>
738738
</columns>
739739
</attributes>
740+
<attributes>
741+
<name>СериализоватьВXML</name>
742+
<title>
743+
<key>ru</key>
744+
<value>Сериализовать ВXML</value>
745+
</title>
746+
<id>8</id>
747+
<valueType>
748+
<types>Boolean</types>
749+
</valueType>
750+
<view>
751+
<common>true</common>
752+
</view>
753+
<edit>
754+
<common>true</common>
755+
</edit>
756+
</attributes>
740757
<formCommands>
741758
<name>Применить</name>
742759
<title>

src/Инструменты/src/CommonForms/УИ_РедакторТаблицыЗначений/Module.bsl

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,24 @@
22

33
&НаСервере
44
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
5+
Если Параметры.Свойство("СериализоватьВXML") Тогда
6+
СериализоватьВXML = Параметры.СериализоватьВXML;
7+
КонецЕсли;
8+
59
Если ЗначениеЗаполнено(Параметры.ТаблицаЗначенийСтрокой) Тогда
6-
Попытка
7-
ТЗ=ЗначениеИзСтрокиВнутр(Параметры.ТаблицаЗначенийСтрокой);
8-
Исключение
9-
ТЗ=Новый ТаблицаЗначений;
10-
КонецПопытки;
10+
Если СериализоватьВXML Тогда
11+
Попытка
12+
ТЗ=УИ_ОбщегоНазначения.ЗначениеИзСтрокиXML(Параметры.ТаблицаЗначенийСтрокой);
13+
Исключение
14+
ТЗ=Новый ТаблицаЗначений;
15+
КонецПопытки;
16+
Иначе
17+
Попытка
18+
ТЗ=ЗначениеИзСтрокиВнутр(Параметры.ТаблицаЗначенийСтрокой);
19+
Исключение
20+
ТЗ=Новый ТаблицаЗначений;
21+
КонецПопытки;
22+
КонецЕсли;
1123
Иначе
1224
ТЗ=Новый ТаблицаЗначений;
1325
КонецЕсли;
@@ -220,7 +232,11 @@
220232
ТЗ=РеквизитФормыВЗначение("ТаблицаЗначений");
221233

222234
СтруктураРезультата=Новый Структура;
223-
СтруктураРезультата.Вставить("Значение", ЗначениеВСтрокуВнутр(ТЗ));
235+
Если СериализоватьВXML Тогда
236+
СтруктураРезультата.Вставить("Значение", УИ_ОбщегоНазначения.ЗначениеВСтрокуXML(ТЗ));
237+
Иначе
238+
СтруктураРезультата.Вставить("Значение", ЗначениеВСтрокуВнутр(ТЗ));
239+
КонецЕсли;
224240
СтруктураРезультата.Вставить("Представление", СтрШаблон("Строк: %1 Колонок: %2", ТЗ.Количество(), ТЗ.Колонки.Количество()));
225241
СтруктураРезультата.Вставить("КоличествоСтрок", ТЗ.Количество());
226242
СтруктураРезультата.Вставить("КоличествоКолонок", ТЗ.Колонки.Количество());

src/Инструменты/src/CommonModules/УИ_ОбщегоНазначенияКлиент/Module.bsl

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -491,9 +491,11 @@
491491
ОписаниеОповещенияОЗавершении, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
492492
КонецПроцедуры
493493

494-
Процедура РедактироватьТаблицуЗначений(ТаблицаЗначенийСтрокой, ВладелецФормы, ОписаниеОповещенияОЗавершении) Экспорт
494+
Процедура РедактироватьТаблицуЗначений(ТаблицаЗначенийСтрокой, ВладелецФормы, ОписаниеОповещенияОЗавершении,
495+
СериализоватьВXML = Ложь) Экспорт
495496
ПараметрыФормы=Новый Структура;
496497
ПараметрыФормы.Вставить("ТаблицаЗначенийСтрокой", ТаблицаЗначенийСтрокой);
498+
ПараметрыФормы.Вставить("СериализоватьВXML", СериализоватьВXML);
497499

498500
ОткрытьФорму("ОбщаяФорма.УИ_РедакторТаблицыЗначений", ПараметрыФормы, ВладелецФормы, , , ,
499501
ОписаниеОповещенияОЗавершении);

src/Инструменты/src/DataProcessors/УИ_КонсольЗапросов/Forms/РедактированиеТаблицы/Module.bsl

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,11 @@
88

99
Заголовок = Параметры.Заголовок + " (таблица значений)";
1010

11-
Таблица = Обработка.СтрокаВЗначение(Параметры.Значение.Значение);
11+
Если Параметры.Значение = Неопределено Тогда
12+
Таблица = Новый ТаблицаЗначений;
13+
Иначе
14+
Таблица = Обработка.СтрокаВЗначение(Параметры.Значение.Значение);
15+
КонецЕсли;
1216

1317
Обработка.СоздатьРеквизитыТаблицыПоКолонкам(ЭтаФорма, "ТаблицаЗначений", "ТаблицаЗначенийСоответствиеКолонок", "ТаблицаЗначенийКолонкиКонтейнера", Таблица.Колонки, Истина);
1418

src/Инструменты/src/DataProcessors/УИ_КонсольЗапросов/Forms/Форма/Form.form

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3103,7 +3103,6 @@
31033103
<segments>ВременныеТаблицы</segments>
31043104
</dataPath>
31053105
<titleLocation>None</titleLocation>
3106-
<excludedCommands>Add</excludedCommands>
31073106
<items xsi:type="form:FormField">
31083107
<name>ВременныеТаблицыИмя</name>
31093108
<id>159</id>
@@ -3209,6 +3208,36 @@
32093208
<autoCommandBar>
32103209
<name>ВременныеТаблицыКоманднаяПанель</name>
32113210
<id>148</id>
3211+
<items xsi:type="form:Button">
3212+
<name>ВременныеТаблицыДобавить</name>
3213+
<id>618</id>
3214+
<visible>true</visible>
3215+
<enabled>true</enabled>
3216+
<userVisible>
3217+
<common>true</common>
3218+
</userVisible>
3219+
<extendedTooltip>
3220+
<name>ВременныеТаблицыДобавитьРасширеннаяПодсказка</name>
3221+
<id>619</id>
3222+
<visible>true</visible>
3223+
<enabled>true</enabled>
3224+
<userVisible>
3225+
<common>true</common>
3226+
</userVisible>
3227+
<type>Label</type>
3228+
<autoMaxWidth>true</autoMaxWidth>
3229+
<autoMaxHeight>true</autoMaxHeight>
3230+
<extInfo xsi:type="form:LabelDecorationExtInfo">
3231+
<horizontalAlign>Left</horizontalAlign>
3232+
</extInfo>
3233+
</extendedTooltip>
3234+
<commandName>Form.Item.ВременныеТаблицы.StandardCommand.Add</commandName>
3235+
<representation>Auto</representation>
3236+
<autoMaxWidth>true</autoMaxWidth>
3237+
<autoMaxHeight>true</autoMaxHeight>
3238+
<placementArea>UserCmds</placementArea>
3239+
<representationInContextMenu>Auto</representationInContextMenu>
3240+
</items>
32123241
<items xsi:type="form:Button">
32133242
<name>ВременныеТаблицыКнопкаСкопировать</name>
32143243
<id>338</id>

src/Инструменты/src/DataProcessors/УИ_КонсольЗапросов/Forms/Форма/Module.bsl

Lines changed: 62 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -447,11 +447,15 @@
447447
Элементы.ВременныеТаблицы.ТекущаяСтрока, "Контейнер");
448448
ОписаниеОповещенияОЗакрытииОткрываемойФормы = Новый ОписаниеОповещения("ОкончаниеРедактированияСтроки", ЭтаФорма,
449449
ПараметрыОповещения);
450-
ПараметрыОткрытия = Новый Структура("Объект, ТипЗначения, Заголовок, Значение, ТипКонтейнера", Объект, ,
451-
ТекущиеДанные.Имя, ТекущиеДанные.Контейнер, 3);
452450

453-
ОткрытьФорму(ПолноеИмяФормы("РедактированиеТаблицы"), ПараметрыОткрытия, ЭтаФорма, Ложь, , ,
454-
ОписаниеОповещенияОЗакрытииОткрываемойФормы, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
451+
Если ТекущиеДанные.Контейнер = Неопределено Тогда
452+
ДанныеТЗ = Неопределено;
453+
Иначе
454+
ДанныеТЗ = ТекущиеДанные.Контейнер.Значение;
455+
КонецЕсли;
456+
457+
УИ_ОбщегоНазначенияКлиент.РедактироватьТаблицуЗначений(ДанныеТЗ, ЭтотОбъект,
458+
ОписаниеОповещенияОЗакрытииОткрываемойФормы, Истина);
455459

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

@@ -1650,6 +1654,8 @@
16501654

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

1657+
1658+
16531659
&НаКлиенте
16541660
Процедура Подключаемый_РедакторКодаОтложеннаяОбработкаСобытийРедактора() Экспорт
16551661
УИ_РедакторКодаКлиент.ОтложеннаяОбработкаСобытийРедактора(ЭтотОбъект);
@@ -4433,60 +4439,65 @@
44334439
&НаКлиенте
44344440
Процедура ОкончаниеРедактированияСтроки(РезультатЗакрытия, ДополнительныеПараметры) Экспорт
44354441

4436-
Если РезультатЗакрытия <> Неопределено Тогда
4437-
4438-
Если ДополнительныеПараметры.Поле = "Контейнер" Тогда
4439-
Если ДополнительныеПараметры.Таблица = "ПараметрыЗапроса" Тогда
4440-
ПараметрыЗапроса_СохранитьЗначение(ДополнительныеПараметры.Строка, РезультатЗакрытия.Значение);
4441-
ИначеЕсли ДополнительныеПараметры.Таблица = "ВременныеТаблицы" Тогда
4442-
СтрокаТаблицы = ВременныеТаблицы.НайтиПоИдентификатору(ДополнительныеПараметры.Строка);
4443-
СтрокаТаблицы.Контейнер = РезультатЗакрытия.Значение;
4444-
СтрокаТаблицы.Значение = СтрокаТаблицы.Контейнер.Представление;
4445-
Модифицированность = Истина;
4446-
КонецЕсли;
4447-
ИначеЕсли ДополнительныеПараметры.Поле = "КонтейнерКакТип" Тогда
4448-
ПараметрыЗапроса_СохранитьЗначение(ДополнительныеПараметры.Строка, РезультатЗакрытия.ОписаниеКонтейнера);
4449-
ИначеЕсли ДополнительныеПараметры.Поле = "ТипЗначения" Тогда
4442+
Если РезультатЗакрытия = Неопределено Тогда
4443+
Возврат;
4444+
КонецЕсли;
4445+
4446+
Если ДополнительныеПараметры.Поле = "Контейнер" Тогда
4447+
Если ДополнительныеПараметры.Таблица = "ПараметрыЗапроса" Тогда
4448+
ПараметрыЗапроса_СохранитьЗначение(ДополнительныеПараметры.Строка, РезультатЗакрытия.Значение);
4449+
ИначеЕсли ДополнительныеПараметры.Таблица = "ВременныеТаблицы" Тогда
4450+
СтрокаТаблицы = ВременныеТаблицы.НайтиПоИдентификатору(ДополнительныеПараметры.Строка);
4451+
4452+
Контейнер = Новый Структура("Тип, КоличествоСтрок, Значение, Представление", "ТаблицаЗначений",
4453+
РезультатЗакрытия.КоличествоСтрок, РезультатЗакрытия.Значение, РезультатЗакрытия.Представление);
4454+
4455+
СтрокаТаблицы.Контейнер = Контейнер;
4456+
СтрокаТаблицы.Значение = СтрокаТаблицы.Контейнер.Представление;
4457+
Модифицированность = Истина;
4458+
КонецЕсли;
4459+
ИначеЕсли ДополнительныеПараметры.Поле = "КонтейнерКакТип" Тогда
4460+
ПараметрыЗапроса_СохранитьЗначение(ДополнительныеПараметры.Строка, РезультатЗакрытия.ОписаниеКонтейнера);
4461+
ИначеЕсли ДополнительныеПараметры.Поле = "ТипЗначения" Тогда
44504462

4451-
ОписаниеКонтейнера = РезультатЗакрытия.ОписаниеКонтейнера;
4463+
ОписаниеКонтейнера = РезультатЗакрытия.ОписаниеКонтейнера;
44524464

4453-
идСтрокаПараметра = ДополнительныеПараметры.Строка;
4454-
Если идСтрокаПараметра = Неопределено Тогда
4465+
идСтрокаПараметра = ДополнительныеПараметры.Строка;
4466+
Если идСтрокаПараметра = Неопределено Тогда
44554467
//добавление нового параметра
4456-
СтрокаПараметра = ДобавитьПараметрСКонтролемИмени(РезультатЗакрытия.ИмяПараметра);
4457-
СтрокаПараметра.ТипКонтейнера = РезультатЗакрытия.ТипКонтейнера;
4458-
идСтрокаПараметра = СтрокаПараметра.ПолучитьИдентификатор();
4459-
КонецЕсли;
4460-
4461-
ПараметрыЗапроса_УстановитьТип(идСтрокаПараметра, РезультатЗакрытия.ТипКонтейнера, ОписаниеКонтейнера);
4462-
4463-
стрТекстЗапроса = Неопределено;
4464-
Если РезультатЗакрытия.Свойство("ТекстЗапроса", стрТекстЗапроса) Тогда
4465-
4466-
Если СтрокаПараметра <> Неопределено И СтрокаПараметра.Имя <> РезультатЗакрытия.ИмяПараметра Тогда
4467-
стрТекстЗапроса = СтрЗаменить(стрТекстЗапроса, "&" + РезультатЗакрытия.ИмяПараметра, "&"
4468-
+ СтрокаПараметра.Имя);
4469-
КонецЕсли;
4468+
СтрокаПараметра = ДобавитьПараметрСКонтролемИмени(РезультатЗакрытия.ИмяПараметра);
4469+
СтрокаПараметра.ТипКонтейнера = РезультатЗакрытия.ТипКонтейнера;
4470+
идСтрокаПараметра = СтрокаПараметра.ПолучитьИдентификатор();
4471+
КонецЕсли;
44704472

4471-
чРазмерТекста = СтрДлина(ТекущийТекстЗапроса());
4472-
УстановитьГраницыВыделенияЗапросаПоПозиции(чРазмерТекста + 1, чРазмерТекста + 1);
4473-
ВставитьТекстПоПозицииКурсораЗапроса(стрТекстЗапроса);
4473+
ПараметрыЗапроса_УстановитьТип(идСтрокаПараметра, РезультатЗакрытия.ТипКонтейнера, ОписаниеКонтейнера);
44744474

4475-
Элементы.ГруппаЗапросСтраницы.ТекущаяСтраница = Элементы.СтраницаЗапрос;
4476-
ТекущийЭлемент = Элементы.ТекстЗапроса;
4475+
стрТекстЗапроса = Неопределено;
4476+
Если РезультатЗакрытия.Свойство("ТекстЗапроса", стрТекстЗапроса) Тогда
44774477

4478+
Если СтрокаПараметра <> Неопределено И СтрокаПараметра.Имя <> РезультатЗакрытия.ИмяПараметра Тогда
4479+
стрТекстЗапроса = СтрЗаменить(стрТекстЗапроса, "&" + РезультатЗакрытия.ИмяПараметра, "&"
4480+
+ СтрокаПараметра.Имя);
44784481
КонецЕсли;
44794482

4480-
УстановитьПараметрыВводаЗначения();
4483+
чРазмерТекста = СтрДлина(ТекущийТекстЗапроса());
4484+
УстановитьГраницыВыделенияЗапросаПоПозиции(чРазмерТекста + 1, чРазмерТекста + 1);
4485+
ВставитьТекстПоПозицииКурсораЗапроса(стрТекстЗапроса);
4486+
4487+
Элементы.ГруппаЗапросСтраницы.ТекущаяСтраница = Элементы.СтраницаЗапрос;
4488+
ТекущийЭлемент = Элементы.ТекстЗапроса;
44814489

4482-
ИначеЕсли ДополнительныеПараметры.Поле = "Значение" Тогда
4483-
Элементы.ПараметрыЗапроса.ТекущиеДанные.Значение = РезультатЗакрытия.Значение;
4484-
Элементы.ПараметрыЗапроса.ТекущиеДанные.Контейнер = РезультатЗакрытия.Значение;
4485-
Модифицированность = Истина;
44864490
КонецЕсли;
44874491

4492+
УстановитьПараметрыВводаЗначения();
4493+
4494+
ИначеЕсли ДополнительныеПараметры.Поле = "Значение" Тогда
4495+
Элементы.ПараметрыЗапроса.ТекущиеДанные.Значение = РезультатЗакрытия.Значение;
4496+
Элементы.ПараметрыЗапроса.ТекущиеДанные.Контейнер = РезультатЗакрытия.Значение;
4497+
Модифицированность = Истина;
44884498
КонецЕсли;
44894499

4500+
44904501
КонецПроцедуры
44914502

44924503

@@ -5047,6 +5058,8 @@
50475058
Функция ПараметрыЗаполнитьИзЗапросаНаСервере(ТекущийТекстЗапроса)
50485059
Перем НомерСтроки, НомерКолонки;
50495060

5061+
ОбработкаОбъект = РеквизитФормыВЗначение("Объект");
5062+
50505063
Запрос = Новый Запрос(ТекущийТекстЗапроса);
50515064
Попытка
50525065
Запрос.МенеджерВременныхТаблиц = ЗагрузитьВременныеТаблицы();
@@ -5069,6 +5082,10 @@
50695082
Иначе
50705083
СтрокаПараметра = ПараметрыЗапроса.Добавить();
50715084
СтрокаПараметра.Имя = Параметр.Имя;
5085+
Если Параметр.ТипЗначения = Новый ОписаниеТипов("ТаблицаЗначений") Тогда
5086+
СтрокаПараметра.ТипКонтейнера = 3;
5087+
КонецЕсли;
5088+
50725089
ПараметрыЗапроса_СохранитьЗначение(СтрокаПараметра.ПолучитьИдентификатор(),
50735090
Параметр.ТипЗначения.ПривестиЗначение(Неопределено));
50745091
КонецЕсли;

0 commit comments

Comments
 (0)