1
0
mirror of https://github.com/Untru/gitmanager.git synced 2025-08-09 21:37:16 +02:00

Доп реквизиты для задач

This commit is contained in:
PAVEL
2025-05-03 15:44:56 +09:00
parent aa6f5d27cd
commit 64fbcc4b78
4 changed files with 248 additions and 46 deletions

View File

@@ -4354,6 +4354,34 @@
<showTitle>true</showTitle>
</extInfo>
</items>
<items xsi:type="form:FormGroup">
<name>ГруппаДополнительныеРеквизиты</name>
<id>355</id>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
<common>true</common>
</userVisible>
<title>
<key>ru</key>
<value>Группа18</value>
</title>
<extendedTooltip>
<name>ГруппаДополнительныеРеквизитыРасширеннаяПодсказка</name>
<id>356</id>
<type>Label</type>
<autoMaxWidth>true</autoMaxWidth>
<autoMaxHeight>true</autoMaxHeight>
<extInfo xsi:type="form:LabelDecorationExtInfo">
<horizontalAlign>Left</horizontalAlign>
</extInfo>
</extendedTooltip>
<type>Page</type>
<extInfo xsi:type="form:PageGroupExtInfo">
<group>Vertical</group>
<showTitle>true</showTitle>
</extInfo>
</items>
<visible>true</visible>
<enabled>true</enabled>
<userVisible>
@@ -4385,10 +4413,22 @@
<horizontalAlign>Left</horizontalAlign>
<autoFill>true</autoFill>
</autoCommandBar>
<handlers>
<event>NotificationProcessing</event>
<name>ОбработкаОповещения</name>
</handlers>
<handlers>
<event>OnOpen</event>
<name>ПриОткрытии</name>
</handlers>
<handlers>
<event>OnCreateAtServer</event>
<name>ПриСозданииНаСервере</name>
</handlers>
<handlers>
<event>FillCheckProcessingAtServer</event>
<name>ОбработкаПроверкиЗаполненияНаСервере</name>
</handlers>
<windowOpeningMode>LockOwnerWindow</windowOpeningMode>
<saveWindowSettings>true</saveWindowSettings>
<autoTitle>true</autoTitle>
@@ -4654,5 +4694,9 @@
<event>OnReadAtServer</event>
<name>ПриЧтенииНаСервере</name>
</handlers>
<handlers>
<event>BeforeWriteAtServer</event>
<name>ПередЗаписьюНаСервере</name>
</handlers>
</extInfo>
</form:Form>

View File

@@ -1,14 +1,63 @@
#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// СтандартныеПодсистемы.Свойства
ДополнительныеПараметры = Новый Структура;
ДополнительныеПараметры.Вставить("ИмяЭлементаДляРазмещения", "ГруппаДополнительныеРеквизиты");
УправлениеСвойствами.ПриСозданииНаСервере(ЭтотОбъект, ДополнительныеПараметры);
// Конец СтандартныеПодсистемы.Свойства
ИнициализироватьФорму(Отказ);
КонецПроцедуры
&НаСервере
Процедура ПриЧтенииНаСервере(ТекущийОбъект)
// СтандартныеПодсистемы.Свойства
УправлениеСвойствами.ПриЧтенииНаСервере(ЭтотОбъект, ТекущийОбъект);
// Конец СтандартныеПодсистемы.Свойства
УстановитьСсылкуSonar();
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
// СтандартныеПодсистемы.Свойства
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
// Конец СтандартныеПодсистемы.Свойства
КонецПроцедуры
&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
// СтандартныеПодсистемы.Свойства
Если УправлениеСвойствамиКлиент.ОбрабатыватьОповещения(ЭтотОбъект, ИмяСобытия, Параметр) Тогда
ОбновитьЭлементыДополнительныхРеквизитов();
УправлениеСвойствамиКлиент.ПослеЗагрузкиДополнительныхРеквизитов(ЭтотОбъект);
КонецЕсли;
// Конец СтандартныеПодсистемы.Свойства
КонецПроцедуры
&НаСервере
Процедура ОбработкаПроверкиЗаполненияНаСервере(Отказ, ПроверяемыеРеквизиты)
// СтандартныеПодсистемы.Свойства
УправлениеСвойствами.ОбработкаПроверкиЗаполнения(ЭтотОбъект, Отказ, ПроверяемыеРеквизиты);
// Конец СтандартныеПодсистемы.Свойства
КонецПроцедуры
&НаСервере
Процедура ПередЗаписьюНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
// СтандартныеПодсистемы.Свойства
УправлениеСвойствами.ПередЗаписьюНаСервере(ЭтотОбъект, ТекущийОбъект);
// Конец СтандартныеПодсистемы.Свойства
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиКомандФормы
@@ -20,20 +69,20 @@
&НаКлиенте
Процедура ПодборОбработок(Команда)
ТипыОбъектовРазработки = Новый Массив;
ТипыОбъектовРазработки.Добавить(ПредопределенноеЗначение("Перечисление.ТипыОбъектовРазработки.Обработка"));
ТипыОбъектовРазработки.Добавить(ПредопределенноеЗначение("Перечисление.ТипыОбъектовРазработки.Отчет"));
ПараметрыОтбора = Новый Структура;
ПараметрыОтбора.Вставить("Владелец", Объект.Владелец);
ПараметрыОтбора.Вставить("ТипОбъектаРазработки", ТипыОбъектовРазработки);
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Отбор", ПараметрыОтбора);
ПараметрыФормы.Вставить("РежимВыбора",Истина);
ПараметрыФормы.Вставить("МножественныйВыбор",Истина);
ПараметрыФормы.Вставить("РежимВыбора", Истина);
ПараметрыФормы.Вставить("МножественныйВыбор", Истина);
ОбработкаВыбора = Новый ОписаниеОповещения("ПриЗакрытииПодборОбработок", ЭтотОбъект, "Подбор");
ОткрытьФорму("Справочник.ОбъектыРазработки.ФормаВыбора", ПараметрыФормы, ЭтотОбъект, , , , ОбработкаВыбора);
@@ -54,13 +103,21 @@
&НаКлиенте
Процедура ДобавитьПроцессы(Команда)
ОписаниеОповещения = Новый ОписаниеОповещения("ДобавитьПроцессыПослеВыбора", ЭтотОбъект);
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Проект", Объект.Владелец);
ОткрытьФорму("Обработка.КомандыПроцессов.Форма.ФормаВыбора", ПараметрыФормы, ЭтаФорма,,,, ОписаниеОповещения);
ОткрытьФорму("Обработка.КомандыПроцессов.Форма.ФормаВыбора", ПараметрыФормы, ЭтаФорма, , , , ОписаниеОповещения);
КонецПроцедуры
// СтандартныеПодсистемы.Свойства
&НаКлиенте
Процедура Подключаемый_СвойстваВыполнитьКоманду(ЭлементИлиКоманда, НавигационнаяСсылка = Неопределено,
СтандартнаяОбработка = Неопределено)
УправлениеСвойствамиКлиент.ВыполнитьКоманду(ЭтотОбъект, ЭлементИлиКоманда, СтандартнаяОбработка);
КонецПроцедуры
// Конец СтандартныеПодсистемы.Свойства
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
@@ -71,20 +128,20 @@
Если СписокВыбранныхПроцессов = Неопределено Тогда
Возврат;
КонецЕсли;
Объект.КасаемыеПроцессы.Очистить();
Для Каждого ВыбранныйПроцесс Из СписокВыбранныхПроцессов Цикл
СтрокаТаблицы = Объект.КасаемыеПроцессы.Добавить();
СтрокаТаблицы.Процесс = ВыбранныйПроцесс.Представление;
СтрокаТаблицы.ПолноеИмяПроцесса = ВыбранныйПроцесс.Значение;
КонецЦикла;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура ОбновитьИзBitrixНаСервере()
НастройкиПользователя = Справочники.НастройкиПользователей.НастройкиТекущегоПользователя();
Если НастройкиПользователя = Неопределено Тогда
ОбщегоНазначения.СообщитьПользователю(НСтр("ru='Не заполнены настройки пользователя!'"));
@@ -101,16 +158,16 @@
//ЗадачаОбъект.ЗаполнитьСвязанныеЗадачи();
ЗначениеВРеквизитФормы(ЗадачаОбъект, "Объект");
Модифицированность = Истина;
КонецПроцедуры
&НаКлиенте
Процедура ПриЗакрытииПодборОбработок(Значение, ДопПараметры) Экспорт
Если Значение = Неопределено Тогда
Возврат;
КонецЕсли;
Для Каждого Элемент Из Значение Цикл
НайденныеСтроки = Объект.ВнешниеФайлы.НайтиСтроки(Новый Структура("Обработка", Элемент));
Если Не НайденныеСтроки.Количество() Тогда
@@ -118,14 +175,15 @@
НоваяСтрока.Обработка = Элемент;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервере
Процедура НоваяОбработкаНаСервере(ИмяОбработки, БазаРепозитория)
Если Не ЗначениеЗаполнено(БазаРепозитория) Тогда
ОбщегоНазначения.СообщитьПользователю(НСтр("ru = 'Не удалось определить базу для получения каталога репозитория базы!'"));
ОбщегоНазначения.СообщитьПользователю(НСтр(
"ru = 'Не удалось определить базу для получения каталога репозитория базы!'"));
Возврат;
КонецЕсли;
КаталогРепозиторияБазы = РаботаСGit.КаталогРепозиторияБазыШара(БазаРепозитория);
@@ -137,7 +195,7 @@
ПутьКШаблону = СтрШаблон("%1\Шаблоны\ШаблонОбработки.epf", КаталогРепозиторияБазы);
ПутьКНовойОбработке = СтрШаблон("%1\build\epf\%2.epf", КаталогРепозиторияБазы, ИмяОбработки);
КопироватьФайл(ПутьКШаблону, ПутьКНовойОбработке);
ОбработкаОбъект = Справочники.ОбъектыРазработки.СоздатьЭлемент();
ОбработкаОбъект.УстановитьНовыйКод();
ОбработкаОбъект.Владелец = Объект.Владелец;
@@ -147,25 +205,25 @@
ОбработкаОбъект.Записать();
Обработка = ОбработкаОбъект.Ссылка;
СтрокаВнешнихФайлов = Объект.ВнешниеФайлы.Добавить();
СтрокаВнешнихФайлов.Обработка = Обработка;
Модифицированность = Истина;
КонецПроцедуры
&НаКлиенте
Асинх Процедура НоваяОбработка(Команда)
НазваниеОбработки = "";
Обещание = ВвестиСтрокуАсинх(НазваниеОбработки, НСтр("ru = 'Введите название обработки'"));
ИмяОбработки = Ждать Обещание;
Если ЗначениеЗаполнено(ИмяОбработки) Тогда
НоваяОбработкаНаСервере(ИмяОбработки, ВладелецФормы.База);
КонецЕсли;
КонецПроцедуры
&НаКлиенте
@@ -174,7 +232,7 @@
//todo Открывать шару
ПутьКНовойОбработке = СтрШаблон("%1\build\epf", НастройкиПользователя.КаталогРепозиторияНаШаре);
ЗапуститьПриложение(ПутьКНовойОбработке);
КонецПроцедуры
&НаСервере
@@ -191,7 +249,7 @@
&НаСервере
Процедура УстановитьСсылкуSonar()
ШаблонСсылкиSonar = ШаблонСсылкиSonar();
СсылкаSonar = СтрШаблон(ШаблонСсылкиSonar, Объект.ИмяВетки, Нрег(Объект.Владелец));
СсылкаSonar = СтрШаблон(ШаблонСсылкиSonar, Объект.ИмяВетки, Нрег(Объект.Владелец));
КонецПроцедуры
&НаСервере
@@ -208,54 +266,66 @@
Процедура ИзменитьСтатус(Команда)
ИзменитьСтатусНаСервере();
КонецПроцедуры
&НаСервере
Процедура ИзменитьСтатусНаСервере()
КонецПроцедуры
&НаКлиенте
Асинх Процедура ДобавитьКомментарий(Команда)
КомментарийКЗадаче = "";
Обещание = ВвестиСтрокуАсинх(КомментарийКЗадаче, НСтр("ru = 'Введите комментарий'"),, Истина);
Обещание = ВвестиСтрокуАсинх(КомментарийКЗадаче, НСтр("ru = 'Введите комментарий'"), , Истина);
КомментарийКЗадаче = Ждать Обещание;
Если Не ЗначениеЗаполнено(КомментарийКЗадаче) Тогда
ОбщегоНазначенияКлиент.СообщитьПользователю(НСтр("ru = 'Комментарий не введен'"));
Возврат;
КонецЕсли;
НастройкиПользователя = ТекущиеНастройкиПользователя();
ДобавитьКомментарийНаСервере(Объект.Ссылка, КомментарийКЗадаче, НастройкиПользователя.ТокенBitrix);
КонецПроцедуры
&НаСервереБезКонтекста
Функция ТекущиеНастройкиПользователя()
ТекущийПользователь = Пользователи.АвторизованныйПользователь();
Возврат Справочники.НастройкиПользователей.НастройкиТекущегоПользователя(ТекущийПользователь);
КонецФункции
&НаСервереБезКонтекста
Процедура ДобавитьКомментарийНаСервере(Задача, Комментарий, Токен)
Справочники.Задачи.ДобавитьКомментарийКЗадаче(Задача, Комментарий, Токен);
КонецПроцедуры
&НаКлиенте
Процедура СсылкаMergeRequestНажатие(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
ПерейтиПоНавигационнойСсылке(Объект.СсылкаMergeRequest);
КонецПроцедуры
// СтандартныеПодсистемы.Свойства
&НаСервере
Процедура ОбновитьЭлементыДополнительныхРеквизитов()
УправлениеСвойствами.ОбновитьЭлементыДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура ОбновитьЗависимостиДополнительныхРеквизитов()
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПриИзмененииДополнительногоРеквизита(Элемент)
УправлениеСвойствамиКлиент.ОбновитьЗависимостиДополнительныхРеквизитов(ЭтотОбъект);
КонецПроцедуры
// Конец СтандартныеПодсистемы.Свойства
#КонецОбласти

View File

@@ -988,6 +988,92 @@
<fullTextSearch>Use</fullTextSearch>
</attributes>
</tabularSections>
<tabularSections uuid="bc4593bf-5c01-4587-9cb4-382cf8e57db0">
<producedTypes>
<objectType typeId="44d837db-51e2-4fff-85bd-af0ff30df99b" valueTypeId="2fe5f0b5-0260-4475-86c9-cd2fe274f4a4"/>
<rowType typeId="8cbf134b-0174-4755-9071-7a15a6b0e2ff" valueTypeId="3d6618d8-dd98-4eaa-bbc3-b9779d15d490"/>
</producedTypes>
<name>ДополнительныеРеквизиты</name>
<synonym>
<key>ru</key>
<value>Дополнительные реквизиты</value>
</synonym>
<toolTip>
<key>ru</key>
<value>Дополнительные реквизиты объекта</value>
</toolTip>
<standardAttributes>
<dataHistory>Use</dataHistory>
<name>LineNumber</name>
<fillValue xsi:type="core:UndefinedValue"/>
<fullTextSearch>Use</fullTextSearch>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
</standardAttributes>
<attributes uuid="b8aead6a-b110-49f7-9e60-b781bfc9e1b0">
<name>Свойство</name>
<synonym>
<key>ru</key>
<value>Свойство</value>
</synonym>
<type>
<types>ChartOfCharacteristicTypesRef.ДополнительныеРеквизитыИСведения</types>
</type>
<toolTip>
<key>ru</key>
<value>Дополнительный реквизит</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<quickChoice>DontUse</quickChoice>
<createOnInput>Use</createOnInput>
<dataHistory>Use</dataHistory>
<fullTextSearch>Use</fullTextSearch>
</attributes>
<attributes uuid="1bab7253-5b98-4e3f-9273-c81e869873a5">
<name>Значение</name>
<synonym>
<key>ru</key>
<value>Значение</value>
</synonym>
<type>
<types>Characteristic.ДополнительныеРеквизитыИСведения</types>
</type>
<toolTip>
<key>ru</key>
<value>Значение дополнительного реквизита</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<choiceParameterLinks>
<name>Отбор.Владелец</name>
<field>Catalog.Задачи.TabularSection.ДополнительныеРеквизиты.Attribute.Свойство</field>
</choiceParameterLinks>
<quickChoice>DontUse</quickChoice>
<createOnInput>Use</createOnInput>
<dataHistory>Use</dataHistory>
<fullTextSearch>Use</fullTextSearch>
</attributes>
<attributes uuid="9d86eff2-2504-45d7-9e52-62d5493720c8">
<name>ТекстоваяСтрока</name>
<synonym>
<key>ru</key>
<value>Текстовая строка</value>
</synonym>
<type>
<types>String</types>
<stringQualifiers/>
</type>
<toolTip>
<key>ru</key>
<value>Полный текст строкового дополнительного реквизита</value>
</toolTip>
<minValue xsi:type="core:UndefinedValue"/>
<maxValue xsi:type="core:UndefinedValue"/>
<dataHistory>Use</dataHistory>
<fullTextSearch>Use</fullTextSearch>
</attributes>
</tabularSections>
<forms uuid="8e962dda-6a58-447a-9a56-abe385a30d3b">
<name>ФормаЭлемента</name>
<synonym>

View File

@@ -7,14 +7,15 @@
Элементы.МенеджерРелизов.Видимость = Истина;
Элементы.МенеджерРелизов.Доступность = Истина;
КонецЕсли;
ИнициализироватьЗначенияФормы(Истина);
//TODO полумать с инициализацией а старте
//ИнициализироватьЗначенияФормы(Истина);
ДанныеСохраненныхЛогов = НовыйДанныеСохраненныхЛогов();
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
//TODO Вставить текст
КонецПроцедуры
#КонецОбласти
@@ -69,6 +70,7 @@
Процедура VSCode(Команда)
Данные = ПутьРепозиторию();
//@skip-check undefined-function-or-procedure
КомандаСистемы(СтрШаблон("code %1", Данные.КаталогБазы));
КонецПроцедуры
@@ -137,7 +139,7 @@
Если ВыбранныйЭлемент.Значение = "ХотфиксКЗадаче" Тогда
ОписаниеВыбора = Новый ОписаниеОповещения("ОбработатьВыборЗадачи", ЭтаФорма, );
ОписаниеВыбора = Новый ОписаниеОповещения("ОбработатьВыборЗадачи", ЭтотОбъект, );
ОткрытьФорму("Справочник.Задачи.ФормаВыбора",,,,,, ОписаниеВыбора, РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
Иначе
НомерНовойЗадачи = "";
@@ -256,7 +258,7 @@
Элементы.ГруппаПодробныеЛоги.ЦветТекстаЗаголовка = Новый Цвет();
Элементы.СтатусВыполнения.ЦветТекста = WebЦвета.Зеленый;
ОбработчикОповещенияОЗакрытии = Новый ОписаниеОповещения("ПереходНаВеткуОповещение", ЭтаФорма, Неопределено);
ОбработчикОповещенияОЗакрытии = Новый ОписаниеОповещения("ПереходНаВеткуОповещение", ЭтотОбъект, Неопределено);
ТекстСообщения = СтрШаблон(НСтр("ru = 'Перейти на ветку %1?'"), Элементы.Задачи.ТекущиеДанные.Задача);
ПоказатьВопрос(ОбработчикОповещенияОЗакрытии, ТекстСообщения, РежимДиалогаВопрос.ДаНет, , КодВозвратаДиалога.Нет, НСтр("ru = 'Переход на ветку для разработки'"));
@@ -274,7 +276,7 @@
Возврат;
КонецЕсли;
ОбработчикОповещенияОЗакрытии = Новый ОписаниеОповещения("СоздатьЗаявкуНаСлияниеОповещение", ЭтаФорма, Неопределено);
ОбработчикОповещенияОЗакрытии = Новый ОписаниеОповещения("СоздатьЗаявкуНаСлияниеОповещение", ЭтотОбъект, Неопределено);
ТекстСообщения = СтрШаблон(НСтр("ru = 'Создать заявку на слияние ветки %1?'"), ТекущаяЗадача);
ПоказатьВопрос(ОбработчикОповещенияОЗакрытии, ТекстСообщения, РежимДиалогаВопрос.ДаНет, , КодВозвратаДиалога.Нет, НСтр("ru = 'Заявка на слияние'"));
@@ -283,7 +285,7 @@
&НаКлиенте
Процедура ЗапуститьТестирование(Команда)
ОбработчикОповещенияОЗакрытии = Новый ОписаниеОповещения("ЗапуститьТестированиеОповещение", ЭтаФорма, Неопределено);
ОбработчикОповещенияОЗакрытии = Новый ОписаниеОповещения("ЗапуститьТестированиеОповещение", ЭтотОбъект, Неопределено);
ТекстСообщения = СтрШаблон(НСтр("ru = 'Запустить тестирование ветки %1?'"), Элементы.Задачи.ТекущиеДанные.Задача);
ПоказатьВопрос(ОбработчикОповещенияОЗакрытии, ТекстСообщения, РежимДиалогаВопрос.ДаНет, , КодВозвратаДиалога.Нет, НСтр("ru = 'Запуск тестирования'"));