ZenBi @ 12.08.22, 14:08
,
Так можна ж і не відкривати форму.
Наведу приклад як я заповнював форму з викликом методів форми. Завдання було - заповнити і відкрити форму нового документа без збереження в базі. Думаю щось з того можна буде використати і вам:
ПарамФормы = Новый Структура;
Форма = ПолучитьФорму("Документ.РеализацияТоваровУслуг.Форма.ФормаДокументаОбщая", ПарамФормы);
ДанныеФормы = Форма.Объект;
массивТоваров = Новый Массив(); // масив структур, для заповнення ТЧ
ДанныеФормы.Организация = Объект.Организация;
ДанныеФормы.Контрагент = Контрагент;
ДанныеФормы.Товары.Очистить();
ЗаполнитьРННаСервере(ДанныеФормы, массивТоваров);
КопироватьДанныеФормы(ДанныеФормы, Форма.Объект); // копіюємо дані форми в об'єкт форми і далі відкриваємо її
Форма.ПриИзмененииЦеныИВалюты(ДанныеФормы.ВалютаДокумента, ДанныеФормы.КурсВзаиморасчетов, ДанныеФормы.КратностьВзаиморасчетов); // Щоб викликалось "УправлениеФормой" і перерахувались підсумки
Форма.Открыть();
Суть в тому, що дані форми можна заповнити потрібними нам значеннями (в тому числі і на сервері) і передати назад у форму, де вони опрацюються вбудованими методами. У моєму випадку - я далі показую форму користувачу і він вирішує чи зберігати ці дані чи ні, а у вашому - можна не відкриваючи форму просто забрати назад перераховані дані. Мало б спрацювати.
Доповню ще: найгірший випадок у мене був при заповнені табеля, там метод перерахунку - не експортний, і викликати його зовні було неможливо ніяк. Тому прийшлось через розширення додати у форму ще два метода, ось так:
&НаКлиенте
// Для можливості оновленя (перезаповнення) табличної частини при завантажені табеля з файлу
Процедура ОбновитьДанные() Экспорт
ОбновитьДанныеНаСервере();
КонецПроцедуры //ОбновитьДанные()
&НаСервере
Процедура ОбновитьДанныеНаСервере()
УчетРабочегоВремениФормы.ТабельПослеЗаписиНаСервере(ЭтаФорма, Неопределено, Неопределено);
КонецПроцедуры //ОбновитьДанныеНаСервере()