Имя: Пароль:
1C
 
Получение данных из формы задачи
, ,
0 shadow1337
 
28.10.19
17:48
У меня есть бизнес-процесс МойБизнесПроцесс, задачей которого является ЗадачаМоегоБизнесПроцесса.
У задачи ЗадачаМоегоБизнесПроцесса есть форма ФормаЗадачиБП, на которой расположено поле ИсторияВыполненияЗадач.
Это поле наполняется определенным текстом ТекстЗадачи, который является результатом выполнения функции ФормированиеТекстаВФорму.

Мне нужно создать запрос, в котором будет один столбец, содержащий все тексты ТекстЗадачи из всех ЗадачаМоегоБизнесПроцесса. Но я не понимаю, как это реализовать.
Была идея создать столбец Комментарии в Вычисляемых Полях СКД, но функцию из формы задачи нельзя достать. Разве что переносить эту функцию в Общие Модули, но все равно не лучшая идея.

Какие еще есть варианты?
1 ам794123
 
28.10.19
17:57
(0) только в глобальный общий модуль, или запросом создать временную таблицу, имитирующую работу этой функции для каждой задачи.
2 Михаил Козлов
 
28.10.19
18:20
Поле ИсторияВыполненияЗадач привязано к реквизиту формы?
Может быть это реквизит бизнес-процесса?
3 Михаил Козлов
 
28.10.19
18:21
(2) Виноват: не к реквизиту формы, а к реквизиту задачи.
4 shadow1337
 
28.10.19
20:29
(2) Поле ИсторияВыполненияЗадач привязано к реквизиту ИсторияВыполненияЗадач, который есть у формы. У бизнес-процесс такого реквизита нет (если я правильно понимаю, что это реквизит формы):

http://ipic.su/img/img7/fs/Skrinshot(28.1572283703.jpg
5 Михаил Козлов
 
28.10.19
20:37
Но ведь эта история (или то, из чего она формируется) где-то хранится (в реквизите задачи или бизнес-процесса)?
Функция ФормированиеТекстаВФорму из каких данных формирует текст?
6 shadow1337
 
28.10.19
22:01
Функция ФормированиеТекстаВФорму находится в модуле формы. Внутри функции происходит следующее:

1) Сначала выполняется запрос, который берет из задачи ПроверкаДоговоров нужные реквизиты.
В переменную РезультатЗапроса заносится тип данных Выборка.

2) В цикле Пока РезультатЗапроса.Следующий() формируется текст, причем
Функция СклонениеВНужныйПадеж - функция из другого бизнес процесса,
Функция ФункцияИзТойЖеФормы - функция, которая находится в том же модуле формы задачи, что и искомая функция ФормированиеТекстаВФорму  


Текст заносится в переменную ТекстЗадач,
т.е. ТекстЗадач = РезультатЗапроса.Реквизит1 + СклонениеВНужныйПадеж(РезультатЗапроса.Реквизит1) + ФункцияИзТойЖеФормы(РезультатЗапроса.Ссылка).

3) При выходе из цикла получаем получаем ИсторияВыполненияЗадач = ТекстЗадач
7 shadow1337
 
28.10.19
22:01
(5)
8 shadow1337
 
28.10.19
22:49
(5) Не вижу реквизита ИсторияВыполненияЗадач ни в БП, ни в задаче. Только в форме задачи.
9 FIXXXL
 
29.10.19
08:37
>1) Сначала выполняется запрос, который берет из задачи ПроверкаДоговоров нужные реквизиты.

отсюда и пляши
бери текст запроса и кастомизируй под свою задачу
10 catena
 
29.10.19
09:06
>>Разве что переносить эту функцию в Общие Модули, но все равно не лучшая идея.

Почему? А если завтра понадобится изменить алгоритм формирования текста, менять и на форме и в отчетах - идея лучше?
11 shadow1337
 
29.10.19
10:03
(9) (10) Проблема в том, что запрос берет данные из определенной задачи, которая связана с определенным бизнес-процессом.
В функцию ФормированиеТекстаВФорму передается ссылка на бизнес-процесс.
Эта ссылка относится к бизнес-процессу, который мы сами и выбираем в форме.

Т.е. открыли задачу, выбрали бизнес-процесс и уже в зависимости от выбранного функция выполняется, формирует текст.

Но мне ведь нужно, чтобы запрос взял все задачи, а каждая задача связана с определенным БП.
То есть я не могу скопировать эту функцию в общий модуль, чтобы потом передать в вычисляемые поля, т.к. функция принимает один из БП, который мы выбираем в форме, а мне нужны данные из всех.
12 FIXXXL
 
29.10.19
11:39
(11) ну напиши свою функцию
13 shadow1337
 
29.10.19
11:52
(12) Да, но тогда вот такой вопрос:

В функции ФормированиеТекстаВФорму в качестве параметра передается Объект.БизнесПроцесс.Ссылка, в этом поле собственно и находится нужный бизнес-процесс.

Если я буду писать функцию в общем модуле, как мне нужно передать этот параметр? Как правильно написать?
14 hhhh
 
29.10.19
11:55
(13) ну, имя функции, а в скобках имя параметра.
15 FIXXXL
 
29.10.19
11:56
(13) к примеру
Функция ФормированиеТекстаВФорму(БП = неопределено)



КонецФункции

и внутри запроса анализируешь параметр &БП
ВЫБОР КОГДА &БП = Неопределено ТОГДА ИСТИНА ИНАЧЕ ТвойПараметрОтбора = &БП
16 shadow1337
 
29.10.19
12:16
(15) Все равно не понял, вот смотрите (перед этим уточню, что у задачи ЗадачаМоегоБизнесПроцесса есть реквизит БизнесПроцесс)

В форме вот так:

ФормированиеТекстаВФорму(Объект.БизнесПроцесс.Ссылка);

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


Если я напишу такую же функцию в общем модуле, только будет вот так:
Функция ФормированиеТекстаВФорму(БизнесПроцесс = Неопределено)


Разве что-то получится тогда вообще?
17 catena
 
29.10.19
12:52
(16)Тебе же в (15) показали, как в функции обработать, чтоб работало и для одного и для всех.
18 shadow1337
 
29.10.19
12:59
(17) да я видел, но все равно не могу понять, как под свой фрагмент кода подкорректировать :(
19 hhhh
 
29.10.19
13:21
(18) так наверно
Если БизнесПроцесс = Неопределено Тогда

    Запрос = Новый Запрос;

    Запрос.Текст =
    "ВЫБРАТЬ
    |    ЗадачаМоегоБизнесПроцесса.Ссылка,
    |    ЗадачаМоегоБизнесПроцесса.Наименование,
    |    ЗадачаМоегоБизнесПроцесса.Комментарий
    |ИЗ
    |    Задача.ЗадачаМоегоБизнесПроцесса КАК ЗадачаМоегоБизнесПроцесса
    |    ";
    

Иначе

    Запрос = Новый Запрос;

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

КонецЕсли;
20 shadow1337
 
29.10.19
14:17
(19) не выходит
21 hhhh
 
29.10.19
14:19
(20) что конкретно?
22 shadow1337
 
29.10.19
14:43
(21) Написал это в функцию, которая находится в общем модуле, внес название функции в вычисляемые поля СКД, но в итоге в каждом поле одинаковый текст.
23 shadow1337
 
29.10.19
14:46
(21) В СКД вот так прописано: ФормированиеИсторииЗадач.ФормированиеТекстаВФорму(Неопределено)
24 hhhh
 
29.10.19
14:51
(23) так зачем Неопределено? Прикалываешься всё?
25 shadow1337
 
29.10.19
14:59
(24) Так он без если Неопределено не поставить - пишет, что их недостаточно. (15) написал, что в параметрах должно быть БП = Неопределено
26 shadow1337
 
29.10.19
15:15
(15) можете, пожалуйста, посмотреть мой код? Не выходит сделать
27 shadow1337
 
29.10.19
15:52
(24) По сути проблема как раз в том, что в Вычисляемых полях я не могу передать никаким образом нормально ссылку на Бизнес-процесс
28 hhhh
 
29.10.19
15:57
(27) почему не можете? &БизнесПроцесс - это же ссылка
29 shadow1337
 
29.10.19
16:23
(28) Если я запишу в Вычисляемые поля => Выражение "ФормированиеИсторииЗадач.ФормированиеТекстаВФорму(&БизнесПроцесс)",
мне выпишет "не установлено значение параметра"

Окей, делаю следующее
В параметрах добавляю "Параметр1" и делаю его типа "БизнесПроцессСсылка.МойБизнесПроцесс" и тогда в Выражение пишу
"ФормированиеИсторииЗадач.ФормированиеТекстаВФорму(&Параметр1)", тогда пишет "не установлено значение параметра Параметр1"

Что куда написать, чтобы пофиксить?
30 hhhh
 
29.10.19
16:40
(29) может поле бизнеспроцесс в скд у вас есть. или добавьте это поле
31 shadow1337
 
29.10.19
16:52
(30) у меня вот так выглядит запрос в СКД

ВЫБРАТЬ ПЕРВЫЕ 100
    ЗадачаМоегоБизнесПроцесса.Ссылка,
    ЗадачаМоегоБизнесПроцесса.Наименование,
    ЗадачаМоегоБизнесПроцесса.Комментарий
ИЗ
    Задача.ЗадачаМоегоБизнесПроцесса КАК ЗадачаМоегоБизнесПроцесса


Что нужно сделать? У ЗадачаМоегоБизнесПроцесса есть реквизит БизнесПроцесс
32 hhhh
 
29.10.19
16:58
(31) ну так значит

ВЫБРАТЬ ПЕРВЫЕ 100
    ЗадачаМоегоБизнесПроцесса.Ссылка,
    ЗадачаМоегоБизнесПроцесса.Наименование,
    ЗадачаМоегоБизнесПроцесса.Комментарий,
    ЗадачаМоегоБизнесПроцесса.БизнесПроцесс
ИЗ
    Задача.ЗадачаМоегоБизнесПроцесса КАК ЗадачаМоегоБизнесПроцесса

чего вы тупите?
33 shadow1337
 
29.10.19
22:34
(32) Большое спасибо, удалось достать комментарии таким образом)