К списку форумов К списку тем
Регистрация    Правила    Главная форума    Поиск   
Имя: Пароль:
Рекомендовать в новости

БП 3.0 программно создать и открыть документ

0 - 17.05.2017 - 13:37
Подскажите плз, почему последовательность команд не работет для документа "РеализацияТоваровУслуг" ? при выборе в Объект.ДокументПриемник документа другого типа все работает нормально
ФормаДокумента = ПолучитьФорму("Документ." + Объект.ДокументПриемник + ".ФормаОбъекта");
ДанныеФормы = ФормаДокумента.Объект;
ЗаполнитьДокументНаСервере(ДанныеФормы);
КопироватьДанныеФормы(ДанныеФормы, ФормаДокумента.Объект);
ФормаДокумента.Открыть();



1 - 17.05.2017 - 13:45
при выборе документа "РеализацияТоваровУслуг" выдает ошибку
"Поле объекта не обнаружено(Объект)"
2 - 17.05.2017 - 14:45
Ну нет у полученной формы реквизита с именем "Объект"...
3 - 17.05.2017 - 15:18
ага, понял уже, выход есть какой-нибудь ?
4 - 17.05.2017 - 16:05
(3)
получать форму, у которой есть реквизит объект))
глянуть какие у этого дока формы и где там объект...
5 - 17.05.2017 - 16:18
(0)По моему, в вопросе уже содержится ответ. Нужно на сервере создать объект нового документа, вернуть на клиента ссылку, а на клиенте получить форму и открыть ее
6 - 17.05.2017 - 16:29
(5) подразумевает запись объекта в базу, что далеко не всегда необходимо
7 - 17.05.2017 - 16:40
(6)Почему запись? я не говорил, что объект надо записывать. Я полагаю, что 1С вернет ссылку нового документа, которой еще нет в базе. Вот работающий код:
&НаСервере
Функция СоздатьДокумент()
ТребОбъект = Документы.РеализацияТоваровУслуг.СоздатьДокумент() ;

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

&НаКлиенте
Процедура Сформировать(Команда)
СсылкаНаДокумент = СоздатьДокумент();

КлючПоиска = Новый Структура("Ключ", СсылкаНаДокумент);
ФормаДокумента = ПолучитьФорму("Документ.РеализацияТоваровУслуг.Фор ма.ФормаДокумента", КлючПоиска);
ФормаДокумента.Открыть();

КонецПроцедуры
8 - 17.05.2017 - 17:07
(7) - СоздатьДокумент() вернет пустую ссылку, с UID 00000000-0000-0000-0000-000000000000 (если насильно не впихнуть СсылкуНового), по такому ключу откроется форма совершенно иного нового документа, никак не связанного с созданным в во время выполнения функции СоздатьДокумент()
В чем смысл?
9 - 17.05.2017 - 17:32
(8)я привел решение навскидку, просто никогда этим не озадачивался. Может можно и проще, хотя и тут ничего сложного, и задача состояла именно в том, чтобы открыть форму нового документа, или я просто не вьехал ? Тогда прошу прощения. Автор вроде хотел создать и открыть. Я не гуру управляемых форм, но как я понимаю, можно открыть форму объекта, значит чтобы открыть форму надо объект создать. Или мы о чем спорим ?) Записывать его в базу данных я не предлагал
10 - 17.05.2017 - 17:39
Для того, чтоб открыть форму нового документа - его не нужно создавать, нужно просто открыть форму. Без дополнительных манипуляций. Вот прямо как в (0)
ФормаДокумента = ПолучитьФорму("Документ." + Объект.ДокументПриемник + ".ФормаОбъекта");
.....
ФормаДокумента.Открыть();

Как правило, кроме открытия формы нужно провести ещё частичное заполнение реквизитов (как раз то, что за многоточием :) )
11 - 17.05.2017 - 17:57
(10)Вы хотите сказать, что при простом открытии формы
ФормаДокумента = ПолучитьФорму("Документ." + Объект.ДокументПриемник + ".ФормаОбъекта");
нмкакой объект не будет создан ? Дуиаю, что будет, просто нам о нем будет не дано знать. А заполнять программно надо все таки реквизиты объекта, а не реквизиты формы, которые являются визуализацией объекта. Заполнять программно реквизиты формы по моему чистейшее извращение. Есть документ, так заполняйте ц него то, что будет храниться в БЛ, а не на экране. Может я и неправ, но у меня такое мнение. Работать надо с данными, а не с их отображением
12 - 17.05.2017 - 18:03
(10)до меня дошло о чем Вы, щас проверю ))
13 - 17.05.2017 - 18:05
Принимаю все возражения )
14 - 17.05.2017 - 20:22
если УФ, то сразу ОткрытьФорму("Документ.Реализация.Форма.Формаобьек ты",ПараметрыФормы), а в нужные параметры подсунуть то, что надо
15 - 18.05.2017 - 06:19
У Автора видимо в открываемой форме гнет реквизита "Объект", как например в форме "ФормаДокумента" документа "РеализацияТоваровУслуг". А в форме "ФормаДокументаОбщая" реквизит есть и вот такой код работает, контрагент заполняется:
ФормаДокумента = ПолучитьФорму("Документ.РеализацияТоваровУслуг.Фор ма.ФормаДокументаОбщая");
ФормаДокумента.Объект.Контрагент = Контрагент;
16 - 18.05.2017 - 06:40
http://v8.1c.ru/metod/faq2/answer.jsp?id=651
Попробовал, работает:
ЭлементыОтбора = Новый Структура("Контрагент", Контрагент);
ПараметрыФормы = Новый Структура("ЗначенияЗаполнения", ЭлементыОтбора);
ОткрытьФорму("Документ.РеализацияТоваровУслуг.Форм а.ФормаДокумента", ПараметрыФормы);
17 - 18.05.2017 - 09:48
(16)
оно будет работать только для тех реквизитов, у которых стоит галка "Заполнять из данных заполнения"
18 - 19.05.2017 - 07:34
всем спасибо, все получилось
19 - 19.05.2017 - 08:52
(18)Признак хорошего тона - привести решение )


К списку вопросов
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск




Copyright ©, Все права защищены