Нещодавно зіткнувся з проблемою відкриття форми ще не записаного в БД документа, багато возився з цим. Вирішив узагальнити все знайдене, може комусь заощадить час.
Отже питання №1: Як відкрити форму ще не записаного документа (не заповнений на підставі)?
Відповідь: Щоб відкрити форму нам потрібно зв'язати її з посиланням об'єкта, але об'єкт ще не записаний. Багато хто намагається використовувати метод УстановітьСсилкуНового () але це не прокатує. Після довгих читань я зробив ось так:
НаКліенте
Процедура Команда (Команда)
Форма = ПолучітьФорму ( "Документ.НашДокумент .ФормаОб'екта");
ДанниеФорми = Форма.Об'ект; // Отримуємо об'єкт форми в змінну
ЗаполнітьДокументНаСервере (ДанниеФорми); // Заповнюємо документ на сервері
КопіроватьДанниеФорми (ДанниеФорми, Форма.Об'ект); // копіюємо наш об'єкт в об'єкт форми і далі відкриваємо її
Форма.Открить ();
// Можна використовувати безконтекстний виклик, оптимізуємо передачу даних
Функція ЗаполнітьДокументНаСервере (ДанниеФорми);
Док = ДанниеФормиВЗначеніе (ДанниеФорми. Тип ( "ДокументОб'ект.НашДокумент")); // Отримуємо об'єкт з даних форми АБО
// Заповнюємо реквізити об'єкта або інші дії ********
ЗначеніеВДанниеФорми (Док, ДанниеФорми); // Кладемо назад в об'єкт форми вже створений документ
2. Як відкрити форму вже записаного документа?
Тут є два методи ОткритьФорму () або ОткритьЗначеніе (). В обох випадках потрібно передавати посилання на записаний документ.
НаКліенте
Процедура Команда (Команда)
На сервері
Функція ЗаполнітьДокументНаСервере ()
// Використовуємо метод створити
НовийОб'ект = Документи. НашДокумент. СоздатьДокумент ();
НовийОб'ект. Записати (); // Обов'язково записуємо
На унікальність матеріалу не претендую, сам тільки "початківець" так що якщо щось не так - критикуйте!