Відкриття форми ще незаписаного документа 1с 8

Нещодавно зіткнувся з проблемою відкриття форми ще не записаного в БД документа, багато возився з цим. Вирішив узагальнити все знайдене, може комусь заощадить час.

Отже питання №1: Як відкрити форму ще не записаного документа (не заповнений на підставі)?

Відповідь: Щоб відкрити форму нам потрібно зв'язати її з посиланням об'єкта, але об'єкт ще не записаний. Багато хто намагається використовувати метод УстановітьСсилкуНового () але це не прокатує. Після довгих читань я зробив ось так:

НаКліенте
Процедура Команда (Команда)

Форма = ПолучітьФорму ( "Документ.НашДокумент .ФормаОб'екта");
ДанниеФорми = Форма.Об'ект; // Отримуємо об'єкт форми в змінну
ЗаполнітьДокументНаСервере (ДанниеФорми); // Заповнюємо документ на сервері
КопіроватьДанниеФорми (ДанниеФорми, Форма.Об'ект); // копіюємо наш об'єкт в об'єкт форми і далі відкриваємо її
Форма.Открить ();

// Можна використовувати безконтекстний виклик, оптимізуємо передачу даних

Функція ЗаполнітьДокументНаСервере (ДанниеФорми);

Док = ДанниеФормиВЗначеніе (ДанниеФорми. Тип ( "ДокументОб'ект.НашДокумент")); // Отримуємо об'єкт з даних форми АБО

// Заповнюємо реквізити об'єкта або інші дії ********

ЗначеніеВДанниеФорми (Док, ДанниеФорми); // Кладемо назад в об'єкт форми вже створений документ

2. Як відкрити форму вже записаного документа?

Тут є два методи ОткритьФорму () або ОткритьЗначеніе (). В обох випадках потрібно передавати посилання на записаний документ.

НаКліенте
Процедура Команда (Команда)

На сервері
Функція ЗаполнітьДокументНаСервере ()

// Використовуємо метод створити

НовийОб'ект = Документи. НашДокумент. СоздатьДокумент ();

НовийОб'ект. Записати (); // Обов'язково записуємо

На унікальність матеріалу не претендую, сам тільки "початківець" так що якщо щось не так - критикуйте!

Схожі статті