| 
    
            
         
         | 
    
  | 
Замена пользователя | ☑ | ||
|---|---|---|---|---|
| 
    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 
 | 
         
        Всем Спасибо!)))     
         | 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |