Имя: Пароль:
1C
 
Как правильно создать и заполнить документ
,
0 Zixxx
 
14.05.16
13:39
В БП 3.0 нужно создать и заполнить документ "ПоступлениеНаРасчетныйСчет"

1. Если создать документ на сервере, то его невозможно заполнить типовыми процедурами типа "ПриИзмененииКонтрагента", так как там передается управляемая форма а при создании есть только объект

2. Если Получить Управляемую форму то невозможно ее передать в серверную процедуру "ПриИзмененииКонтрагента".

Как правильно создать и заполнить документ в таком случае?
1 zak555
 
14.05.16
14:04
покажи приИзменениеКонтрагента
2 Zixxx
 
14.05.16
14:09
&НаКлиенте
Процедура КонтрагентПриИзменении(Элемент)
    
    Если ЗначениеЗаполнено(Объект.Контрагент) Тогда
        КонтрагентПриИзмененииСервер();
    КонецЕсли;
    
КонецПроцедуры

&НаСервере
Процедура КонтрагентПриИзмененииСервер()
    
    ПоступлениеНаРасчетныйСчетФормы.КонтрагентПриИзмененииСервер(ЭтотОбъект);
    
КонецПроцедуры

Ну и соответственно "ЭтотОбъект" это уже УправляемаяФорма
3 zak555
 
14.05.16
14:14
об = документы.ПоступлениеНаРасчетныйСчет.создатьДокумент();
ПоступлениеНаРасчетныйСчетФормы.КонтрагентПриИзмененииСервер(об);
4 Zixxx
 
14.05.16
14:30
(3) Нет, так не подойдет, вот сама процедура на сервере, там используется и управляемая форма и сам объект

Процедура КонтрагентПриИзмененииСервер(Форма) Экспорт
    
    Объект = Форма.Объект;
    
    ПричиныИзменения = Новый Массив;
    ПричиныИзменения.Добавить("Контрагент");
    
    УстановитьВладельцаСчетаКонтрагента(Форма);
    УстановитьПараметрыВыбораБанковскихСчетов(Форма);
    
    ПараметрыОбъекта = ТекущиеПараметрыОбъекта(Форма);
    НовыеПараметры   = НовыеПараметрыПриИзмененииКонтрагента(ПараметрыОбъекта);
    
    ЗаполнитьЗначенияСвойств(Объект, НовыеПараметры, "СчетКонтрагента");
    
    ИнициализироватьСвойстваПлатежаНаСервере(Форма, Истина);
    ЗаполнитьЗначенияСвойств(Форма.СвойстваПлатежа, НовыеПараметры);
    ПерезаполнитьРасшифровкуПлатежа(Форма);
    
    УправлениеФормой(Форма);
    
    ЗаполнитьСчетаУчета(Форма, "Контрагент", ПричиныИзменения);
    
КонецПроцедуры
5 zak555
 
14.05.16
14:35
(4) странно, почему в 2 передаётся реквизит формы
6 Zixxx
 
14.05.16
14:38
(5) Пробовал создать структуру, но там постоянно то дергаются реквизиты формы то реквизиты объекта, причем так сделано не только при изменении контрагента, также при изменении счета, организации, заполнение документа и т.п.

Я вот думал может есть какая-то процедура подготовки структуры или что-то в этом роде.

Не хочется полностью в ручную заполнять все реквизиты документа с кучей проверок.
7 RomanYS
 
14.05.16
14:44
(5) передается форма, потому что в контексте упр. формы ЭтотОбъект=ЭтаФорма( начиная с 8.2 или 8.3)

(0) зачем тебе эти обработчики формы, заполни всё сам.
8 Zixxx
 
14.05.16
14:51
(7) Лень самому заполнять, должно быть какое-то универсальное решение
9 RomanYS
 
14.05.16
14:58
(8) если оно есть, то в модулях объект, менеджера или в общих. Но точно не в формах, там ~80% шлака(применительно к твоей задаче) связано с видимостью и доступностью элементов.

Чего ты ждешь от этих функций? Ты боишься, что твой код выберет договор или счёт от другого контрагента?
10 zak555
 
14.05.16
15:03
(7) чёрт, не так посмотрел

мнеипрказалось этотОбъект.объект )
11 Zixxx
 
14.05.16
15:07
(9) Ерунду какую-то ты написал. Подумал перед этим?
12 RomanYS
 
14.05.16
15:11
(11) с чем ты не согласен? Это моё мнение, если ты ответишь на те вопросы (что должно заполняться и проверяться по твоим ожиданиям), я возможно это мнение поменяю.
13 Zixxx
 
14.05.16
15:19
(12) Да при чем тут согласен не согласен, если ты отходишь от темы, то ли не понимая что нужно то ли не хотя понять.
14 RomanYS
 
14.05.16
15:36
(13) я то как раз хочу понять, поэтому и спрашиваю (в третий раз уже) о твоих ожиданиях от этих функций.

Моё видение:
ты открыл форму,
увидел километр кода,
решил, что без километра кода документ не заполнить,
решил этот код каким-то образом использовать.

По факту надо разобраться и заполнить пару десятков реквизитов. А в форме можно лишь подсмотреть, например, что надо вызвать, чтобы заполнились счета учета и т.п.

ЗЫ. Скажи ещё раз, что я "оффтоплю" и не буду тему больше открывать.
15 Zixxx
 
14.05.16
15:46
(14) Да, можешь больше не открывать, так как не смотрел километр кода и не решал что без него не заполнить документ. Как заполнять я знаю, вопрос в другом.