Открытие второй формы внешней обработки на управляемых формах с выведением табличной части обработки.

1. TOKAPEB 5 06.12.18 14:02 Сейчас в теме
Добрый день, коллеги!
Есть внешний отчет, результат которого выводится в основную форму.
При формировании отчета заполняется также табличная часть обработки "СписокМПЗ"
На этой форме есть кнопка открытия второй формы, на которую выведена эта табличная часть - "СписокМПЗ".

Но при открытии второй формы (использую
 ОткрытьФорму("ВнешнийОтчет.ИнвентаризационнаяОписьТМЦ.Форма.ФормаНастроек",,ЭтаФорма)

, табличная часть пустая. Т.е. нет привязки к основной форме.

Мне нужно, чтобы открывалась вторая форма с заполненной табличной частью и я мог ее редактировать, и эти изменения должны сохраняться.
По теме из базы знаний
Найденные решения
9. independ 1520 06.12.18 17:07 Сейчас в теме
(1) Можно так
	Форма = ПолучитьФорму("ВнешнийОтчет.ИнвентаризационнаяОписьТМЦ.Форма.ФормаНастроек",,ЭтаФорма);
    КопироватьДанныеФормы(Объект,Форма.Объект);
    Форма.Открыть();

Если используется внешний отчет, то вместо Объект - Отчет
Suslik_Johns; TOKAPEB; +2 Ответить
11. Sashares 34 06.12.18 17:28 Сейчас в теме
(10)
Форма действительно открывается с заполненной табличной частью. Но при изменении табличной части и закрытии второй формы - изменения не сохраняются.


А почему должны?
Формы обработок, отчетов не привязаны к объекту. Контекст объекта между ними не передается.
Как вы передали во вторую форму данные ТЧ первой формы, так и при закрытии второй формы нужно возвращать данные для перезаполнения первой формы.
Suslik_Johns; TOKAPEB; +2 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Boneman 298 06.12.18 15:36 Сейчас в теме
(1) в этой второй форме, сделай основной реквизит объект, с типом ОбработкаОбъект


в первой форме, открываешь ее с параметрами
	ПараметрыФормы = Новый Структура;
	ПараметрыФормы.Вставить("ТекущийОбъект",Объект);
ОткрытьФорму("ВнешнийОтчет.ИнвентаризационнаяОписьТМЦ.Форма.ФормаНастроек", ПараметрыФормы, ЭтаФорма,,,,Оповещение,РежимОткрытияОкнаФормы.БлокироватьВесьИнтерфейс);
4. TOKAPEB 5 06.12.18 15:53 Сейчас в теме
(2) Это внешний отчет. Во второй форме основной реквизит - это "ВнешнийОтчет.ИнвентаризационнаяОписьТМЦ".
Строка
ОтчетОбъект = ДанныеФормыВЗначение(Параметры.ТекущийОбъект, Тип("ВнешнийОтчет.ИнвентаризационнаяОписьТМЦ"));

дает ошибку - тип не определен
5. Boneman 298 06.12.18 16:17 Сейчас в теме
(4) там же подсказка выдается,
попробуй "ВнешнийОбъект"
или отладчиком встань, у этого текущего объекта какой тип покажет
6. Boneman 298 06.12.18 16:21 Сейчас в теме
7. TOKAPEB 5 06.12.18 16:24 Сейчас в теме
(6)
{ВнешнийОтчет.ИнвентаризационнаяОписьТМЦ.Форма.ФормаНастроек.Форма(13)}: Ошибка при вызове метода контекста (ДанныеФормыВЗначение)
ОтчетОбъект = ДанныеФормыВЗначение(Параметры.ТекущийОбъект, Тип("ВнешнийОбъект"));
по причине:
Несоответствие типов (параметр номер '2')

{ВнешнийОтчет.ИнвентаризационнаяОписьТМЦ.Форма.ФормаНастроек.Форма(13)}: Ошибка при вызове метода контекста (ДанныеФормыВЗначение)
ОтчетОбъект = ДанныеФормыВЗначение(Параметры.ТекущийОбъект, Тип("ОтчетОбъект"));
по причине:
Недопустимое значение параметра (параметр номер '1')
8. Boneman 298 06.12.18 16:58 Сейчас в теме
(7) да действительно с внешними не прокатывает.

Вопрос открыт.

Но как вариант, таким же макаром, через параметры просто передавать значения туда сюда..не объекта, а просто заполнять форму
9. independ 1520 06.12.18 17:07 Сейчас в теме
(1) Можно так
	Форма = ПолучитьФорму("ВнешнийОтчет.ИнвентаризационнаяОписьТМЦ.Форма.ФормаНастроек",,ЭтаФорма);
    КопироватьДанныеФормы(Объект,Форма.Объект);
    Форма.Открыть();

Если используется внешний отчет, то вместо Объект - Отчет
Suslik_Johns; TOKAPEB; +2 Ответить
10. TOKAPEB 5 06.12.18 17:20 Сейчас в теме
(9)
Форма = ПолучитьФорму("ВнешнийОтчет.ИнвентаризационнаяОписьТМЦ.Форма.ФормаНастроек",,ЭтаФорма); КопироватьДанныеФормы(Объект,Форма.Объект); Форма.Открыть();


Почти получилось. Форма действительно открывается с заполненной табличной частью. Но при изменении табличной части и закрытии второй формы - изменения не сохраняются.
11. Sashares 34 06.12.18 17:28 Сейчас в теме
(10)
Форма действительно открывается с заполненной табличной частью. Но при изменении табличной части и закрытии второй формы - изменения не сохраняются.


А почему должны?
Формы обработок, отчетов не привязаны к объекту. Контекст объекта между ними не передается.
Как вы передали во вторую форму данные ТЧ первой формы, так и при закрытии второй формы нужно возвращать данные для перезаполнения первой формы.
Suslik_Johns; TOKAPEB; +2 Ответить
12. TOKAPEB 5 06.12.18 17:35 Сейчас в теме
(10)
Ладно, думаю нужно использовать одну форму и две закладки. Попробую так. Всем спасибо!
13. independ 1520 06.12.18 20:32 Сейчас в теме
(12) при закрытии второй формы можно использовать тот же трюк
КопироватьДанныеФормы(Объект,ВладелецФормы.Объект);
ВладелецФормы.ОбновитьОтображениеДанных
3. Boneman 298 06.12.18 15:37 Сейчас в теме
да еще в форме настроек в при создании на сервере, этот параметр обрабатывай
Если Параметры.Свойство("ТекущийОбъект") Тогда

ОбрОбъект = ДанныеФормыВЗначение(Параметры.ТекущийОбъект,Тип("ОбработкаОбъект.ИмяОбратоким"));

ЗначениеВДанныеФормы(ОбрОбъект,Объект)

КонецЕсли;
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот