|
Замена пользователя | ☑ | ||
---|---|---|---|---|
0
FransisDrake
04.03.20
✎
09:20
|
Добрый день, коллеги!
Такая задача Есть список задач, при выборе строки и нажатии на кнопку "переназначить", открывается форма, в которой список пользователей Нужно, чтобы при выборе нового пользователя, в задаче, на которой был курсор изменился исполнитель. Процедура КоманднаяПанель1Переназначение(Кнопка) Если Исполнитель = ПользователиКлиентСервер.ТекущийПользователь() ИЛИ Исполнитель.РольДоступна("ПолныеПрава") Тогда Форма= Справочники.Пользователи.ПолучитьФорму("КХМ_ФормаСпискаКраткая"); Форма.Заголовок= "Перепоручить задачу"; Форма.РежимВыбора = Истина; Открытие = Форма.ОткрытьМодально(); Иначе Сообщить("У Вас нет прав на перепоручение текущей задачи", СтатусСообщения.Важное); КонецЕсли; КонецПроцедуры |
|||
1
Fish
04.03.20
✎
09:21
|
Ты хочешь задачей поделиться или что-то спросить?
|
|||
2
FransisDrake
04.03.20
✎
09:27
|
(1) Спросить :)
как реализовать выбор пользователя? |
|||
3
Garykom
гуру
04.03.20
✎
09:28
|
(2) >Форма.ОткрытьМодально()
Для начала у тебя какая платформа и конфа то? |
|||
4
unenu
04.03.20
✎
09:29
|
модально уже еретизм
|
|||
5
FransisDrake
04.03.20
✎
09:34
|
(3) 8.3.15.1830, УПП 1.3
|
|||
6
FransisDrake
04.03.20
✎
09:43
|
Ну то есть, я немного не понимаю, как и где обратиться, чтобы по выбору выделенной строки и далее, после выбора нового пользователя, в этой строке заменились данные
|
|||
7
hhhh
04.03.20
✎
09:51
|
(6) ПолучитьФорму где Владелец формы?
|
|||
8
FransisDrake
04.03.20
✎
09:54
|
(7) в списке выделили строку, нажали "переназначить" и там в открывшемся списке пользователей выбираем нового исполнителя
|
|||
9
catena
04.03.20
✎
10:07
|
(8)Из текущих данных все нужно кладешь в параметры, открываешь форму с параметрами, там при создании на сервере все из параметров забираешь.
|
|||
10
FransisDrake
04.03.20
✎
10:14
|
(9) у меня неуправляемая форма)
|
|||
11
catena
04.03.20
✎
10:17
|
(10)Тогда еще проще, делаешь реквизит формы,
фо = ПолучитьФорму() фо.РеквизитКакНазовешь = ТекущаяЗадача фо.Открыть() |
|||
12
FransisDrake
04.03.20
✎
10:29
|
(11) зачем создавать новый реквизит?
|
|||
13
FransisDrake
04.03.20
✎
10:29
|
(11) у же есть табчасть список
|
|||
14
catena
04.03.20
✎
10:31
|
(13)Если уже есть, передавай в туда, что уже есть.
|
|||
15
Fish
04.03.20
✎
10:33
|
(13) Короче. Делаешь так:
1. При нажатии на кнопку получаешь форму выбора пользователя, которая должна тебе вернуть выбранное значение 2. Из текущей строки списка задач, получаешь задачу-объект и в нём меняешь исполнителя на выбранного. Всё. |
|||
16
FransisDrake
04.03.20
✎
11:36
|
(15) какой командой осуществляется выбор?
|
|||
17
Fish
04.03.20
✎
11:38
|
(16) В форме выбора это стандартная команда: "выбрать".
|
|||
18
FransisDrake
04.03.20
✎
11:43
|
Старый - это текущий исполнитель
НовыйИсполнитель - в новыйисполнитель я хочу записать новое значение Форма.ВыбратьИзСписка(Список, НовыйИсполнитель); - где-то тут я делаю неправильно Старый = ЭлементыФормы.Список.ТекущаяСтрока.Ссылка.Исполнитель; // это текущий исполнитель НовыйИсполнитель = Исполнитель; // в новыйисполнитель я хочу записать новое значение Если Исполнитель = ПользователиКлиентСервер.ТекущийПользователь() ИЛИ Исполнитель.РольДоступна("ПолныеПрава") Тогда Форма= Справочники.Пользователи.ПолучитьФорму("КХМ_ФормаСпискаКраткая"); Форма.Заголовок= "Перепоручить задачу"; Форма.РежимВыбора = Истина; Открытие = Форма.ОткрытьМодально(); Форма.ВыбратьИзСписка(Список, НовыйИсполнитель); // где-то тут я делаю неправильно Старый = НовыйИсполнитель; |
|||
19
Fish
04.03.20
✎
11:47
|
(18) Посмотри в отладчике, чему у тебя равно "Открытие", после того, как ты выбрал пользователя в модальной форме.
|
|||
20
FransisDrake
04.03.20
✎
11:53
|
(19) открытие равно тому пользователю, которого я выбрал
|
|||
21
Fish
04.03.20
✎
11:56
|
(20) И? На мысли никакие не наводит?
|
|||
22
Fish
04.03.20
✎
11:57
|
+(21) Т.е. п.1 из (15) ты выполнил - получил выбранного пользователя. Осталось сделать п.2
|
|||
23
FransisDrake
04.03.20
✎
11:59
|
(21) я понял, что это значение теперь нужно записать вместо старого
Открытие = Форма.ОткрытьМодально(); - вот здесь у меня лежит новый пользователь Старый ЭлементыФормы.Список.ТекущаяСтрока.Ссылка.Исполнитель - а вот здесь старый Но, если я сделаю Старый = Открытие; разве это не будет ошибкой? |
|||
24
Fish
04.03.20
✎
12:03
|
(23) Так ты не поменяешь. Тебе нужно из текущей строки списка получить задачу-объект. И в нём менять. Ну и не забыть записать объект :)
|
|||
25
FransisDrake
04.03.20
✎
12:27
|
(24)
Так, кажется, я на финишной прямой! но все равно что-то не то, ругается, что поле недоступно для записи ТС = ЭлементыФормы.Список.ТекущаяСтрока; НовыйИсполнитель = Исполнитель; Если Исполнитель = ПользователиКлиентСервер.ТекущийПользователь() ИЛИ Исполнитель.РольДоступна("ПолныеПрава") Тогда Форма= Справочники.Пользователи.ПолучитьФорму("КХМ_ФормаСпискаКраткая"); Форма.Заголовок= "Перепоручить задачу"; Форма.РежимВыбора = Истина; Открытие = Форма.ОткрытьМодально(); Если ТипЗнч(ТС.Ссылка)= тип("ЗадачаСсылка.НА_ЗадачаСогласования") Тогда Если ТипЗнч(ТС.Ссылка.Исполнитель)= тип("ДокументСсылка.НА_БюджетПроекта") Тогда БизнесПроцессы.НА_СогласованиеБюджетаПроекта.ТочкиМаршрута.СогласоватьГенеральныйДиректор.Исполнитель = Открытие; Иначе БизнесПроцессы.НА_СогласованиеСоглашенияНаВыполненияРабот.ТочкиМаршрута.ВыполнитьРаботы.Исполнитель = Открытие; КонецЕсли; Если ТипЗнч(ТС.Ссылка)= тип("ЗадачаСсылка.НА_СогласованиеЗаказаПоставщику") Тогда БизнесПроцессы.НА_СогласованиеЗаказаПоставщику.ТочкиМаршрута.ДоработкаЗаказа.Исполнитель = Открытие; КонецЕсли; Если ТипЗнч(ТС.Ссылка) = тип("ЗадачаСсылка.НА_ЗадачаСогласованияВыбораПоставщика") Тогда БизнесПроцессы.НА_СогласованиеВыбораПоставщика.ТочкиМаршрута.ВыборПоставщика.Исполнитель = Открытие; КонецЕсли; Иначе Сообщить("У Вас нет прав на перепоручение текущей задачи", СтатусСообщения.Важное); КонецЕсли; КонецЕсли; |
|||
26
Bad_Aleks
04.03.20
✎
12:37
|
(25) Тебе нужно получить Объект(Задача твоя в которой ты хочешь поменять). Потом присвоить нового ответственного. Потом записать Объект.
ДокОбъект = Задача.ПолучитьОбъект(); ДокОбъект.Исполнитель = НовыйИсполнитель; ДокОбъект.Записать(); Как то так... |
|||
27
FransisDrake
04.03.20
✎
12:48
|
(26) у меня в списке выбор из трех разных задач, я поэтому сделал то, что сделал в (24)
|
|||
28
catena
04.03.20
✎
12:51
|
(27)Хоть из тридцати, все равно, чтобы что-то записать, нужно получить объект. Разницу между объектом и ссылкой понимаешь?
|
|||
29
FransisDrake
04.03.20
✎
12:56
|
(28) разницу понимаю. Но не понимаю как мне реализовать.
Если ДокОбъект = Задача1.ПолучитьОбъект() тогда ДокОбъект.Исполнитель = НовыйИсполнитель; ДокОбъект.Записать(); ИначеЕсли ДокОбъект = Задача2.ПолучитьОбъект() ДокОбъект.Исполнитель = НовыйИсполнитель; ДокОбъект.Записать(); что-то типа такого? |
|||
30
FransisDrake
04.03.20
✎
13:22
|
Всем Спасибо!)))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |