Можно ли вытащить из списка согласований только одного?

1. Svet_Serg 17.06.19 16:12 Сейчас в теме
Возможно ли в Документообороте в автозаполняемый шаблон вытащить результат согласования конкретного согласованта? По роли, например?
Стандартный лист согласований в данном случае не подходит, т.к. согласователей 10 человек, а на документе ставится виза только двух-трёх.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. CyberBob 4 18.06.19 07:55 Сейчас в теме
(1)Возможно проще будет поправить запрос в листе согласования.
2. VmvLer 17.06.19 17:15 Сейчас в теме
вопрос скомкан и непонятен, вернее там несколько вопросов каждый из которых уникален.

может вам надо втащить?
4. Svet_Serg 18.06.19 09:09 Сейчас в теме
(2)
может вам надо втащить?

Грубить необязательно.

(3) Не, не вариант. Потому что в листе согласования ВСЕ согласующие и он распечатывается в том виде, в котором есть, а в автозаполняемом шаблоне нужна только половина согласующих. В этом и загвоздка.

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

Запрос.УстановитьПараметр("Документ", Файл.ВладелецФайла.Ссылка);

РезультатЗапроса = Запрос.Выполнить();

Выборка = РезультатЗапроса.Выбрать();

Пока Выборка.Следующий() Цикл
РезультатСогласования = РезультатСогласования + Выборка.Исполнитель + " (" + Формат(Выборка.ДатаИсполнения, "ДФ=dd.MM.yyyy") + ") " + Выборка.РезультатСогласования + Символы.ПС;
КонецЦикла;

РезультатОбработки = РезультатСогласования;
Показать


Но это никого не устраивает, т.к. список ВСЕХ согласующих выводится списком. Нужно, чтобы в таблице (пример прикрепляю) надпись "согласовано" ставилась напротив каждого. Соответственно, надо проверить, что если роль "главный по тарелочкам", то вывести только его результат согласования.

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

Как это сделать грамотно?
Прикрепленные файлы:
5. user705522_constantin_h 36 18.06.19 09:30 Сейчас в теме
(4)
Если очень грубо, то что-то типа этого нужно:

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

Запрос.УстановитьПараметр("Документ", Файл.ВладелецФайла.Ссылка); 

РезультатЗапроса = Запрос.Выполнить(); 

Выборка = РезультатЗапроса.Выбрать(); 

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

РезультатОбработки = РезультатСогласования;;
Показать
6. Svet_Serg 18.06.19 11:17 Сейчас в теме
(5) это было бы слишком просто)

Я так пробовала, там ошибка получается: Переменная не определена (ВизыСогласования)
7. user705522_constantin_h 36 18.06.19 11:20 Сейчас в теме
(6)
Я так пробовала, там ошибка получается: Переменная не определена (ВизыСогласования)

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

Запрос.УстановитьПараметр("Документ", Файл.ВладелецФайла.Ссылка); 

РезультатЗапроса = Запрос.Выполнить(); 

Выборка = РезультатЗапроса.Выбрать(); 

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

РезультатОбработки = РезультатСогласования;;
Показать
9. Svet_Serg 18.06.19 11:50 Сейчас в теме
(7) А так ошибка "Переменная не определена (Справочник)"

По крайней мере в эмуляторе скриптов.
10. user705522_constantin_h 36 18.06.19 11:54 Сейчас в теме
(9)
А так ошибка "Переменная не определена (Справочник)"

Это вы так написали.
Должно быть так:
Справочники.РолиИсполнителей
Svet_Serg; +1 Ответить
12. Svet_Serg 19.06.19 08:16 Сейчас в теме
(10) я, наверное, снова какую-нибудь фигню делаю, но скрипт не отрабатывает :( Ошибок нет, но и результат пустой.
Заменила РолиИсполнителей на Пользователи - всё работает. Это, конечно, наводит на некоторые неудобства, если сотрудник уволен, но, как вариант - вполне подходит.
13. user705522_constantin_h 36 19.06.19 09:51 Сейчас в теме
(12)В справочнике Визы согласования есть реквизит РольИсполнителя. Попробуйте его добавить в запрос.
РезультатОбработки = ""; 
РезультатСогласования = ""; 
Запрос = Новый Запрос; 
Запрос.Текст = 
"ВЫБРАТЬ 
|    ВизыСогласования.РольИсполнителя, 
|    ВизыСогласования.ДатаИсполнения, 
|    ВизыСогласования.РезультатСогласования 
|ИЗ 
|    Справочник.ВизыСогласования КАК ВизыСогласования 
|ГДЕ 
|    ВизыСогласования.Документ = &Документ"; 

Запрос.УстановитьПараметр("Документ", Файл.ВладелецФайла.Ссылка); 

РезультатЗапроса = Запрос.Выполнить(); 

Выборка = РезультатЗапроса.Выбрать(); 

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

РезультатОбработки = РезультатСогласования;
Показать
14. Svet_Serg 19.06.19 10:08 Сейчас в теме
11. VmvLer 18.06.19 11:57 Сейчас в теме
все-таки в сообщение (2) все было верно)
8. VmvLer 18.06.19 11:21 Сейчас в теме
  Если ВизыСогласования.Исполнитель = Справочник.Роли.НайтиПоНаименованию ("ГлавныйПоТарелочкам") Тогда
        РезультатСогласования = РезультатСогласования + Выборка.Исполнитель + " (" + Формат(Выборка.ДатаИсполнения, "ДФ=dd.MM.yyyy") + ") " + Выборка.РезультатСогласования + Символы.ПС; 
    КонецЕсли;   


    Если Выборка.Исполнитель = Справочник.Роли.НайтиПоНаименованию ("ГлавныйПоТарелочкам") Тогда
        РезультатСогласования = РезультатСогласования + Выборка.Исполнитель + " (" + Формат(Выборка.ДатаИсполнения, "ДФ=dd.MM.yyyy") + ") " + Выборка.РезультатСогласования + Символы.ПС; 
    КонецЕсли;      
15. CyberBob 4 19.06.19 19:17 Сейчас в теме
Я бы чуть по-другому сделал: не стал бы к роли исполнителя привязываться, а завел бы например рабочую группу типа "ПодписантыДока1" и проверял на принадлежность сотра к ней. нужно выводить - включили в группу, не нужно - исключили. Для разных доков разные группы например. Мне кажется это более логичным с точки зрения администрирования пользователей.
Svet_Serg; +1 Ответить
16. Svet_Serg 20.06.19 10:07 Сейчас в теме
(15) для данного вида документа вариант рабочих групп не подойдёт. Но спасибо за идею, для других документов пригодится.
Оставьте свое сообщение

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