Создать объект документа и открыть его форму 8.2 #465593


#0 by riv40rus
Создан объект документа, документ не записан. Как открыть его форму ?
#1 by Stepa86
Как создать документ и открыть его форму? В 1С Предприятии 8.2  для этих целей существует два возможных сценария работы: открыть форму нового документа и предоставить пользователю самому интерактивно записать данные объекта в базу данных. создать новый документ программно, программно заполнить его данными и программно записать. Затем, если нужно, показать его пользователю. В первом сценарии проще всего использовать метод глобального контекста ОткрытьФорму. Это можно сделать на клиенте. ОткрытьФорму("Документ.ПриходнаяНакладная.ФормаОбъекта"); При этом создается новый документ и открывается для редактирования основная форма этого документа. Если нужно какое-то предварительное заполнение документа начальными данными, то это можно сделать либо с помощью свойств реквизитов документа ЗначениеЗаполнения, ЗаполнятьИзДанныхЗаполнения либо в обработчике события документа ОбработкаЗаполнения. Подробнее об этом событии можно посмотреть в вопросе Как при открытии формы определить, что создается новый элемент?. Во втором случае можно программно создать документ на сервере, заполнить данными, если это нужно в обработчике события ОбработкаЗаполнения, записать, и передать ссылку на новый документ в метод глобального контекста ОткрытьЗначение, который откроет форму этого документа. Например: &НаКлиенте КонецФункции Подробнее об использовании методов ОткрытьЗначение и ОткрытьФорму можно прочитать в синтакс-помощнике: Глобальный контекст - Процедуры и функции для интерактивной работы.
#2 by riv40rus
Stepa86 конечно все это хорошо. Но как без записи в базу, ссылки на документ нет, а имеется только созданный объект на сервере. Это нужно для того чтобы реализовать нестандартный ввод на основании.
#3 by Stepa86
>> Если нужно какое-то предварительное заполнение документа начальными данными, то это можно сделать либо с помощью свойств реквизитов документа ЗначениеЗаполнения, ЗаполнятьИзДанныхЗаполнения либо в обработчике события документа ОбработкаЗаполнения. Подробнее об этом событии можно посмотреть в вопросе Как при открытии формы определить, что создается новый элемент?.
#4 by Ненавижу 1С
Складывается впечатление, что программировать станет несколько сложнее
#5 by Stepa86
программировать придется правильнее... мы не создаем объект и наполняем его свойствами, а вызываем конструктор
#6 by Ненавижу 1С
у тебя в "конструкторе" документ записывается уже
#7 by riv40rus
Тогда как вызвать обработку заполнения другого документа и передать параметр ДанныеЗаполнения?
#8 by Stepa86
я про обработку заполнения, документ не записывается
#9 by riv40rus
&НаСервере Алгоритм не прокатил. Вылетает ошибка "Нельзя изменять поле, содержащее объект данных формы".
#10 by riv40rus
Какие мысли еще будут?
#11 by Stepa86
Пример из УТ11:
#12 by Stepa86
&НаКлиенте        ,        ,        ); КонецПроцедуры
#13 by Stepa86
#14 by Mort
Автор предполагает порядок действий неприемлемый для клиент-серверного сценария.
#15 by Mort
Объект создается на сервере. Зачем ему там форма?
#16 by Mort
А если предполагалось получать форму на клиенте, зачем создавать объект на сервере?
#17 by riv40rus
Stepa86 спасибо.
#18 by riv40rus
&НаКлиенте        ,        ,        ); КонецПроцедуры Не прокатывает. В документе вызывается ОбработкаЗаполнения(ДанныеЗаполнения, СтандартнаяОбработка), а данные заполнения пустые.
#19 by Mort
А ты в ПараметрКоманды что пихаешь?
#20 by riv40rus
&НаКлиенте
#21 by riv40rus
ПараметрКоманды имеет тип ДокументСсылка
#22 by Asmody
#23 by riv40rus
Asmody читай выше, форма создается по данным объекта. На клиенте данные объекта не доступны.
#24 by riv40rus
ОткрытьФорму("Документ.ПеремещениеТоваров.Форма.ФормаДокумента",        Новый Структура("Основание", Новый Структура("Основание, ВидОперацииЗаполнения", ПараметрКоманды, "Продукция")));
#25 by riv40rus
Всем спасибо! Разобрался.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С