Переключение на Главную Страницу Страницы: 1 2 [3] 4 5  ОтправитьПечать
Очень популярная тема (более 25 ответов) Помогите. Как сделать правильно? (число прочтений - 17019 )
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Помогите. Как сделать правильно?
Ответ #30 - 18. Апреля 2008 :: 13:15
Печать  
JohnyDeath писал(а) 18. Апреля 2008 :: 13:11:
Цитата:
типзначенияСтр(Колонки) = ""
типЗначенияСтр(_БазаТП.Колонки) = ""
ТипЗначенияСтр(Сам().Колонки) = ""


Ну вот и ответ Печаль
У тебя же в классе есть Перем Колонки Экспорт.
Тебе на это давно намекали Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Помогите. Как сделать правильно?
Ответ #31 - 18. Апреля 2008 :: 13:15
Печать  
artbear писал(а) 18. Апреля 2008 :: 13:11:
А теперь список всех Переменных класса.
Всю секцию до первой функции Улыбка

Перем _БазаТП Экспорт;
Перем _Конт;
Перем БД,Запрос;
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Помогите. Как сделать правильно?
Ответ #32 - 18. Апреля 2008 :: 13:19
Печать  
artbear писал(а) 18. Апреля 2008 :: 13:15:
JohnyDeath писал(а) 18. Апреля 2008 :: 13:11:
Цитата:
типзначенияСтр(Колонки) = ""
типЗначенияСтр(_БазаТП.Колонки) = ""
ТипЗначенияСтр(Сам().Колонки) = ""


Ну вот и ответ Печаль
У тебя же в классе есть Перем Колонки Экспорт.
Тебе на это давно намекали Улыбка

Нету. На основе чего вы это утверждаете?

Вот текст всего класса:
Код
Выбрать все
// ТПЗапросТЗ

Перем _БазаТП Экспорт;
Перем _Конт;
Перем БД,Запрос;

Функция Этот(Конт) Возврат Конт; КонецФункции
Функция Сам() Возврат Этот(Контекст) КонецФункции

//------------------------------------ ------------------------------------
Процедура Конструктор()
	_БазаТП = Этот(Контекст).ПолучитьБазовыйКласс("ТабличноеПоле");
КонецПроцедуры // Конструктор
//--------------------------------------------
Процедура СоздатьКолонкиПоИсточнику(тзСсылка, фИзменениеРазмера=1, фНомерСтроки=0) Экспорт
	Перем Заголовок, Ширина, Положение;
	Если фНомерСтроки=1 Тогда
		НоваяКолонка=_БазаТП.Колонки.Добавить("НомерСтроки");
		НоваяКолонка.Заголовок="№ строки";
		НоваяКолонка.Данные="НомерСтроки";
		НоваяКолонка.Ширина=30;
		НоваяКолонка.ИзменениеРазмера=фИзменениеРазмера;
	КонецЕсли;
	Для ъ=1 По тзСсылка.КоличествоКолонок() Цикл
		идКолонки=тзСсылка.ПолучитьПараметрыКолонки(ъ,,,, Заголовок, Ширина,, Положение);
		Если тзСсылка.ВидимостьКолонки(идКолонки)=0 Тогда Продолжить; КонецЕсли;
		//НоваяКолонка(тпСсылка, идКолонки, Заголовок, Ширина, ИзменениеРазмера, Положение, 0);
		Сообщить(""+идКолонки,"i");
		НоваяКолонка=_БазаТП.Колонки.Добавить(идКолонки);
		НоваяКолонка.Заголовок=Заголовок;
		НоваяКолонка.Данные=идКолонки;
		НоваяКолонка.ГоризонтальноеВыравнивание=Положение;
		НоваяКолонка.Ширина=?(Ширина>0, Ширина, 15)*6.2;
		НоваяКолонка.ИзменениеРазмера=фИзменениеРазмера;
	КонецЦикла;
КонецПроцедуры
//--------------------------------------------
Функция Выполнить(ТекстЗапроса, флОтладка=0) Экспорт
	Запрос.Отладка(флОтладка);
	Возврат Запрос.ВыполнитьИнструкцию(ТекстЗапроса);
КонецФункции	// Выполнить

//--------------------------------------------
Функция ВыполнитьИОтобразить(ТекстЗапроса, флОтладка=0) Экспорт
	тзИсточник=Сам().Выполнить(ТекстЗапроса, флОтладка);
	Сам().ПоставщикДанных = "";
//	НоваяКолонка=Сам().ПолучитьБазовыйКласс().Колонки.Добавить("Первая");
	//Сам().СоздатьКолонкиПоИсточнику(тзИсточник,1,1);
	Поставщик=СоздатьОбъект("ПоставщикДанныхТЗ");
	Поставщик.УстТаблицуЗначений(тзИсточник);
	Сам().ПоставщикДанных = Поставщик;

	//Сам().ОбновитьСтроки();
	Возврат тзИсточник;
КонецФункции// ВыполнитьИОтобразить
//--------------------------------------------
Процедура СоздатьКолонкуТП(идКолонки)   Экспорт
	НоваяКолонка=Сам().Колонки.Добавить(идКолонки);
	НоваяКолонка.Заголовок=идКолонки;
КонецПроцедуры
//--------------------------------------------
Процедура УстановитьТекстовыйПараметр(идПараметра,Параметр) Экспорт
	Запрос.УстановитьТекстовыйПараметр(идПараметра,Параметр);
КонецПроцедуры	// УстановитьТекстовыйПараметр
//--------------------------------------------
Функция Создать(идЭлементаНаформе, КонтФормы) Экспорт
	БД=СоздатьОбъект("OLEDBData");
	СтрокаСоединения="Provider=VFPOLEDB.1;Deleted=Yes;Data Source="+КаталогИБ()+";Mode=ReadWrite;Collating Sequence=Machine";
	Рез=БД.Соединение(СтрокаСоединения);
	Запрос=БД.СоздатьКоманду();

	_Конт=КонтФормы;
	Форма=СоздатьОбъект("Форма");
	//тпНаФорме=Форма.СоздатьЭлементУправленияНаФорме(_Конт.Форма, "ТабличноеПоле", идЭлементаНаформе);
	Возврат Форма.СоздатьЭлементУправленияНаФорме(_Конт.Форма, "ТабличноеПоле", идЭлементаНаформе);
КонецФункции// Создать 

  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Помогите. Как сделать правильно?
Ответ #33 - 18. Апреля 2008 :: 13:22
Печать  
ХЗ, Жень, но откуда-то у тебя Колонки переопределяются или наследуются в иерархии.

Цитата:
типзначенияСтр(Колонки) = ""

Откуда это берется?
Ведь не ошибку же выдает.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Помогите. Как сделать правильно?
Ответ #34 - 18. Апреля 2008 :: 13:26
Печать  
Короче, попробуй прикинуть, не на это ли нарвался: http://www.1cpp.ru/bugs/show_bug.cgi?id=3640
Там еще и ссылка на обсуждение есть.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Помогите. Как сделать правильно?
Ответ #35 - 18. Апреля 2008 :: 13:29
Печать  
kms писал(а) 18. Апреля 2008 :: 13:22:
Цитата:
типзначенияСтр(Колонки) = ""

Откуда это берется?
Ведь не ошибку же выдает.

Ага, я про это говорил.
И кстати, такой код работает, только если в модуле класса или внутри метода класса определено Перем Колонки Печаль
ИМХО п.2 - где-то в твоем методе Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Помогите. Как сделать правильно?
Ответ #36 - 18. Апреля 2008 :: 13:32
Печать  
artbear писал(а) 18. Апреля 2008 :: 13:29:
kms писал(а) 18. Апреля 2008 :: 13:22:
Цитата:
типзначенияСтр(Колонки) = ""

Откуда это берется?
Ведь не ошибку же выдает.

Ага, я про это говорил.
И кстати, такой код работает, только если в модуле класса или внутри метода класса определено Перем Колонки Печаль
ИМХО п.2 - где-то в твоем методе Улыбка

Неее, это вырезки из табло Отладчика (у нас же теперь есть возможность нормально заходить в отладку классов!  Подмигивание )
В модуле класса таких строк нет. Попробывал добавить - ес-но 1С начала ругаться.
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Помогите. Как сделать правильно?
Ответ #37 - 18. Апреля 2008 :: 13:34
Печать  
JohnyDeath писал(а) 18. Апреля 2008 :: 13:11:
Цитата:
типзначенияСтр(Колонки) = ""
типЗначенияСтр(_БазаТП.Колонки) = ""
ТипЗначенияСтр(Сам().Колонки) = ""


Лукавишь, нам не весь код показал Печаль
Покажи код, в котором участвовал приведенный выше код
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Помогите. Как сделать правильно?
Ответ #38 - 18. Апреля 2008 :: 13:34
Печать  
JohnyDeath писал(а) 18. Апреля 2008 :: 13:19:
     Возврат Форма.СоздатьЭлементУправленияНаФорме(_Конт.Форма, "ТабличноеПоле", идЭлементаНаформе);
КонецФункции// Создать


Так я же писал - создается на форме обычное ТП, не объект твоего класса  Печаль
  
Наверх
 
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Помогите. Как сделать правильно?
Ответ #39 - 18. Апреля 2008 :: 13:40
Печать  
а это разве не то же самое, что и вот тут: http://www.1cpp.ru/forum/YaBB.pl?num=1205656253 ?
  
Наверх
www  
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Помогите. Как сделать правильно?
Ответ #40 - 18. Апреля 2008 :: 13:43
Печать  
artbear писал(а) 18. Апреля 2008 :: 13:34:
JohnyDeath писал(а) 18. Апреля 2008 :: 13:11:
Цитата:
типзначенияСтр(Колонки) = ""
типЗначенияСтр(_БазаТП.Колонки) = ""
ТипЗначенияСтр(Сам().Колонки) = ""


Лукавишь, нам не весь код показал Печаль
Покажи код, в котором участвовал приведенный выше код

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

TP_Q_VT.rar ( 24 KB | Загрузки )
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Помогите. Как сделать правильно?
Ответ #41 - 18. Апреля 2008 :: 13:45
Печать  
ИМХО проблема упростилась по максимуму - телепатирование не помогает.
Поэтому все просто - пусть автор составит тест, в котором видно ошибку, мы проверим код и четко сможем разобраться.
Уверен, что тест сделать не проблема Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Помогите. Как сделать правильно?
Ответ #42 - 18. Апреля 2008 :: 13:47
Печать  
artbear писал(а) 18. Апреля 2008 :: 13:45:
ИМХО проблема упростилась по максимуму - телепатирование не помогает.
Поэтому все просто - пусть автор составит тест, в котором видно ошибку, мы проверим код и четко сможем разобраться.
Уверен, что тест сделать не проблема Улыбка

Блин, ну как Инет тормозит, ничего не успеваю написать, весь вечер меня опережают Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Помогите. Как сделать правильно?
Ответ #43 - 18. Апреля 2008 :: 13:49
Печать  
kiruha писал(а) 18. Апреля 2008 :: 13:34:
JohnyDeath писал(а) 18. Апреля 2008 :: 13:19:
     Возврат Форма.СоздатьЭлементУправленияНаФорме(_Конт.Форма, "ТабличноеПоле", идЭлементаНаформе);
КонецФункции// Создать


Так я же писал - создается на форме обычное ТП, не объект твоего класса  Печаль

Т.е. ты хочешь сказать, чтобы я в классе "ТПЗапросТЗ" в ф-ии "Создать" писал:
Код
Выбрать все
Возврат Форма.СоздатьЭлементУправленияНаФорме(_Конт.Форма, "ТПЗапросТЗ", идЭлементаНаформе); 

??


artbear писал(а) 18. Апреля 2008 :: 13:45:
ИМХО проблема упростилась по максимуму - телепатирование не помогает.
Поэтому все просто - пусть автор составит тест, в котором видно ошибку, мы проверим код и четко сможем разобраться.
Уверен, что тест сделать не проблема Улыбка

Уже положил. Только забыл определение класса. Ну, думаю, всем всё понятно:
Цитата:
class ТПЗапросТЗ = #Классы\ТПЗапросТЗ.ert : ТабличноеПоле
{};
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Помогите. Как сделать правильно?
Ответ #44 - 18. Апреля 2008 :: 13:53
Печать  
kiruha писал(а) 18. Апреля 2008 :: 11:38:
Уже напарывался
http://www.1cpp.ru/forum/YaBB.pl?num=1208158731
Код
Выбрать все
Функция Создать(Конт, ЭлементДиалога) Экспорт  

ОбъектФорма=СоздатьОбъект("Форма");
ОбъектФорма.УстановитьФорму(Конт.Форма);
ТаблПоле=ОбъектФорма.СоздатьЭлементУправления("ТабличноеПолеДБФ", ЭлементДиалога);

Возврат ТаблПоле;
КонецФункции   



Вызов из формы
Код
Выбрать все
перем тпТовары,ЛокальнаяФорма,ОбъектТпТовары;

Процедура ФормаПриСоздании()
ОбъектТпТовары=СоздатьОбъект("ТабличноеПолеДБФ");
тпТовары=ОбъектТпТовары.Создать(Контекст,Форма.тпТестДБФ);
КонецПроцедуры    



работаешь с тпТовары а не ОбъектТпТовары
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 2 [3] 4 5 
ОтправитьПечать