Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Обновление данных в ТП (число прочтений - 2680 )
droff
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 20
Зарегистрирован: 17. Августа 2010
Обновление данных в ТП
13. Сентября 2012 :: 09:06
Печать  
Добрый день, коллеги.
Прошу совета.
Есть форма, на ней расположены два ТП. Необходимо сделать так, чтобы при выборе строки в одном ТП менялось значение параметра запроса для второго ТП и, соответственно, менялось его содержимое.
Я реализовал все так:
Код
Выбрать все
	ТП = ОбъектФорма.СоздатьЭлементУправления("ТабличноеПоле", "ТаблицаПроизводителей"); // таблица производителей
	ТП.СтильЗаголовков = 1;
	ТП.РежимВыделения = 1;
	ТП.РежимВыделенияСтроки = 1;
	ТП.ИзменятьПозициюКолонок = 0;

	Колонка = ТП.Колонки.Добавить("ИД");
	Колонка.Данные = "ИД";
	Колонка.Заголовок = "ИД";
	Колонка.Видимость = 0;
	Колонка = ТП.Колонки.Добавить("Производитель");
	Колонка.Данные = "Производитель";
	Колонка.Заголовок = "Фирма";

	ТП.ПоставщикДанных = СоздатьОбъект("ПоставщикДанныхODBC.MSSQL");
	ТП.ПоставщикДанных.БазаДанных = глПодключениеКFirebird;
	ТекстЗапроса =
	"SELECT
	|	MNFID AS ИД,
	|	DESCR AS Производитель
	|FROM MNFLIST";
	ТП.ПоставщикДанных.УстТекстЗапроса(ТекстЗапроса);
	ТП.ПоставщикДанных.УстКлючПорядка("Производитель, ИД");
	ТП.ОбновитьСтроки();
	ТП.ПоставщикДанных.Поля.Получить("Производитель").ТипБыстрогоПоиска = 1;

	ТП2 = ОбъектФорма.СоздатьЭлементУправления("ТабличноеПоле", "ТаблицаТоваров"); // таблица неоригинальных товаров
	ТП2.СтильЗаголовков = 1;
	ТП2.РежимВыделения = 1;
	ТП2.РежимВыделенияСтроки = 1;
	ТП2.ИзменятьПозициюКолонок = 0;
	ТП2.ВертСкроллер = 1;

	Колонка = ТП2.Колонки.Добавить("КодПоставщика");
	Колонка.Данные = "КодПост";
	Колонка.Заголовок = "Код";
	Колонка.Ширина = 20;
	Колонка = ТП2.Колонки.Добавить("Наименование");
	Колонка.Данные = "Наименование";
	Колонка.Заголовок = "Наименование";

	ТП2.ПоставщикДанных = СоздатьОбъект("ПоставщикДанныхODBC.MSSQL");
	ТП2.ПоставщикДанных.БазаДанных = глПодключениеКFirebird;
	ТекстЗапроса =
	"SELECT
	|	ART.SCODE AS КодПост,
	|	NAMELIST.DESCR AS Наименование
	|FROM
	|	ART
	|INNER JOIN
	|	NAMELIST ON NAMELIST.NAMEID = ART.NAMEID
	|WHERE
	|	ART.MNFID = :ИДПроизводителя";
	ТП2.ПоставщикДанных.УстановитьТекстовыйПараметр("ИДПроизводителя", ТП.ТекущиеДанные.ИД);
	ТП2.ПоставщикДанных.УстТекстЗапроса(ТекстЗапроса);
	ТП2.ПоставщикДанных.УстКлючПорядка("КодПост, Наименование");
	ТП2.ОбновитьСтроки();
	ТП2.ПоставщикДанных.Поля.Получить("КодПост").ТипБыстрогоПоиска = 1;

 


Код
Выбрать все
Процедура ТаблицаПроизводителейПриАктивизацииСтроки()
ТП2.ПоставщикДанных.УстановитьТекстовыйПараметр("ИДПроизводителя", ТП.ТекущиеДанные.ИД);
ТП2.ПоставщикДанных.Обновить();
КонецПроцедуры 



К сожалению, обновление данных в ТП не происходит. Что я делаю неправильно?
  
Наверх
 
IP записан
 
antoneus
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 54
Зарегистрирован: 16. Марта 2009
Пол: Мужской
Re: Обновление данных в ТП
Ответ #1 - 13. Сентября 2012 :: 09:49
Печать  
Цитата из документации к поставщику данных: "Текстовые параметры должны быть установлены до установки текста запроса.".
Или каждый раз заново устанавливать текст запроса или рулить через параметры.
  
Наверх
 
IP записан
 
droff
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 20
Зарегистрирован: 17. Августа 2010
Re: Обновление данных в ТП
Ответ #2 - 13. Сентября 2012 :: 11:15
Печать  
Собственно, так и сделано.
Сначала УстановитьТекстовыйПараметр, затем УстТекстЗапроса.
  
Наверх
 
IP записан
 
pavel_tr
Senior Member
****
Отсутствует



Сообщений: 279
Местоположение: Казань
Зарегистрирован: 14. Октября 2006
Пол: Мужской
Re: Обновление данных в ТП
Ответ #3 - 13. Сентября 2012 :: 11:35
Печать  
Текстовый параметр устанавливается один раз - до установки текста запроса поставщику. Вам нужно или переназначать текст запроса, а не только параметр, или рулить параметрами поставщика через Парметры.Установить(), предварительно изменив соответствующим образом текст запроса
  
Наверх
 
IP записан
 
zk96
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 320
Местоположение: Киев
Зарегистрирован: 15. Ноября 2009
Пол: Мужской
Re: Обновление данных в ТП
Ответ #4 - 13. Сентября 2012 :: 11:54
Печать  
Попробуй так:

Код
Выбрать все
Процедура ТаблицаПроизводителейПриАктивизацииСтроки()
	__ПоставщикДанных = ТП2.ПоставщикДанных;
	ТП2.ПоставщикДанных = "";
	__ПоставщикДанных.УстановитьТекстовыйПараметр("ИДПроизводителя", ТП.ТекущиеДанные.ИД);
	__ПоставщикДанных.УстТекстЗапроса(ТекстЗапроса);
	__ПоставщикДанных.УстКлючПорядка("КодПост, Наименование");
	ТП2.ПоставщикДанных = __ПоставщикДанных;
	ТП2.ОбновитьСтроки();

КонецПроцедуры
 

  
Наверх
 
IP записан
 
zk96
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 320
Местоположение: Киев
Зарегистрирован: 15. Ноября 2009
Пол: Мужской
Re: Обновление данных в ТП
Ответ #5 - 13. Сентября 2012 :: 12:00
Печать  
Хотя, как выше написали, практичнее использовать параметры.
  
Наверх
 
IP записан
 
droff
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 20
Зарегистрирован: 17. Августа 2010
Re: Обновление данных в ТП
Ответ #6 - 13. Сентября 2012 :: 14:45
Печать  
Всем спасибо.
  
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: Обновление данных в ТП
Ответ #7 - 14. Сентября 2012 :: 02:03
Печать  
droff писал(а) 13. Сентября 2012 :: 09:06:
Добрый день, коллеги.
Прошу совета.
Есть форма, на ней расположены два ТП. Необходимо сделать так, чтобы при выборе строки в одном ТП менялось значение параметра запроса для второго ТП и, соответственно, менялось его содержимое.
Вот же .... редиска ... Сколько раз надо объяснить, чтобы пропало желание запутывать? Напомню, что у ТП нет никаких реквизитов для запросов, а есть они только у ПД.ТП!
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать