Имя: Пароль:
1C
1С v8
ДополнительныеСвойства документа
0 Euroset1
 
04.04.18
15:43
Добрый день.
Как перебросить данные через форму документа в модуль проведения, вызванный именно этим экземпляром открытой формы?

Есть некая обработка - рабочее место. Замысел такой: если данных на форме достаточно, то некий документ программно создается и проводится, не открываясь. А под ним еще несколько подчиненных (резервы и т.д.), причем вся логика в рабочем месте, а не в модуле проведение этого документа.
А если же чего-то не хватает (не удалось провести документ, ошибка), то предполагается его открыть и дать пользователю завершить и или исправить. Есть данные, которых в самом объекте нет, а они нужны для формирования подчиненных. Как обработка может в открываемую форму закинуть доп инфу, чтобы потом в модуль проведения она попала и могла быть использована?

Могу ли я например запихнуть массив не сохраненных объектов в открываемую форму как ДополнительныеСвойства.Вставить("моймассив", моймассив), а потом в модуле проведения этого документа что-то типа Если ДополнительныеСвойства.Свойство("моймассив") тогда поехали? Ну или какие еще идеи?
1 Cyberhawk
 
04.04.18
15:45
"Как обработка может в открываемую форму закинуть доп инфу" // Через параметры формы
"чтобы потом в модуль проведения она попала и могла быть использована" // Никак, только хранить в реквизитах объекта или в любом другом объекте БД (регистр, константа, параметр сеанса, хранилище настроек)
2 DrShad
 
04.04.18
15:46
(0) что мешает проверить? даю подсказку, часто доп свойства очищаются
3 Cyberhawk
 
04.04.18
15:46
К сожалению, свойства объектов БД, не представленные на форме (например, реквизиты типа "ХранилищеЗначения", структуры "ДополнительныеСвойства, "ОбменДанными") не сохраняются между серверными вызовами формы
4 Cyberhawk
 
04.04.18
15:47
Поэтому присваивать их объекту, получеенному из реквизита формы (на сервере), не имеет смысла
5 Cyberhawk
 
04.04.18
15:48
Что там у тебя за массив, Я так и не понял
6 Euroset1
 
04.04.18
15:55
Ну если конкретнее, то есть заказ покупателя и на его основании нужно создать заказы поставщикам и резервирования. Номенклатура хранится в оракле, поэтому с ней прилетают несколько айдишников, которые нужно донести до заказов поставщикам. Хранить в документе их негде.

Поэтому единственный путь я видел такой:
1) В обработке создаем массив готовых объектов - резервирований (осталось только записать-провести)
2) Получаем форму заказа покупателя
3) Заполняем реквизиты, заполняем ДополнительныеСвойства этим массивом.
4) Открываем.
5) Если юзер решил провести, то обработка проведения ловит этот массив и проводит эти документы.

Где в этом "плане" должны пропасть мои свойства?
7 Cyberhawk
 
04.04.18
16:08
Храни свой массив в обработке, зачем на форму документа это протаскивать?
8 Euroset1
 
04.04.18
16:14
(7) Потому что если не хватает данных, то по сценарию открыть форму документа чтобы он дозаполнил. Когда он это сделает, то он клацнет "провести" и обработка не при делах. Она не знает, проведет он этот документ, или же вообще решит не сохранять.
9 D3O
 
04.04.18
16:41
в форме документа в событии ПередЗаписьюНаСервере можно напихать что угодно в ДополнительныеСвойства и тогда в модуле объекта все это будет доступно.
10 Euroset1
 
04.04.18
16:44
(9) то есть, глобально.
можно залить инфу на форму через параметры, а в этом обработчике перелить в допсвойства, так?
11 D3O
 
04.04.18
16:45
(9) только нужно сначала получить ДокументОбъект из данных формы (РеквизитФормыВЗначение). и вот для него уже устанавливать доп. св-ва.
12 D3O
 
04.04.18
16:46
(10) то, что передается в форму при открытии существует только до окончания ПриСозданииНаСервере
13 D3O
 
04.04.18
16:47
в общем, да. в ПриСозданииНаСервере можно залить доп. свва.
тогда в ПередЗаписьюНаСервере уже не нужно по идее.

но именно для экземпляра объекта нужно устанавливать
14 Cyberhawk
 
04.04.18
23:03
(12) Это только для неключевых параметров. Ключевой живет вечно, пока форма открыта
15 Cyberhawk
 
04.04.18
23:09
(13) Писец ты гонишь
16 Euroset1
 
05.04.18
09:20
В итоге, я получил, что хотел. Работает.
17 Сияющий в темноте
 
05.04.18
09:55
Если открыта форма документа,то потом можно получить событие о закрытии данной формы,если быть ее владельцем,установив ссылку нового для документа мы потом сможем проверить его состояние в базе,что еще нужно?
18 Euroset1
 
05.04.18
09:59
(17) Это не вариант. Сначала обработка сидит проверяет: "а не нужно ли мне уже создать резервы под тот документ.." - и под каждый из 5 открытых. А потом юзер закрывает обработку и остаются 5 бесхозных документов.
Где-то может и пригодится, но не для данной задачи. Здесь нужен был именно доп контекст для потенциально создаваемого документа. Чтобы выстрелил и забыл.
19 sima
 
24.04.18
22:31
(3) а вот этого действительно очень не хватает.  Положил в одном из серверных вызову формы что нужно в ДополнительныеСвойства, потом подпиской универсальной ПередЗаписью поймал и пользуйся. Но нет :(