Имя: Пароль:
1C
 
ДО. Помогите с непосредственным руководителем автора документа
0 greenprog
 
29.09.23
09:03
Настраиваю шаблон процесса. На одном из шагов настройки шаблона процесса Ответственный за документ - Непосредственный руководитель ответственного за документ - дальше уже по пользователям определенным. Так вот, все срабатывает и работает пока автор документа подчененный, если же автор сам непосредственный руководитель ответственного, процесс не срабатывает. Сделал условие у Непосредственного руководителя:

Если Предмет.Подготовил.Подразделение.Руководитель = Предмет.Ответственный Тогда
  Результат = Истина;
Иначе
  Результат = Ложь;
КонецЕсли;


Все равно не срабатывает. Что я делаю не так?
1 maxab72
 
29.09.23
09:03
В ДО 2.1 я определял, является ли ответственный документа руководителем подразделения так, в шаблоне условия:
УстановитьПривилегированныйРежим(Истина);

Запрос = Новый Запрос();
Запрос.Текст = 
	"ВЫБРАТЬ
	|	Подразделения.Ссылка
	|ИЗ
	|	Справочник.СтруктураПредприятия КАК Подразделения
	|ГДЕ
	|	Подразделения.Руководитель = &АвторДокумента";
Запрос.УстановитьПараметр("АвторДокумента", Предмет.Ответственный);
РезультатЗапроса = Запрос.Выполнить();
Если НЕ РезультатЗапроса.Пустой() Тогда
	Результат = Истина;
Иначе
	Результат = Ложь;
КонецЕсли;

УстановитьПривилегированныйРежим(Ложь);


Ответственного можно в коде заменить на автора
2 greenprog
 
29.09.23
09:47
(1) Не срабатывает
3 greenprog
 
29.09.23
09:47
(1) Хотя проверку проходит, а условие не срабатывает
4 maxab72
 
29.09.23
10:18
2(3) Опишите поподробнее. Возможно этап процесса, который следует за проверкой, направляется пользователю, не имеющему прав на документ или процесс. Или иная причина, не связанная с условием.
5 greenprog
 
29.09.23
11:38
(4) https://ibb.co/2dkGpCw


Автору присвоил права Администратора и следующему после него тоже дал админские права. Вот это пишет:
по причине:
Ошибка при выполнении обработчика - 'ВложенныйПроцессПередСозданиемВложенныхБизнесПроцессов'
по причине:
Эта задача не может быть выполнена.
Не найдены исполнители для автоподстановки "ВнутреннийДокумент.Непосредственный руководитель ответственного за документ".
Обратитесь к администратору.
Попробуйте стартовать процесс еще раз.
6 maxab72
 
29.09.23
11:50
А это подразделение в структуре предприятия самое верхнее? Или если не самое верхнее, у вышележащего руководитель назначен?
7 greenprog
 
29.09.23
12:05
сделал верхним не изменилось
8 maxab72
 
29.09.23
12:11
Нет, как раз если самое верхнее, то у руководителя такого подразделения НЕТ собственного непосредственного руководителя.
нужна проверка на его наличие, что это ген.директор или управляющий или как у вас там называется.

Вот код из типовой. Как ищется автоподстановка "Непосредственный руководитель"

    Руководитель = Справочники.Пользователи.ПустаяСсылка();
    
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    СтруктураПредприятия.Ссылка КАК Подразделение,
        |    СтруктураПредприятия.Родитель,
        |    СтруктураПредприятия.Руководитель
        |ИЗ
        |    РегистрСведений.СведенияОПользователяхДокументооборот КАК СведенияОПользователяхДокументооборот
        |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.СтруктураПредприятия КАК СтруктураПредприятия
        |        ПО СведенияОПользователяхДокументооборот.Подразделение = СтруктураПредприятия.Ссылка
        |ГДЕ
        |    СведенияОПользователяхДокументооборот.Пользователь = &Пользователь";
    Запрос.УстановитьПараметр("Пользователь", Ответственный);
    
    Выборка = Запрос.Выполнить().Выбрать();
    
    Если НЕ Выборка.Следующий() Тогда
        Возврат Руководитель;
    КонецЕсли;
    
    Подразделение = Выборка.Подразделение;
    Родитель = Выборка.Родитель;
    Руководитель = Выборка.Руководитель;
        
    Если Руководитель <> Ответственный Тогда
        Возврат Руководитель;
    КонецЕсли;
    
    Пока Родитель <> Неопределено Цикл
        Подразделение = Родитель;
        
        РеквизитыПодразделения = ОбщегоНазначения.ЗначенияРеквизитовОбъекта(
            Подразделение, "Родитель, Руководитель");
        Родитель = РеквизитыПодразделения.Родитель;
        Руководитель = РеквизитыПодразделения.Руководитель;
        
        Если Руководитель <> Ответственный Тогда
            Прервать;
        КонецЕсли;
    КонецЦикла;
    
    Возврат Руководитель;
9 greenprog
 
29.09.23
12:22
(8) Точно!!! Спасибо вы правы!! Вернул в подчинение обратно подрахделение и присвоил руководителя. Все заработало!!! Огромное спасибо!!!