Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) Не создается табличное поле (число прочтений - 6404 )
es3000
God Member
*****
Отсутствует



Сообщений: 536
Зарегистрирован: 10. Июля 2006
Не создается табличное поле
10. Августа 2010 :: 11:32
Печать  
Надо в справочнике сделать многострочную часть.
По идее подходит вариант с классом "ТабличноеПоле" + "ПоставщикДанныхТЗ". И хранить эту ТЗ в строковом реквизите этого справочника.

При создании табличного поля выдается ошибка:

Код
Выбрать все
	ФормаРасш = СоздатьОбъект("РасширениеФормы");
	ФормаРасш.УстановитьФорму(Форма);

	лАтриб = ФормаРасш.ПолучитьАтрибут("дКнопка");
	лТаблПоле = лАтриб.СоздатьЭлементУправления("ТабличноеПоле");

 



Текст ошибки:
Код
Выбрать все
лТаблПоле = лАтриб.СоздатьЭлементУправления("ТабличноеПоле");
{Справочник.ххх.Форма.Модуль(9)}: Поле агрегатного объекта не обнаружено (СоздатьЭлементУправления)
 



Раньше, года два назад, я делал нечто подобное - работало без проблем.
Версии:

1С++ 3.0.1.26
FormEx 2.0
  
Наверх
ICQ  
IP записан
 
pavel_tr
Senior Member
****
Отсутствует



Сообщений: 279
Местоположение: Казань
Зарегистрирован: 14. Октября 2006
Пол: Мужской
Re: Не создается табличное поле
Ответ #1 - 10. Августа 2010 :: 12:54
Печать  
Код
Выбрать все
оФорма = СоздатьОбъект("Форма");
оФорма.УстановитьФорму(Форма);
тпМногострочнаяЧасть = Форма.СоздатьЭлементУправления("ТабличноеПоле", "тпМногострочнаяЧасть_");
 


"тпМногострочнаяЧасть_" - идентификатор кнопки. Вызывать из ПослеОткрытия() или ПослеСозданияФормы()
  
Наверх
 
IP записан
 
es3000
God Member
*****
Отсутствует



Сообщений: 536
Зарегистрирован: 10. Июля 2006
Re: Не создается табличное поле
Ответ #2 - 11. Августа 2010 :: 04:32
Печать  
та же самая ошибка:

Код
Выбрать все
тпМногострочнаяЧасть = Форма.СоздатьЭлементУправления("ТабличноеПоле", "дКнопка");
{Справочник.ххх.Форма.Модуль(22)}: Поле агрегатного объекта не обнаружено (СоздатьЭлементУправления)
 


  
Наверх
ICQ  
IP записан
 
es3000
God Member
*****
Отсутствует



Сообщений: 536
Зарегистрирован: 10. Июля 2006
Re: Не создается табличное поле
Ответ #3 - 11. Августа 2010 :: 04:32
Печать  
почему-то не находит метода "СоздатьЭлементУправления"
  
Наверх
ICQ  
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Не создается табличное поле
Ответ #4 - 11. Августа 2010 :: 04:36
Печать  
оФорма.СоздатьЭлементУправления
  

1&&2&&3
Наверх
 
IP записан
 
es3000
God Member
*****
Отсутствует



Сообщений: 536
Зарегистрирован: 10. Июля 2006
Re: Не создается табличное поле
Ответ #5 - 11. Августа 2010 :: 07:04
Печать  
Заработало, спасибо.
Только интересует с каких пор такие изменения, и где про них можно почитать?
В документации для моих версий DLL вроде про это ничего нет
  
Наверх
ICQ  
IP записан
 
pavel_tr
Senior Member
****
Отсутствует



Сообщений: 279
Местоположение: Казань
Зарегистрирован: 14. Октября 2006
Пол: Мужской
Re: Не создается табличное поле
Ответ #6 - 11. Августа 2010 :: 07:10
Печать  
Раздел с актуальной документацией, в частности про табличное поле

es3000 писал(а) 10. Августа 2010 :: 11:32:
Надо в справочнике сделать многострочную часть.
По идее подходит вариант с классом "ТабличноеПоле" + "ПоставщикДанныхТЗ"

Для этой задачи лучше использовать не ТЗ, а поставщик данных ODBC, особенно если используется SQL. Это если имеется в виду замена штатной многострочной части справочника
  
Наверх
 
IP записан
 
es3000
God Member
*****
Отсутствует



Сообщений: 536
Зарегистрирован: 10. Июля 2006
Re: Не создается табличное поле
Ответ #7 - 11. Августа 2010 :: 07:30
Печать  
Цитата:
Раздел с актуальной документацией, в частности про табличное поле


Видимо все-таки это не совсем актуальная документация.
Вот, например, посмотри что написано в разделе "Создание табличного поля"

Цитата:
es3000 писал(а) Вчера :: 15:32:
Надо в справочнике сделать многострочную часть.
По идее подходит вариант с классом "ТабличноеПоле" + "ПоставщикДанныхТЗ"

Для этой задачи лучше использовать не ТЗ, а поставщик данных ODBC, особенно если используется SQL. Это если имеется в виду замена штатной многострочной части справочника


А какая в справочнике есть штатная многострочная часть?
  
Наверх
ICQ  
IP записан
 
es3000
God Member
*****
Отсутствует



Сообщений: 536
Зарегистрирован: 10. Июля 2006
Re: Не создается табличное поле
Ответ #8 - 11. Августа 2010 :: 07:36
Печать  
Теперь колонки в табличном поле не отображаются.
Код:
Код
Выбрать все
мТЗ = СоздатьОбъект("ТаблицаЗначений");
мТЗ.НоваяКолонка("Макс");

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


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


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Не создается табличное поле
Ответ #9 - 11. Августа 2010 :: 07:48
Печать  
А может научиться пользоваться классами Улыбка тогда можно будет использовать класс "ПоставщикДанных". А там хватит всего вкусного и хорошего.
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
pavel_tr
Senior Member
****
Отсутствует



Сообщений: 279
Местоположение: Казань
Зарегистрирован: 14. Октября 2006
Пол: Мужской
Re: Не создается табличное поле
Ответ #10 - 11. Августа 2010 :: 10:22
Печать  
es3000 писал(а) 11. Августа 2010 :: 07:30:
А какая в справочнике есть штатная многострочная часть?

Ну в форме списка которая

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

// свойства ТП
тпТовары.ТаймаутБыстрогоПоиска = 1000;
тпТовары.СтильЗаголовков = 1;

// колонки
Колонка = тп.Колонки.Добавить("EAN13");
Колонка.Заголовок = "EAN13";
Колонка.Данные = "EAN13";
Колонка.Ширина = 14;
Колонка.ИзменениеРазмера = 1;
... и т.д.

// поставщик данных - тз
оПоставщикДанных=СоздатьОбъект("ПоставщикДанныхТЗ");
оПоставщикДанных.УстТаблицуЗначений(тз);

// подключение поставщика + заполнение
тпТовары.ПоставщикДанных=оПоставщикДанных;
тпТовары.ОбновитьСтроки();
 


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



Сообщений: 536
Зарегистрирован: 10. Июля 2006
Re: Не создается табличное поле
Ответ #11 - 12. Августа 2010 :: 08:18
Печать  
vandalsvq писал(а) 11. Августа 2010 :: 07:48:
А может научиться пользоваться классами Улыбка

А почему ты решил, что я не умею пользоваться классами?

vandalsvq писал(а) 11. Августа 2010 :: 07:48:
тогда можно будет использовать класс "ПоставщикДанных". А там хватит всего вкусного и хорошего.

Чем класс "ПоставщикДанных" лучше чем "ПоставщикДанныхТЗ" для моей конкретной задачи?
Что в нем такого "хорошего"?
  
Наверх
ICQ  
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Не создается табличное поле
Ответ #12 - 12. Августа 2010 :: 08:40
Печать  
es3000 писал(а) 12. Августа 2010 :: 08:18:
vandalsvq писал(а) 11. Августа 2010 :: 07:48:
А может научиться пользоваться классами Улыбка

А почему ты решил, что я не умею пользоваться классами?

vandalsvq писал(а) 11. Августа 2010 :: 07:48:
тогда можно будет использовать класс "ПоставщикДанных". А там хватит всего вкусного и хорошего.

Чем класс "ПоставщикДанных" лучше чем "ПоставщикДанныхТЗ" для моей конкретной задачи?
Что в нем такого "хорошего"?


в нём всё готовое, минимум кода - максимум удобства.
  
Наверх
 
IP записан
 
es3000
God Member
*****
Отсутствует



Сообщений: 536
Зарегистрирован: 10. Июля 2006
Re: Не создается табличное поле
Ответ #13 - 22. Августа 2010 :: 09:56
Печать  
vandalsvq писал(а) 11. Августа 2010 :: 07:48:
А может научиться пользоваться классами Улыбка тогда можно будет использовать класс "ПоставщикДанных". А там хватит всего вкусного и хорошего.


Для поставщика данных не хочется цеплять много библиотек.
Сейчас у меня используются только 1C++ и formEx.
  
Наверх
ICQ  
IP записан
 
es3000
God Member
*****
Отсутствует



Сообщений: 536
Зарегистрирован: 10. Июля 2006
Re: Не создается табличное поле
Ответ #14 - 22. Августа 2010 :: 09:59
Печать  
pavel_tr писал(а) 11. Августа 2010 :: 10:22:
es3000 писал(а) 11. Августа 2010 :: 07:30:
А какая в справочнике есть штатная многострочная часть?

Ну в форме списка которая

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

// свойства ТП
тпТовары.ТаймаутБыстрогоПоиска = 1000;
тпТовары.СтильЗаголовков = 1;

// колонки
Колонка = тп.Колонки.Добавить("EAN13");
Колонка.Заголовок = "EAN13";
Колонка.Данные = "EAN13";
Колонка.Ширина = 14;
Колонка.ИзменениеРазмера = 1;
... и т.д.

// поставщик данных - тз
оПоставщикДанных=СоздатьОбъект("ПоставщикДанныхТЗ");
оПоставщикДанных.УстТаблицуЗначений(тз);

// подключение поставщика + заполнение
тпТовары.ПоставщикДанных=оПоставщикДанных;
тпТовары.ОбновитьСтроки();
 




У тебя наверное ошибка в строке:

Код
Выбрать все
Колонка = тп.Колонки.Добавить("EAN13");
 



Надо наверное:

Код
Выбрать все
Колонка = тпТовары.Колонки.Добавить("EAN13");
 


  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать