1С. Как открыть форму ещё не записанного документа.
Постановка задачи: в информационной системе имеется документ "Спецификация". На форме документа есть кнопка "Запрос цен". По нажатию этой кнопки должен создаться и заполниться документ "Запрос цен". Его заполненная форма должна открыться для редактирования пользователем, при этом документ не должен быть записан.
Итак, реализация задуманного:
Серверная процедура, в которой заполняется объект документа:
Для уменьшения объёма передаваемых данных между клиентом и сервером можно организовать серверную процедуру без передачи в неё контекста формы:
✍️ @odin1C_rus
Постановка задачи: в информационной системе имеется документ "Спецификация". На форме документа есть кнопка "Запрос цен". По нажатию этой кнопки должен создаться и заполниться документ "Запрос цен". Его заполненная форма должна открыться для редактирования пользователем, при этом документ не должен быть записан.
Итак, реализация задуманного:
&НаКлиенте
Процедура ЗапросЦен(Команда)
ФормаНовогоЗапросаЦен = ПолучитьФорму("Документ.ЗапросЦен.Форма.ФормаДокумента");
ДанныеФормы = ФормаНовогоЗапросаЦен.Объект;
ЗаполнитьЗапросЦенНаСервере(ДанныеФормы); // Процедура, в которой на сервере заполняется объект документа.
КопироватьДанныеФормы(ДанныеФормы, ФормаНовогоЗапросаЦен.Объект); // Здесь данные заполненного объекта документа копируются в форму.
ФормаНовогоЗапросаЦен.Открыть(); // Открываем заполненную форму.
КонецПроцедуры
Серверная процедура, в которой заполняется объект документа:
&НаСервере
Процедура ЗаполнитьЗапросЦен(ДанныеФормы)
// В этой серверной процедуре заполняем объект.
ДанныеФормы.Организация = Объект.Организация;
//... заполняем все необходимые реквизиты.
КонецПроцедуры
Для уменьшения объёма передаваемых данных между клиентом и сервером можно организовать серверную процедуру без передачи в неё контекста формы:
&НаСервереБезКонтекста
Процедура ЗаполнитьЗапросЦен(ДанныеФормы)
// Получаем объект документа из данных формы
НовыйЗапросЦен = ДанныеФормыВЗначение(ДанныеФормы, Тип("ДокументОбъект.ЗапросЦен"));
// Или создаём новый документ:
НовыйЗапросЦен = Документы.ЗапросЦен.СоздатьДокумент();
// Заполняем реквизиты объекта документа
НовыйЗапросЦен.Организация = Объект.Организация;
//... заполняем все необходимые реквизиты.
// Данные заполненного документа помещаем в объект формы
ЗначениеВДанныеФормы(НовыйЗапросЦен,ДанныеФормы);
КонецФункции
✍️ @odin1C_rus