|
Возможен ли запрос данных? (Документооборот) | ☑ | ||
---|---|---|---|---|
0
СэдКС
07.05.12
✎
15:00
|
Плоховато со знанием встроенного языка 1с, поэтому вопрос из далека:
В Документообороте есть формы бизнес-процесса и задачи. http://fotoifolder.ru/view_foto/ra6mb0t5ulz3/ Требуется из табличной части одной формы (бизнес-процесс) взять данные для другой формы (задача). В табличной части в строке вбирается исполнитель, напротив ставится срок исполнения задачи. Задача поступает каждому исполнителю. В этой задаче есть срок, который и нужно как-то вытащить из таб.части бизнес-процесса. Пробую использовать в запросе конструкцию ВЫБОР КОГДА, но пока не получается. Может нужно воспользоваться регистром сведений? |
|||
1
Amra
07.05.12
✎
15:08
|
Без фото не взлетит
|
|||
2
СэдКС
08.05.12
✎
05:35
|
(1) Какого фото?
|
|||
3
skunk
08.05.12
✎
05:38
|
личного ... в личной карточке ...традиция тут такая
|
|||
4
rphosts
08.05.12
✎
06:07
|
(3) угу, как миниум от пояса и выше
|
|||
5
rphosts
08.05.12
✎
06:08
|
хинт, пока данные не сохранены в ИБ достать их запросом не получится т.к. в источнике данных для запроса их ещё нет.
|
|||
6
rphosts
08.05.12
✎
06:16
|
+(5) но запрос это не единственный вариант обмена данными между формами.
|
|||
7
СэдКС
08.05.12
✎
06:56
|
(3)(4) :) :)
(6) значит нужно поместить данные в регистр? Или о каком варианте вы говорите? (самый простой) |
|||
8
rphosts
08.05.12
✎
07:00
|
(7)
1. нет фотки. 2. РС что-бы из формы в форму - не самый лучший вариант... |
|||
9
СэдКС
08.05.12
✎
07:10
|
(8) на работе нет фоток. девочка как девочка :)
по запросу в гугле "сохранение данных в 1с" выходят только статьи о сохранении и выгрузке базы. не могу найти ваши варианты |
|||
10
rphosts
08.05.12
✎
07:32
|
я не совсем вашу задачу понял, вам сколько данных нужно передать :
1. 1-2-3 2.список |
|||
11
СэдКС
08.05.12
✎
07:58
|
Передать данные по сроку. Срок ставится каждому исполнителю, а может и исполнителю роли (в котором 2 испол. например). То есть получается берутся еще данные по полю Исполнитель, чтобы к нему привязать срок.
|
|||
12
rphosts
08.05.12
✎
08:13
|
максимальное количество исполнителей какое?
|
|||
13
СэдКС
08.05.12
✎
08:28
|
Нет установленного максимального значения, сколько пользователь поставит в список, столько и будет. Но больше 10 еще не ставили
|
|||
14
vmv
08.05.12
✎
09:00
|
я вообще не понял сути вопроса - какой-то бред: табличная часть, бп. получение значения колонки даты из тч задач архипроблема.
да еще и фото нет - пичалька, хватит спать! |
|||
15
СэдКС
08.05.12
✎
09:10
|
(14) я тоже, если честно, не очень пока понимаю, что здесь и к чему. А ваш вариант получения данных?
после праздника поставлю фото. |
|||
16
vmv
08.05.12
✎
09:44
|
(15)
самое простое использовать и в первой форме и во второй методы, которые есть вы можете найти в модуле формы бп &НаСервере Функция ПоместитьИсполнителейВоВременноеХранилище() Возврат ПоместитьВоВременноеХранилище(Объект.Исполнители.Выгрузить(), УникальныйИдентификатор); КонецФункции &НаСервере Процедура ЗагрузитьИсполнителейИзВременногоХранилища(АдресВременногоХранилища) Объект.Исполнители.Загрузить(ПолучитьИзВременногоХранилища(АдресВременногоХранилища)); КонецПроцедуры во 2-ю форму надо передать адрес временного хранилища и в серверном методе модуля этой формы осуществить работу с датами. но идти по логике разработчиков документооборота, скуривших мещок травы при разработке, не оптимально) чтобы не терзать сервак по такое ерунде, проще передавать во 2-ю форму в качестве параметра или владельца 1-ю форму или в 1-й форме формировать структуру, где ключ ссылка на Исполнитель из табличной части "Исполнители", а значение "Дата" из Объект.Исполнители.ЗадачаИсполнителя.ДатаИсполненияСтруктураи структура уходит о 2-ю форму без передачи в нее того самого мешка травы |
|||
17
rphosts
10.05.12
✎
05:44
|
(13): Нет установленного максимального значения
не совсем верно, ограничение сверху - количество зарегеных в системе сотрудников. Ну раз > 1-2-3, тогда лучший способ временное хранилище как тут писали... не самое красивое решение но гарантированно работоспособное для тех объектов которые не сохранены в ИБ. Если олбъект сохранён и насколько понимаю в тот момент который вы описываете происходит генерация множества заданий количество которых заведомо не известно (должно быть равно размеру списка исполнителей), причём в каждом задании свой срок исполнения - тогда это совсем другая история! ЗЫ фотки до сих пор нет!!! |
|||
18
СэдКС
10.05.12
✎
09:14
|
(17) нет, объекты не сохраняются в ИБ. Код с временным хранилищем, который написал пользователь Vmv в (15) сейчас есть в модуле бизнес-процесса (1я форма). В нем Объект.Исполнители - это и есть таблица, в которой находятся поля Исполнитель и Срок исполнения. Если на данный момент уже есть сохранение табличной части во времен. хранилище, то нужно в модуле задачи (2я форма) вызвать в сервер.процедуре
Объект.Исполнители.Загрузить(ПолучитьИзВременногоХранилища(УникальныйИдентификатор)); и дальше у меня ступор |
|||
19
rphosts
10.05.12
✎
12:05
|
(18)передавать нужно не УникальныйИдентификатор, а АдресВременногоХранилища, который возвращается при сохранении данных.
на сервере из Объект.Исполнители.Загрузить(ПолучитьИзВременногоХранилища(..... вполне можно сделать структуру которая будет возвращена на клиента. |
|||
20
СэдКС
11.05.12
✎
06:59
|
&НаСервере
Процедура ЗагрузитьИзВременногоХранилища(АдресВременногоХранилища) Объект.Исполнители.Загрузить(ПолучитьИзВременногоХранилища(АдресВременногоХранилища)); Результат = Новый Массив; Для Каждого Строка Из Объект.Исполнители Цикл Запись = Новый Структура; Запись.Вставить("Исполнитель", Строка.Исполнитель); Запись.Вставить("Срок", Строка.Срок); Результат.Добавить(Запись); КонецЦикла; КонецПроцедуры Допустим будет эта структура(в модуле БП), если о такой структуре шла речь. А как данные из структуры вытаскивать на клиенте(в модуле задачи)? |
|||
21
vmv
11.05.12
✎
09:07
|
20.
по временному хранилищу в отладчике АдресВХ = ПоместитьВоВременноеХранилище(Объект.Исполнители.Выгрузить(), УникальныйИдентификатор); посмотри значение переменной АдресВХ, подумай, учти, запомни по структуре Для Каждлого ЭлементСтруктуры Из СтруктураЗначений Цикл ЗначениеСтруткруры = ЭлементСтруктуры.Значение; КлючСтруткруры = ЭлементСтруктуры.Ключ; .... или ЗаполнитьЗначенияСвойств(СтрокаТабличнойЧастиВДругойФорме, СтруктураЗначений) |
|||
22
bvg
11.05.12
✎
09:27
|
(0) какая версия документооборота? Вообще если функциональная опция "ИспользоватьДатуИВремяВСрокахЗадач" включена, то срок в задаче заполняется при старте бизнес-процесса ... зачем еще между формами что то передавать?
|
|||
23
СэдКС
11.05.12
✎
11:03
|
(22) да, такая опция есть. Но дело в том, что срок для каждого исполнителя устанавливается в одинаковом количестве дней, потому что в форме бизнес-процесса одно поле для срока (какое число поставишь, такой и будет срок у каждого исполнитля). А нам требуется устанавливать разные сроки для исполнителей.
|
|||
24
bvg
11.05.12
✎
11:21
|
(23) Для этого есть комплексный бизнес-процесс как вариант
|
|||
25
bvg
11.05.12
✎
11:31
|
Но если все таки у вас планы поизвращаться, то проще будет создать реквизит табличной части исполнители ... вывести его на форму , и в модуле бизнес процесса в процедуре СогласоватьПередСозданиемЗадач, в цикле создания задач данные этого реквизита подставлять в срок задачи
|
|||
26
СэдКС
11.05.12
✎
12:29
|
Я только сегодня скачала конфигурацию, где есть комплексный бп (у нас версия старее), но мне он не понравился. Там очень много лишнего. Насчет подставления реквизита я изначально пробовала, но у меня не получилось. Подставляю вместо СрокИсполнения - Исполнители.Срок и программа не обнаруживает поле Срок. Ведь с списке Исполнители несколько строк, как программа должна узнать, какой именно срок взять для определенного исполнителя? С помощью отладки и Вычисления выражения значение срока выходит только при наборе Исполнители[1].Срок (это например для первой строки).
Наверно мне нужен мешок травы от разработчиков |
|||
27
СэдКС
11.05.12
✎
14:33
|
Вот же я лошара! Надо было вместо Исполнители.Срок написать Строка.Срок. Теперь всё работает, и не надо было никаких временных хранилищ и прочей ерунды. Спасибо пользователь Bvg, вы мне жизнь спасли
|
|||
28
Fragster
гуру
11.05.12
✎
14:40
|
(6) а потом из-за циклических ссылок память начнет утекать, причем по неопытности бороться с этим не получится, а сваливать всё на 1ску будут...
|
|||
29
СэдКС
11.05.12
✎
18:20
|
Чуть-чуть еще доработать надо, потому что в процедурах ИзменитьРеквизитыНевыполненныхЗадач и ПередЗаписью выходят ошибки.
Например в процедуре ИзменитьРеквизитыНевыполненныхЗадач есть такой кусочек кода: Если ЗначениеЗаполнено(Строка.Срок) Тогда Если ПолучитьФункциональнуюОпцию("ИспользоватьГрафикиРаботы") Тогда ЗадачаОбъект.СрокИсполнения = ГрафикиРаботы.ПолучитьДатуОкончанияПериода(ГрафикРаботы, ЗадачаОбъект.Дата, Строка.Срок); Иначе ЗадачаОбъект.СрокИсполнения = ЗадачаОбъект.Дата + Строка.Срок*24*3600; КонецЕсли; ЗадачаОбъект.СрокИсполнения = КонецДня(ЗадачаОбъект.СрокИсполнения); КонецЕсли; КонецЕсли; И выходит ошибка: {БизнесПроцесс.Согласование.МодульОбъекта(147,52)}: Переменная не определена (Срок) а с пом. отладки пишет: Строка.Срок {(1)}: Значение не является значением объектного типа (Срок) Для Процедуры СогласоватьПередСозданиемЗадач(ТочкаМаршрутаБизнесПроцесса, ФормируемыеЗадачи, СтандартнаяОбработка) Строка.Срок идет без ошибок. Значение высчитывает правильно. Проблема только при изменении срока в запущенной задаче. Подскажите, почему переменная не определяется! |
|||
30
rphosts
11.05.12
✎
19:45
|
В отладчике (в табло) посмотрите что вообще такое Строка в этом месте кода и чем но наполнено. Может достаточно доп условия на тот случай когда Строка = Неопределено.
|
|||
31
СэдКС
14.05.12
✎
05:53
|
Строка никаких значений не дает, она тоже в значении "переменная не определена".
|
|||
32
rphosts
14.05.12
✎
06:02
|
ТекущаяСтрока, ТекущиеДанные, коллекция Элементы и т.п. и содержимое всего этого. Не видя конф. сложно дать точный ответ
|
|||
33
СэдКС
14.05.12
✎
09:01
|
Нужно было добавить строчку "Для Каждого Строка Из Исполнители Цикл" и ошибка уходит. Лена молодец)
|
|||
34
vmv
14.05.12
✎
09:06
|
(33) две недели искать косяк, ога молодец)
срочно замуж |
|||
35
rphosts
14.05.12
✎
09:54
|
(34) она на флруме неделю, откуда инф. про 2?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |