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

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

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

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

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

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

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


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


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

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

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

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

Но как вариант, таким же макаром, через параметры просто передавать значения туда сюда..не объекта, а просто заполнять форму
9. independ 172 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 172 06.12.18 20:32 Сейчас в теме
(12) при закрытии второй формы можно использовать тот же трюк
КопироватьДанныеФормы(Объект,ВладелецФормы.Объект);
ВладелецФормы.ОбновитьОтображениеДанных
3. Boneman 210 06.12.18 15:37 Сейчас в теме
да еще в форме настроек в при создании на сервере, этот параметр обрабатывай
Если Параметры.Свойство("ТекущийОбъект") Тогда

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

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

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

Вакансии

Разработчик 1С
Москва
зарплата от 100 000 руб. до 160 000 руб.
Полный день

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

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

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

Senior 1C Developer ЛЮБОЙ ГОРОД
Москва
зарплата от 80 000 руб.
Полный день