Получение доп. реквизита в доп. обработчике

1. blandinko 19.04.18 10:29 Сейчас в теме
Добрый день,

помогите, пожалуйста, понять, что я делаю не так.

Хочу сделать доп. обработчик, который бы автоматически запускал процесс ознакомления после согласования документа и подставлял в него дополнительных адресатов из доп. реквизитов документа. Возникла проблема в получении доп. реквизитов.

У вида документа "_Служебная записка" есть 4 доп. реквизита (Адресат 2, Адресат 3, Адресат 4, Адресат 5) с составным типом данных: Пользователь, Подразделение, Рабочая группа.

Пытаюсь получить доп. реквизиты через запрос:

БизнесПроцесс = Событие.Источник;

Если ТипЗнч(БизнесПроцесс) = Тип("БизнесПроцессСсылка.Согласование") 
И (БизнесПроцесс.РезультатСогласования = Перечисления.РезультатыСогласования.Согласовано
ИЛИ БизнесПроцесс.РезультатСогласования = Перечисления.РезультатыСогласования.СогласованоСЗамечаниями) Тогда

  ТипыДокументов = Новый Массив;
  ТипыДокументов.Добавить(Тип("СправочникСсылка.ВнутренниеДокументы"));

  ВидыДокументов = Новый Массив;
  ВидыДокументов.Добавить(Справочники.ВидыВнутреннихДокументов.НайтиПоНаименованию("_Служебная записка"));
    
  ОсновныеПредметы = МультипредметностьКлиентСервер.ПолучитьМассивПредметовОбъекта(БизнесПроцесс, ТипыДокументов, Истина);
  
  Для Каждого Предмет ИЗ ОсновныеПредметы Цикл
    
    Если ВидыДокументов.Найти(Предмет.ВидДокумента) <> Неопределено Тогда
           
      ШаблонПроцесса = Справочники.ШаблоныОзнакомления.НайтиПоНаименованию("Ознакомление адресата");
      Если ШаблонПроцесса <> Неопределено Тогда

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

		РезультатВыборки = Запрос.Выполнить().Выбрать();
		Пока РезультатВыборки.Следующий() Цикл
			Если ТипЗнч(РезультатВыборки.Значение) = Тип("СправочникСсылка.Пользователи") Тогда
				Строка = Процесс.Исполнители.Добавить();
                Строка.Исполнитель = Справочники.Пользователи.НайтиПоНаименованию(РезультатВыборки.Значение);
			ИначеЕсли ТипЗнч(РезультатВыборки.Значение) = Тип("СправочникСсылка.СтруктураПредприятия") Тогда
				Строка = Процесс.Исполнители.Добавить();
                Строка.Исполнитель = Справочники.СтруктураПредприятия.НайтиПоНаименованию(РезультатВыборки.Значение);
			ИначеЕсли ТипЗнч(РезультатВыборки.Значение) = Тип("СправочникСсылка.РабочиеГруппы") Тогда
				Строка = Процесс.Исполнители.Добавить();
                Строка.Исполнитель = Справочники.РабочиеГруппы.НайтиПоНаименованию(РезультатВыборки.Значение);
            КонецЕсли;	
		КонецЦикла;

        Процесс.Дата = ТекущаяДата();
        Процесс.Записать();
        Процесс.Старт();	

      КонецЕсли;
            
            
    КонецЕсли;	
  КонецЦикла;

КонецЕсли;		
Показать


Доп. обработчик подписан на "Завершение процесса".
В произошедших бизнес-событиях вижу, что процесс не удалось обработать, но в Журнал регистрации никаких ошибок не падает :(

P.S. Нет ли более простого способа получения доп. реквизитов, как, например, в скриптах автозаполнения шаблонов файлов "ПолучитьЗначениеДопРеквизитаОбъекта(Файл.ВладелецФайла.Ссылка, "Название доп. реквизита") ?
По теме из базы знаний
Найденные решения
3. user774630 19.04.18 11:38 Сейчас в теме
ВсеСвойства = УправлениеСвойствами.ПолучитьСписокСвойств(Предмет, Истина, Ложь);

Дальше перебором. Удобного способа в ДО нет, т.к. он давно не обновляется и там старая версия БСП. В конфигурациях со свежими БСП в доп реквизиты добавили удобную штуку - возможность добавления уникального идентификатора для доп реквизита, чтобы к нему можно было удобно обращаться. См. картинку
Прикрепленные файлы:
blandinko; +1 Ответить
11. Skromnyi 13 20.04.18 15:16 Сейчас в теме
(10) Рискну предложить такой вариант:
	БизнесПроцесс = Событие.Источник;
	
	Если ТипЗнч(БизнесПроцесс) = Тип("БизнесПроцессСсылка.Согласование") 
		И (БизнесПроцесс.РезультатСогласования = Перечисления.РезультатыСогласования.Согласовано
		ИЛИ БизнесПроцесс.РезультатСогласования = Перечисления.РезультатыСогласования.СогласованоСЗамечаниями) Тогда
		
		ТипыДокументов = Новый Массив;
		ТипыДокументов.Добавить(Тип("СправочникСсылка.ВнутренниеДокументы"));
		
		ВидыДокументов = Новый Массив;
		ВидыДокументов.Добавить(Справочники.ВидыВнутреннихДокументов.НайтиПоНаименованию("_Служебная записка"));
		
		ОсновныеПредметы = МультипредметностьКлиентСервер.ПолучитьМассивПредметовОбъекта(БизнесПроцесс, ТипыДокументов, Истина);
		
		Для Каждого Предмет ИЗ ОсновныеПредметы Цикл
			
			Если ВидыДокументов.Найти(Предмет.ВидДокумента) <> Неопределено Тогда
				
				ШаблонПроцесса = Справочники.ШаблоныОзнакомления.НайтиПоНаименованию("Ознакомление адресата");
				Если ШаблонПроцесса <> Неопределено Тогда
					
					ПроцессОзнакомления = БизнесПроцессы.Ознакомление.СоздатьБизнесПроцесс();
					ПроцессОзнакомления.Заполнить(Новый Структура("Предметы, Шаблон", Предмет, ШаблонПроцесса));
					ПроцессОзнакомления.Автор = Предмет.Подготовил;
					ПроцессОзнакомления.Дата = ТекущаяДата();
					
					ЗначенияСвойств = УправлениеСвойствами.ПолучитьЗначенияСвойств(Предмет, Истина, Ложь);
					ТаблицаИсполнители = ПроцессОзнакомления.Исполнители;
					Для Каждого СтрокаТаблицы ИЗ ЗначенияСвойств Цикл
						ЗначениеСвойства = СтрокаТаблицы.Значение;
						Если НЕ ПользователиДокументооборот.ЭтоКонтейнер(ЗначениеСвойства) Тогда
							Продолжить;
						КонецЕсли;
						ВыбранныеИсполнители = ПользователиДокументооборот.СоставКонтейнера(ЗначениеСвойства);
						Для Каждого ВыбранныйИсполнитель ИЗ ВыбранныеИсполнители Цикл
							
							ПараметрыОтбора = Новый Структура;
							ПараметрыОтбора.Вставить("Исполнитель", ВыбранныйИсполнитель);
		
							НайденныеСтроки = ТаблицаИсполнители.НайтиСтроки(ПараметрыОтбора);
							Если НайденныеСтроки.Количество() = 0 Тогда
								НоваяСтрокаИсполнитель = ТаблицаИсполнители.Добавить();
								НоваяСтрокаИсполнитель.Исполнитель = ВыбранныйИсполнитель;
							КонецЕсли;
							
						КонецЦикла;
					КонецЦикла;
					
					ПроцессОзнакомления.Записать();
					ПроцессОзнакомления.Старт();    
					
				КонецЕсли;
				
			КонецЕсли;
			
		КонецЦикла;
		
	КонецЕсли;       
Показать
blandinko; +1 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. blandinko 19.04.18 11:30 Сейчас в теме
(1)

Нашла ошибку в запросе. С получением доп. реквизитов теперь проблем нет.
Запрос = Новый Запрос;
		Запрос.Текст = "
			|ВЫБРАТЬ
			|	ВнутренниеДокументы.ДополнительныеРеквизиты.Свойство КАК Свойство,
			|	ВнутренниеДокументы.ДополнительныеРеквизиты.Значение КАК Значение
			|ИЗ
			|	Справочник.ВнутренниеДокументы КАК ВнутренниеДокументы
			|ГДЕ
			|	ВнутренниеДокументы.Ссылка = &ЭтотДокумент 
			|	И (ВнутренниеДокументы.ДополнительныеРеквизиты.Свойство = &ДопАдресат2
			|	ИЛИ ВнутренниеДокументы.ДополнительныеРеквизиты.Свойство = &ДопАдресат3
			|	ИЛИ ВнутренниеДокументы.ДополнительныеРеквизиты.Свойство = &ДопАдресат4
			|	ИЛИ ВнутренниеДокументы.ДополнительныеРеквизиты.Свойство = &ДопАдресат5)";
		Запрос.УстановитьПараметр("ЭтотДокумент", Предмет.Ссылка);
		Запрос.УстановитьПараметр("ДопАдресат2", ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Адресат 2"));
		Запрос.УстановитьПараметр("ДопАдресат3", ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Адресат 3"));
		Запрос.УстановитьПараметр("ДопАдресат4", ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Адресат 4"));
		Запрос.УстановитьПараметр("ДопАдресат5", ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию("Адресат 5"));
Показать

Но я почему-то вообразила, что можно добавить в исполнители целое подразделение или рабочую группу %))
вот здесь:
ИначеЕсли ТипЗнч(РезультатВыборки.Значение) = Тип("СправочникСсылка.СтруктураПредприятия") Тогда
                Строка = Процесс.Исполнители.Добавить();
                Строка.Исполнитель = Справочники.СтруктураПредприятия.НайтиПоНаименованию(РезультатВыборки.Значение);
            ИначеЕсли ТипЗнч(РезультатВыборки.Значение) = Тип("СправочникСсылка.РабочиеГруппы") Тогда
                Строка = Процесс.Исполнители.Добавить();
                Строка.Исполнитель = Справочники.РабочиеГруппы.НайтиПоНаименованию(РезультатВыборки.Значение);
            КонецЕсли;

Получается, придется запросом же выбирать из справочников подразделений и рабочих групп всех пользователей, в них содержащихся и добавлять их в процесс?

И вопрос про более простой способ получения доп. реквизитов остается открытым...
3. user774630 19.04.18 11:38 Сейчас в теме
ВсеСвойства = УправлениеСвойствами.ПолучитьСписокСвойств(Предмет, Истина, Ложь);

Дальше перебором. Удобного способа в ДО нет, т.к. он давно не обновляется и там старая версия БСП. В конфигурациях со свежими БСП в доп реквизиты добавили удобную штуку - возможность добавления уникального идентификатора для доп реквизита, чтобы к нему можно было удобно обращаться. См. картинку
Прикрепленные файлы:
blandinko; +1 Ответить
4. blandinko 19.04.18 16:32 Сейчас в теме
(3) спасибо большое за информацию

в итоге остановилась на варианте с функцией Предмет.ДополнительныеРеквизиты.Найти()

ДопАдресаты = Новый Массив;
            ДопАдресаты.Добавить("Адресат 2");
            ДопАдресаты.Добавить("Адресат 3");
            ДопАдресаты.Добавить("Адресат 4");
            ДопАдресаты.Добавить("Адресат 5");

            Для Каждого ДопАдресат ИЗ ДопАдресаты Цикл
                ДопАдресатНомер = ПланыВидовХарактеристик.ДополнительныеРеквизитыИСведения.НайтиПоНаименованию(ДопАдресат);
                ДопАдресатЗначение = Предмет.ДополнительныеРеквизиты.Найти(ДопАдресатНомер, "Свойство").Значение;

                Если ЗначениеЗаполнено(ДопАдресатЗначение) Тогда
                   
                    Если ТипЗнч(ДопАдресатЗначение) = Тип("СправочникСсылка.Пользователи") Тогда

                        Строка = Процесс.Исполнители.Добавить();
                        Строка.Исполнитель = Справочники.Пользователи.НайтиПоНаименованию(ДопАдресатЗначение);

                    ИначеЕсли ТипЗнч(ДопАдресатЗначение) = Тип("СправочникСсылка.СтруктураПредприятия") Тогда

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

                            Строка = Процесс.Исполнители.Добавить();
                            Строка.Исполнитель = Справочники.Пользователи.НайтиПоНаименованию(ВыборкаПользователейПодразделения.Пользователь);

                        КонецЦикла;

                    ИначеЕсли ТипЗнч(ДопАдресатЗначение) = Тип("СправочникСсылка.РабочиеГруппы") Тогда
                    КонецЕсли;

                КонецЕсли;
            КонецЦикла;
Показать


Вот так получилось для типов значений Пользователь и Подразделение. Осталось для Рабочих групп настроить :)
6. blandinko 19.04.18 17:29 Сейчас в теме
(4)
(3)
Что-то никак не получается у меня для Рабочих групп настроить добавление исполнителей
ИначеЕсли ТипЗнч(ДопАдресатЗначение) = Тип("СправочникСсылка.РабочиеГруппы") Тогда

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

                            Строка = Процесс.Исполнители.Добавить();
                            Строка.Исполнитель = Справочники.Пользователи.НайтиПоНаименованию(ВыборкаПользователейРабочейГруппы.Пользователь);

                        КонецЦикла;

                    КонецЕсли;
Показать


Добавляет одного пустого пользователя и все...
7. Skromnyi 13 20.04.18 09:33 Сейчас в теме
(6) Попробуйте использовать Функцию "СоставКонтейнераПользователей" из модуля менеджера справочника "РабочиеГруппы".
blandinko; +1 Ответить
8. Skromnyi 13 20.04.18 09:36 Сейчас в теме
(4) Для получения списка пользователей из Подразделения можно использовать Функцию "СоставКонтейнераПользователей" из модуля менеджера справочника "СтруктураПредприятия".
blandinko; +1 Ответить
9. Skromnyi 13 20.04.18 09:42 Сейчас в теме
(4) Не очень понятно, почему Вы не стали использовать функцию УправлениеСвойствами.ПолучитьСписокСвойств?
10. blandinko 20.04.18 11:54 Сейчас в теме
(9) У меня не получилось ее правильно использовать вначале, сейчас попробовала еще раз и все заработало :) И спасибо большое за функцию СоставКонтейнераПользователей, сейчас все работает как надо и без запросов )

Вот что получилось в итоге

БизнесПроцесс = Событие.Источник;

Если ТипЗнч(БизнесПроцесс) = Тип("БизнесПроцессСсылка.Согласование") 
И (БизнесПроцесс.РезультатСогласования = Перечисления.РезультатыСогласования.Согласовано
ИЛИ БизнесПроцесс.РезультатСогласования = Перечисления.РезультатыСогласования.СогласованоСЗамечаниями) Тогда

  ТипыДокументов = Новый Массив;
  ТипыДокументов.Добавить(Тип("СправочникСсылка.ВнутренниеДокументы"));

  ВидыДокументов = Новый Массив;
  ВидыДокументов.Добавить(Справочники.ВидыВнутреннихДокументов.НайтиПоНаименованию("_Служебная записка"));
    
  ОсновныеПредметы = МультипредметностьКлиентСервер.ПолучитьМассивПредметовОбъекта(БизнесПроцесс, ТипыДокументов, Истина);
  
  Для Каждого Предмет ИЗ ОсновныеПредметы Цикл
    
    Если ВидыДокументов.Найти(Предмет.ВидДокумента) <> Неопределено Тогда
           
      ШаблонПроцесса = Справочники.ШаблоныОзнакомления.НайтиПоНаименованию("Ознакомление адресата");
      Если ШаблонПроцесса <> Неопределено Тогда

        Процесс = БизнесПроцессы.Ознакомление.СоздатьБизнесПроцесс();
        Процесс.Заполнить(Новый Структура("Предметы, Шаблон", Предмет, ШаблонПроцесса));
        Процесс.Автор = Предмет.Подготовил;

        СписокСвойств = УправлениеСвойствами.ПолучитьСписокСвойств(Предмет); 
        СписокЗначений = УправлениеСвойствами.ПолучитьЗначенияСвойств(Предмет);

        Для Каждого Свойство ИЗ СписокСвойств Цикл
            Если Лев(Свойство.Заголовок, 8) = "Адресат " Тогда

                ДопАдресатЗначение = СписокЗначений.Найти(Свойство.Ссылка, "Свойство").Значение;

                Если ЗначениеЗаполнено(ДопАдресатЗначение) Тогда
                    
                    Если ТипЗнч(ДопАдресатЗначение) = Тип("СправочникСсылка.Пользователи") Тогда

                        Строка = Процесс.Исполнители.Добавить();
                        Строка.Исполнитель = Справочники.Пользователи.НайтиПоНаименованию(ДопАдресатЗначение);

                    ИначеЕсли ТипЗнч(ДопАдресатЗначение) = Тип("СправочникСсылка.СтруктураПредприятия") Тогда
                        
                        ПользователиПодразделения = Справочники.СтруктураПредприятия.СоставКонтейнераПользователей(ДопАдресатЗначение);
                        Для Каждого ПользовательПодразделения ИЗ ПользователиПодразделения Цикл

                            Строка = Процесс.Исполнители.Добавить();
                            Строка.Исполнитель = Справочники.Пользователи.НайтиПоНаименованию(ПользовательПодразделения);

                        КонецЦикла;

                    ИначеЕсли ТипЗнч(ДопАдресатЗначение) = Тип("СправочникСсылка.РабочиеГруппы") Тогда

                        ПользователиРабочейГруппы = Справочники.РабочиеГруппы.СоставКонтейнераПользователей(ДопАдресатЗначение);
                        Для Каждого ПользовательРабочейГруппы ИЗ ПользователиРабочейГруппы Цикл

                            Строка = Процесс.Исполнители.Добавить();
                            Строка.Исполнитель = Справочники.Пользователи.НайтиПоНаименованию(ПользовательРабочейГруппы);

                        КонецЦикла;

                    КонецЕсли;

                КонецЕсли;
            КонецЕсли;
        КонецЦикла;
        
        Процесс.Дата = ТекущаяДата();
        Процесс.Записать();
        Процесс.Старт();	

      КонецЕсли;
            
            
    КонецЕсли;	
  КонецЦикла;

КонецЕсли;	
Показать


Еще раз спасибо всем за помощь )
11. Skromnyi 13 20.04.18 15:16 Сейчас в теме
(10) Рискну предложить такой вариант:
	БизнесПроцесс = Событие.Источник;
	
	Если ТипЗнч(БизнесПроцесс) = Тип("БизнесПроцессСсылка.Согласование") 
		И (БизнесПроцесс.РезультатСогласования = Перечисления.РезультатыСогласования.Согласовано
		ИЛИ БизнесПроцесс.РезультатСогласования = Перечисления.РезультатыСогласования.СогласованоСЗамечаниями) Тогда
		
		ТипыДокументов = Новый Массив;
		ТипыДокументов.Добавить(Тип("СправочникСсылка.ВнутренниеДокументы"));
		
		ВидыДокументов = Новый Массив;
		ВидыДокументов.Добавить(Справочники.ВидыВнутреннихДокументов.НайтиПоНаименованию("_Служебная записка"));
		
		ОсновныеПредметы = МультипредметностьКлиентСервер.ПолучитьМассивПредметовОбъекта(БизнесПроцесс, ТипыДокументов, Истина);
		
		Для Каждого Предмет ИЗ ОсновныеПредметы Цикл
			
			Если ВидыДокументов.Найти(Предмет.ВидДокумента) <> Неопределено Тогда
				
				ШаблонПроцесса = Справочники.ШаблоныОзнакомления.НайтиПоНаименованию("Ознакомление адресата");
				Если ШаблонПроцесса <> Неопределено Тогда
					
					ПроцессОзнакомления = БизнесПроцессы.Ознакомление.СоздатьБизнесПроцесс();
					ПроцессОзнакомления.Заполнить(Новый Структура("Предметы, Шаблон", Предмет, ШаблонПроцесса));
					ПроцессОзнакомления.Автор = Предмет.Подготовил;
					ПроцессОзнакомления.Дата = ТекущаяДата();
					
					ЗначенияСвойств = УправлениеСвойствами.ПолучитьЗначенияСвойств(Предмет, Истина, Ложь);
					ТаблицаИсполнители = ПроцессОзнакомления.Исполнители;
					Для Каждого СтрокаТаблицы ИЗ ЗначенияСвойств Цикл
						ЗначениеСвойства = СтрокаТаблицы.Значение;
						Если НЕ ПользователиДокументооборот.ЭтоКонтейнер(ЗначениеСвойства) Тогда
							Продолжить;
						КонецЕсли;
						ВыбранныеИсполнители = ПользователиДокументооборот.СоставКонтейнера(ЗначениеСвойства);
						Для Каждого ВыбранныйИсполнитель ИЗ ВыбранныеИсполнители Цикл
							
							ПараметрыОтбора = Новый Структура;
							ПараметрыОтбора.Вставить("Исполнитель", ВыбранныйИсполнитель);
		
							НайденныеСтроки = ТаблицаИсполнители.НайтиСтроки(ПараметрыОтбора);
							Если НайденныеСтроки.Количество() = 0 Тогда
								НоваяСтрокаИсполнитель = ТаблицаИсполнители.Добавить();
								НоваяСтрокаИсполнитель.Исполнитель = ВыбранныйИсполнитель;
							КонецЕсли;
							
						КонецЦикла;
					КонецЦикла;
					
					ПроцессОзнакомления.Записать();
					ПроцессОзнакомления.Старт();    
					
				КонецЕсли;
				
			КонецЕсли;
			
		КонецЦикла;
		
	КонецЕсли;       
Показать
blandinko; +1 Ответить
12. blandinko 24.04.18 10:54 Сейчас в теме
(11)
Спасибо за Ваш вариант )

Подскажите, пожалуйста, а можно ли в запущенный процесс добавить исполнителей?
Методом

БизнесПроцесс = Событие.Источник;
...
Строка = БизнесПроцесс.Исполнители.Добавить();
Строка.Исполнитель = Справочники.Пользователи.НайтиПоНаименованию("Администратор");


не получается
13. Skromnyi 13 24.04.18 11:47 Сейчас в теме
(12) Это уже отдельный вопрос, без привязки к задаче, что обозначена выше?
14. blandinko 24.04.18 13:10 Сейчас в теме
(13)
да, наверное лучше вынести в отдельный топик
https://forum.infostart.ru/forum9/topic191307/
15. Maria_Moh 19.03.21 11:39 Сейчас в теме
(11)
Если ТипЗнч(БизнесПроцесс) = Тип("БизнесПроцессСсылка.Согласование")


Воспользуюсь вашим вариантом, спасибо ;) Только заменю процесс "Согласование" на "Исполнение".

А как можно получить конкретного исполнителя из процесса? Например, если в задачах на исполнение есть исполнитель "Пупкин Иван Иванович", то обработчик срабатывает.
16. Skromnyi 13 19.03.21 16:51 Сейчас в теме
(15) А можно поподробнее, что за задачу Вы пытаетесь решить?
5. sergathome 4 19.04.18 16:40 Сейчас в теме
отладчиком посмотрите тип-то вообще совпадает ? допускает ли тип Строка.Исполнитель установку данного типа ?
17. Maria_Moh 22.03.21 08:38 Сейчас в теме
(16) Директор хочет видеть все задачи своего заместителя, связанные с исходящими письмами. Ну т.е. если кто-то поставил задачу заместителю, она должна падать директору на ознакомление.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот