Отображение данных на форме внешней обработки УФ

1. VickWood 25.03.18 18:18 Сейчас в теме
Добрый день!
Помогите разобраться с такой проблемой:
Делаю внешнюю обработку (которая будет заполнять тч документа), в обработке есть ТЧ, которая связана с элементом формы. Программно заполняю ТЧ обработки, но на форму данные не выводятся.
Подскажите, в чем может быть проблема?
&НаКлиенте
Процедура ВыполнитьКоманду(ИдентификаторКоманды, ОбъектыНазначенияМассив) Экспорт
	
	Форма = ПолучитьФорму("ВнешняяОбработка.ЗаполнениеТЧ_ТоварыСпрВнутренниеДокументы.Форма.ФормаЗаполненияТоваров"); 
	Форма.Открыть();
	
	// определяем  виды внутренних документов
	Заявка = ОпределитьВидДокумента("Заявка на материал");
	Подзаявка = ОпределитьВидДокумента("Подзаявка на материал");
	Отчет = ОпределитьВидДокумента("Отчет об исполнении Заявки");
	
	Документ = ВладелецФормы.Объект.Ссылка;
	ТипСвязи = ОпределитьТипСвязи(Подзаявка, Заявка);

	ЗаполнитьТабличнуюЧастьОбработки(Документ, ТипСвязи);
	
	ОбновитьИнтерфейс();
	Форма.ОбновитьОтображениеДанных();
	
		
КонецПроцедуры

&НаСервере
Процедура  ЗаполнитьТабличнуюЧастьОбработки(Документ, ТипСвязи)
	
	Запрос = Новый Запрос;
	Запрос.УстановитьПараметр("Документ", Документ);
	Запрос.УстановитьПараметр("ТипСвязи", ТипСвязи);
	Запрос.Текст =
	"ВЫБРАТЬ
	|	СвязиДокументов.Документ КАК ДокументОснование,
	|	СвязиДокументов.ТипСвязи КАК ТипСвязи,
	|	СвязиДокументов.СвязанныйДокумент КАК Документ,
	|	СвязиДокументов.ДатаУстановки КАК ДатаУстановки
	|ИЗ
	|	РегистрСведений.СвязиДокументов КАК СвязиДокументов
	|ГДЕ
	|	СвязиДокументов.СвязанныйДокумент = &Документ
	|	И СвязиДокументов.ТипСвязи = &ТипСвязи";
	
	Выборка = Запрос.Выполнить().Выбрать();
	
	ДокументОснование = ?(Выборка.Следующий(), Выборка.ДокументОснование, Неопределено);

	
	Если ДокументОснование = Неопределено Тогда
		
		Сообщить(Выборка.Документ.Наименование + " не содержит связанных документов!");
		
	Иначе
			
			Для Каждого ТекущаяСтрока Из ДокументОснование.Товары Цикл
				Строка = Объект.Товары.Добавить();
				ЗаполнитьЗначенияСвойств(Строка, ТекущаяСтрока);
			КонецЦикла;
			
			
	КонецЕсли;
	
	
КонецПроцедуры


Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
11. timeforlive 16 26.03.18 09:18 Сейчас в теме
(1) Посмотрите метод ОбновитьОтображениеДанных().
Обязательно необходимо указать ТЧ в качестве параметра.

Параметры:

<ОбновлятьЭлементы> (необязательный)

Тип: ГруппаФормы; ТаблицаФормы; ПолеФормы; Массив.

Описание:

В принудительном порядке обновляет содержание элементов управления.
Полезен при изменении значений реквизитов формы вне формы, в тот момент, когда форма отображается на экране.

Доступность:

Тонкий клиент, веб-клиент, толстый клиент, мобильное приложение(клиент).
13. herfis 500 26.03.18 12:08 Сейчас в теме
(1) В УФ реквизиты обработки (включая табличную часть обработки) потеряли всякий смысл. Не используйте их. Суть в том, что они существуют только для объекта обработки, а в модели тонкого клиента объект существует только на сервере, а сам сервер - стейтлесс (не хранит состояния). Т.е. объект создается только на время серверного вызова по данным управляемой формы и уничтожается при окончании серверного вызова. Другими словами, заполненная вами ТЧ обработки практически сразу же очищается. Аналогичная фигня - с переменными модуля. Они "живы" только в течение серверного вызова.
Создавайте таблицу в самой управляемой форме и заполняйте именно ее, а ТЧ обработки - удалите. Таблица формы является частью контекста формы. В УФ только контекст формы "живет" между клиентом и сервером.
Рекомендую прочитать, если еще не читали.
14. pwp2008 27.03.18 03:27 Сейчас в теме
(1)Ну столько всего пишут в советах. Нужно попробоватьСам вот недавно ломал голову над этим. Проблема, конечно, тут в моем незнании аппарата. ТЧ формируется на сервере в модуле объекта, т.е. обработки. Вернуть ТЧ нужно на клиент в элемент "Таблица". Заклинание выглядит так :
ЗначениеВДанныеФормы(ЭтотОбъект, Форма.Отчет); // ну это условно
Кто бы мне это подсказал 2 дня назад.
Прикрепить файл почему то не получается, пишу здесь.
Таки прирепить все таки получилось...
&НаСервере
Процедура Выборка_01НаСервере()
// По запросу выбирает нужные данные в табл.часть Обработки
ТекОбъект = РеквизитФормыВЗначение("Объект");
ТекОбъект.Выборка_01();
//ЗначениеВДанныеФормы(ЭтотОбъект, Форма.Отчет);
// преобразование табличной части обработки в Таблицу на управляемой форме------
ЗначениеВДанныеФормы(ТекОбъект.Список_01,Объект.Список_01);
//------------------------------------------------------------------------------------------
КонецПроцедуры

&НаКлиенте
Процедура Выборка_01(Команда)
	Выборка_01НаСервере();
	//Сообщить("Выборка выполнена");
КонецПроцедуры
Прикрепленные файлы:
УФ_01.doc
Aspire1C; nico2; +2 Ответить
15. pwp2008 03.04.18 21:44 Сейчас в теме
(14) Похоже у открывшему эту тему пропал интерес к этому вопросу, а ведь предложение :
// ЗначениеВДанныеФормы(ЭтотОбъект, Форма.Отчет); // - нашел в конфигурации
// преобразование табличной части обработки в Таблицу на управляемой форме------

ЗначениеВДанныеФормы(ТекОбъект.Список_01,Объект.Список_01);

реально работает и выдает данные реквизита объекта в таблицу на управляемой форме. Проверено.
2. besica 25.03.18 19:40 Сейчас в теме
Делаю внешнюю обработку (которая будет заполнять тч документа), в обработке есть ТЧ, которая связана с элементом формы.


 Строка = Объект.Товары.Добавить();


А объект это что в данном случае?
3. VickWood 25.03.18 19:44 Сейчас в теме
(2) Объект - это сама внешняя обработка
4. besica 25.03.18 19:52 Сейчас в теме
Вы табличную часть в обработке пытаетесь заполнить из какого то документа?
А почему бы ее не заполнять из формы обработки?
5. besica 25.03.18 19:57 Сейчас в теме
"Процедура ЗаполнитьТабличнуюЧастьОбработки(Документ, ТипСвязи)"
А где определена эта процедура? если отладчиком посмотреть объект в этом коде - мне кажется там совсем не обработка.
6. VickWood 25.03.18 20:09 Сейчас в теме
(5)
А где определена эта процедура? если отладчиком посмотреть объект в этом коде - мне кажется там совсем не обработка.

в модуле формы обработки.

(4)
Вы табличную часть в обработке пытаетесь заполнить из какого то документа?


идея такая: к документу подключается внешняя обработка. при нажатии на кнопку, выходит форма этой обработки заполненная данными из другого документа, эти данные корректируются в форме обработки и уже из формы эти данные должны будут перенестись в документ из которого вызывается обработка.
7. besica 25.03.18 20:35 Сейчас в теме
А версия платформы какая? Почему бы не сделать через оповещения?

А выполнить команду это тоже на форме обработки?
 Форма = ПолучитьФорму("ВнешняяОбработка.ЗаполнениеТЧ_ТоварыСпрВнутренниеДокументы.Форма.ФормаЗаполненияТоваров"); 
    Форма.Открыть();

А это что за форма тогда?
8. besica 25.03.18 20:51 Сейчас в теме
https://infostart.ru/public/236382/
и где то у Гилева было прекрасное короткое описание открытия формы с параметрами через оповещения
9. imispb 5 25.03.18 21:06 Сейчас в теме
Может так получится:
ОтобразитьИзменениеДанных(СсылкаНаОбъект, ВидИзмененияДанных.Добавление);
10. user596430_gleb21 3 25.03.18 21:39 Сейчас в теме
Посмотрите в УТ 11 обработку "ЗаполнениеКорректировкиНазначения". Там реализован подобный функционал.
12. ronhard 26.03.18 10:45 Сейчас в теме
Передавайте необходимые параметры в открываемую форму и уже в модуле открываемой формы проводите заполнение ТЧ, которая связана с элементом открываемой формы (собственно в процедуре "ПриСозданииНаСервере"), а иначе "Объект" в открывающей форме и "Объект" в открываемой форме это разные сущности.
Оставьте свое сообщение

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