1. TOKAPEB 5 06.12.18 14:02 Сейчас в теме

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

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

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

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

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

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


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


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

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

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

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

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

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


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


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

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

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

КонецЕсли;
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Москва
зарплата от 140 000 руб. до 140 000 руб.
Полный день

Программист 1С
Москва
зарплата от 120 000 руб. до 130 000 руб.
Полный день

Программист 1С
Санкт-Петербург
Полный день

Бизнес-аналитик 1С ERP
Пермь
зарплата от 80 000 руб.
Полный день

Программист 1С
Нижний Новгород
зарплата до 120 000 руб.
Полный день