Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
21 ноя 2024, 15:09

Заполнение табличной части из другой формы

Автор vladimir15921, 20 апр 2023, 08:25

0 Пользователей и 1 гость просматривают эту тему.

vladimir15921

Добрый день, есть задача: заполнить табличную часть в документе через внешнюю форму обработки, для этого создал новую форму с реквизитом "табличный документ", в который заношу Номенклатуру и количество, далее не пойму как передать в основную форму документа данные из табличного документа новой формы.

Открываю новую форму таким образом.

ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ДокСсылка", Объект.Ссылка);
ОткрытьФорму("Обработка.ЗаполнениеТЧ.Форма", ПараметрыФормы,,,,,,РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);

Afinogen

читайте синтксис помощник про "открытьФорму"

ОткрытьФорму (OpenForm)
Вариант синтаксиса: По имени
Синтаксис:
ОткрытьФорму(<ИмяФормы>, <Параметры>, <Владелец>, <Уникальность>, <Окно>, <НавигационнаяСсылка>, <ОписаниеОповещенияОЗакрытии>, <РежимОткрытияОкна>)


почитайте про ОписаниеОповещения

Afinogen

в  вашем случае вариант кода должен быть примерно такой

//1. для кнопки открытия в основном документе нужно прописать

ОписаниеОп = Новый ОписаниеОповещения("ПослеЗакрытияФормыПодбора",ЭтаФорма,Неопределено)

ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ДокСсылка", Объект.Ссылка);
ОткрытьФорму("Обработка.ЗаполнениеТЧ.Форма", ПараметрыФормы,[b]ЭтаФорма[/b],,,,ОписаниеОп,РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);


//2. Процедура в которую будет передаваться результат закрытия формы подбора, должна быть ОЯЗАТЕЛЬНО экспортной

&НаКлиенте
Процедура ПослеЗакрытияформыПодбора(Результат,ДопПараметры = Неопределено) Экспорт

//Здесь в переменной "Результат" будет результат закрытия формы подбора

КонецПроцедуры

//3. Для формы подбора делаете процедуру закрытия
&НаКлиенте
Процедура ЗакрытьФорму()

Закрыть(ПараметрЗакрытия);

//ПараметрЗакрытия - то что  вам нужно передать в основную форму

КонецПроцедуры

Afinogen

То же самое можно и через метод "оповестить" сделать но лично я сталкивался с ситуациями когда у двух пользователь открыта форма одного и того же документа , меняет данные пользователь1 у себя а данные меняются у всех,  по этому через "Закрыть" как по мне так надежнее

vladimir15921

Afinogen, Спасибо.

Но что-то не так видимо делаю, в модуле формы документа я прописал
&НаКлиенте
Процедура ЗаполнитьТЧ(Команда)
ОписаниеОп = Новый ОписаниеОповещения("ПослеЗакрытияФормыПодбора",ЭтаФорма,Неопределено);
ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("ДокСсылка", Объект.Ссылка);
ОткрытьФорму("Обработка.ЗаполнениеТЧ.Форма", ПараметрыФормы,ЭтаФорма,,,,ОписаниеОп,РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры   

&НаКлиенте
Процедура ПослеЗакрытияформыПодбора(Результат,ДопПараметры = Неопределено) Экспорт

Сообщить(Результат);
КонецПроцедуры


В модуле второй формы, приЗакрытии прописал код

&НаКлиенте
Процедура ПриЗакрытии(ЗавершениеРаботы)
ПараметрЗакрытия = "Пример";
Закрыть(ПараметрЗакрытия);
КонецПроцедуры


Но в этом случае выдает ошибку

Ошибка при вызове метода контекста (Закрыть)
{Обработка.ЗаполнениеТЧ.Форма.Форма.Форма(102)}:Закрыть(ПараметрЗакрытия);
{Обработка.ЗаполнениеТЧ.Форма.Форма.Форма(110)}:ЗакрытьФорму()

по причине:
Недопустимая операция для неоткрытой формы




Afinogen


Afinogen

сделайте свою кнопку закрытия во второй форме, а не пользуйтесь стандартной

vladimir15921

Afinogen, Спасибо большое все получилось!!!

Похожие темы (5)

Рейтинг@Mail.ru

Поиск