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

Как передать табличную часть документа в другую форму

Автор MKozzlik, 13 дек 2012, 16:32

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

MKozzlik

Добрый день. Суть задачи такова:
Есть самописный документ ЧекЛист, у документа есть табличная часть "ТаблицаПроверяющих". Далее на форму элемента добавляем кнопку "Редактировать" при нажатии на которую открывается еще дополнительная форма с табличным полем в котором отображается ТЧ нашего документа.У  доп формы с табличной частью создал реквизит с типом ДокументОбъект.ЧекЛист и в Данных табличного поля прописал: Реквизит.ТаблицаПроверяющих.
При нажатии на кнопку "Редактировать" прописываю: 
ФормаРедактирования = ПолучитьФорму("ФормаСпискаПроверяющих");
ФормаРедактирования.Открыть();


При открытии формы вижу что в табличном поле появились колонки ТЧ, но данных в них нет, она пустая, хотя данные в этой ТЧ имеются. Как это можно исправить?

Nenaviwu1C

Прежде чем открыть форму заполни её из ТЧ документа(если имена реквизитов одинаковые тебе поможет функция ЗаполнитьЗначенияСвойств.Потом открой(советую модально) и все
Добавлено: 13 дек 2012, 16:51


Цитата: Nenaviwu1C от 13 дек 2012, 16:49
Прежде чем открыть форму заполни её из ТЧ документа(если имена реквизитов одинаковые тебе поможет функция ЗаполнитьЗначенияСвойств.Потом открой(советую модально) и все
цикл на Тч документа пиши.И пропиши когда открываешь ФормаРедактирования.ВладелецФормы=этаформа

MKozzlik

Так примерно понятно. Пишу такой код на нажатие кнопки "Редактировать", ТаблицаПроверяющих это ТЧ документа:
   ФормаРедактирования = ПолучитьФорму("ФормаСпискаПроверяющих");
   ФормаРедактирования.ВладелецФормы = ЭтаФорма;
   Для каждого Строка из ТаблицаПроверяющих Цикл
      ЗаполнитьЗначенияСвойств( ??? ,Строка);
   КонецЦикла;
   ФормаРедактирования.ОткрытьМодально();

Но как обратится к приемнику? пробовал строку: ЗаполнитьЗначенияСвойств( ФормаРедактирования.ТабличноеПоле1.Добавить() ,Строка);
не вышло.. как правильно следует написать?

Nenaviwu1C

Цитата: MKozzlik от 13 дек 2012, 17:15
Так примерно понятно. Пишу такой код на нажатие кнопки "Редактировать", ТаблицаПроверяющих это ТЧ документа:
   ФормаРедактирования = ПолучитьФорму("ФормаСпискаПроверяющих");
   ФормаРедактирования.ВладелецФормы = ЭтаФорма;
   Для каждого Строка из ТаблицаПроверяющих Цикл
      ЗаполнитьЗначенияСвойств( ??? ,Строка);
   КонецЦикла;
   ФормаРедактирования.ОткрытьМодально();

Но как обратится к приемнику? пробовал строку: ЗаполнитьЗначенияСвойств( ФормаРедактирования.ТабличноеПоле1.Добавить() ,Строка);
не вышло.. как правильно следует написать?

Нстр =ФормаРедактирования.НазваниеТчВКоторуюБудешьЗагружать.Добавить();
ЗаполнитьЗначенияСвойств( Нстр ,Строка);
Добавлено: 13 дек 2012, 18:23


Цитата: Nenaviwu1C от 13 дек 2012, 18:21
Цитата: MKozzlik от 13 дек 2012, 17:15
Так примерно понятно. Пишу такой код на нажатие кнопки "Редактировать", ТаблицаПроверяющих это ТЧ документа:
   ФормаРедактирования = ПолучитьФорму("ФормаСпискаПроверяющих");
   ФормаРедактирования.ВладелецФормы = ЭтаФорма;
   Для каждого Строка из ТаблицаПроверяющих Цикл
      ЗаполнитьЗначенияСвойств( ??? ,Строка);
   КонецЦикла;
   ФормаРедактирования.ОткрытьМодально();

Но как обратится к приемнику? пробовал строку: ЗаполнитьЗначенияСвойств( ФормаРедактирования.ТабличноеПоле1.Добавить() ,Строка);
не вышло.. как правильно следует написать?

Нстр =ФормаРедактирования.НазваниеТчВКоторуюБудешьЗагружать.Добавить();
ЗаполнитьЗначенияСвойств( Нстр ,Строка);
Ты же должен сперва добавить,а потом заполнять

MKozzlik

Пишу так:
ФормаРедактирования = ПолучитьФорму("ФормаСпискаПроверяющих");
ФормаРедактирования.ВладелецФормы = ЭтаФорма;
Для каждого Строка из ТаблицаПроверяющих Цикл
   НовСтр = ФормаРедактирования.ТаблицаПроверяющих.Добавить();
   ЗаполнитьЗначенияСвойств(НовСтр, Строка);
КонецЦикла;

ФормаРедактирования.ОткрытьМодально();

Но у формы "ФормаРедактирования" нет табличной части, табличная часть "ТаблицаПроверяющих" - это реквизит всего документа. И соответственно при выполнении этого кода выходит ошибка: "Поле объекта не найдено (ТаблицаПроверяющих)"

Dethmontt

Цитата: MKozzlik от 14 дек 2012, 09:56Но у формы "ФормаРедактирования" нет табличной части, табличная часть "ТаблицаПроверяющих" - это реквизит всего документа.
Ты же сам ответил на свой вопрос!
Об = Документы.Док.СоздатьДокумент();
Стр = Об.ТаблиЧасть.Добавить();
Форма = Об.ПолучитьФорму("ИмяФормы",ЭтаФорма);
Форма.Открыть();
Если долго всматриваться в учебник...то в голову может прийти мысль его открыть!

MKozzlik

Цитата: Dethmontt от 14 дек 2012, 10:17
Цитата: MKozzlik от 14 дек 2012, 09:56Но у формы "ФормаРедактирования" нет табличной части, табличная часть "ТаблицаПроверяющих" - это реквизит всего документа.
Ты же сам ответил на свой вопрос!
Об = Документы.Док.СоздатьДокумент();
Стр = Об.ТаблиЧасть.Добавить();
Форма = Об.ПолучитьФорму("ИмяФормы",ЭтаФорма);
Форма.Открыть();

Не понял, т.е. мне программно создать ТЧ формы?

MKozzlik

Так до сих пор и не разобрался с этой проблемой, видимо чего-то не понимаю, может подскажете еще варианты?

Теги:

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

Рейтинг@Mail.ru

Поиск