Вход | Регистрация
 

Получение данных из формы задачи

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

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

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

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

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

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


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

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

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

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

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

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

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

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



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

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

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

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


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


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

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

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

Иначе

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

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

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

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

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

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


Что нужно сделать? У ЗадачаМоегоБизнесПроцесса есть реквизит БизнесПроцесс
   hhhh
 
32 - 29.10.19 - 16:58
(31) ну так значит
ВЫБРАТЬ ПЕРВЫЕ 100
    ЗадачаМоегоБизнесПроцесса.Ссылка,
    ЗадачаМоегоБизнесПроцесса.Наименование,
    ЗадачаМоегоБизнесПроцесса.Комментарий,
    ЗадачаМоегоБизнесПроцесса.БизнесПроцесс
ИЗ
    Задача.ЗадачаМоегоБизнесПроцесса КАК ЗадачаМоегоБизнесПроцесса

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


Список тем форума
Рекламное место пустует  Рекламное место пустует
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс, 1996 г.
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.