IPB

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V  < 1 2  
Ответить в эту темуОткрыть новую тему
> ИндексированнаяТаблица., Проблемы при большом количестве строк.
artbear
сообщение Feb 6 2006, 17:00
Сообщение #16


Продвинутый
***

Группа: Пользователи
Сообщений: 887
Регистрация: 25-July 03
Из: Башкортостан
Пользователь №: 13



1Cv7
ИндексТЗ = Сам(Контекст).ПолучитьБазовыйКласс("ИндексированнаяТаблица");
Возврат ИндексТЗ.НоваяКолонка(Ид);


--------------------
[span style='color:blue']Эх, дайте что-нибудь новенькое да полезное потестить ;-)[/span]
[span style='color:blue']1C++ developer :)[/span] www.1cpp.ru
[span style='color:blue']OpenConf developer :: [/span] openconf.itland.ru
[span style='color:blue']FormEx developer :)[/span] formex.dorex.ru
[span style='color:blue']1C++ active tester :)[/span] www.1cpp.ru
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
artbear
сообщение Feb 6 2006, 17:03
Сообщение #17


Продвинутый
***

Группа: Пользователи
Сообщений: 887
Регистрация: 25-July 03
Из: Башкортостан
Пользователь №: 13



или
1Cv7
ИндексТЗ = Сам(Контекст).ПолучитьБазовыйКласс(" IndexedTable");
Возврат ИндексТЗ.НоваяКолонка(Ид);

В зависимости от того, от какого класса у тебя порожден потомок (в defcls.prm).


--------------------
[span style='color:blue']Эх, дайте что-нибудь новенькое да полезное потестить ;-)[/span]
[span style='color:blue']1C++ developer :)[/span] www.1cpp.ru
[span style='color:blue']OpenConf developer :: [/span] openconf.itland.ru
[span style='color:blue']FormEx developer :)[/span] formex.dorex.ru
[span style='color:blue']1C++ active tester :)[/span] www.1cpp.ru
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Victuan
сообщение Feb 6 2006, 18:17
Сообщение #18


Начинающий
*

Группа: Пользователи
Сообщений: 14
Регистрация: 4-February 06
Пользователь №: 6354



Сэнкс, помогло.

А могу ли каким либо образом создавать потомков для объектов, созданных из внешних компонент.
ЗагрузитьВнешнююКомпоненту("ValTable.dll");
ТЗ = СоздатьОбъект("AddIn.ValTable")

Конструкция
ИндексТЗ = Сам(Контекст).ПолучитьБазовыйКласс("AddIn.ValTable");
Возврат ИндексТЗ.НоваяКолонка(Ид,Тип);
выдает ошибку:
{C:\ПРИМЕР.ERT(12)}: Имя класса: CAddInContext для которого не удалось сформировать имя в методе CComponentClass::GetFullTypeName! Обратитесь за консультацией к разработчику.

и что нужно писать в defcls.prm:
класс ValTableExt = ValTableExt.ert:AddIn.ValTable ?
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Victuan
сообщение Feb 6 2006, 21:32
Сообщение #19


Начинающий
*

Группа: Пользователи
Сообщений: 14
Регистрация: 4-February 06
Пользователь №: 6354



Написал эмулятор стандартной 1С-ой ТаблицыЗначений на базе класса ИндексированнаяТаблица.
http://1c.proclub.ru/modules/mydownloads/p...?cid=5&lid=6257
Цель: достижение совместимости методов ИндексированнойТаблицы со стандартной ТЗ, что дает возможность быстрой подмены стандартной ТЗ на ИндексированнуюТаблицу в готовых отчетах и обработках. Нужно лишь переопределить метод СоздатьОбъект("ТаблицаЗначений") на СоздатьОбъект("IndexedTableExt").

Вопросы 2ADirks:
а) не нашел метода, который позволяет в таблице переставлять местами строки;
б) метод Заполнить стандартной ТЗ предоставляет больше возможностей чем метод ЗаполнитьСтроку ИндексированнойТаблицы
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kms
сообщение Feb 6 2006, 22:03
Сообщение #20


Продвинутый
***

Группа: Пользователи
Сообщений: 528
Регистрация: 28-September 05
Пользователь №: 5238



Цитата(Victuan @ Feb 6 2006, 21:32)
б) метод Заполнить стандартной ТЗ предоставляет больше возможностей чем метод ЗаполнитьСтроку ИндексированнойТаблицы

Посмотри метод "ЗаполнитьКолонку"


--------------------
осторожно, открывается вовнутрь!
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
artbear
сообщение Feb 7 2006, 08:27
Сообщение #21


Продвинутый
***

Группа: Пользователи
Сообщений: 887
Регистрация: 25-July 03
Из: Башкортостан
Пользователь №: 13



Цитата(Victuan @ Feb 7 2006, 00:32)
Написал эмулятор стандартной 1С-ой ТаблицыЗначений на базе класса ИндексированнаяТаблица.

На проклубе перенес в соответствующие категории репозитарии классов 1С++ и дал свое предложение по названию.
ИМХО вместо сообщений о нереализованных методах нужно добавить или
1) сразу выдается исключение в случае вызова подобных методов, чтобы программа далее не работала, возможно, ошибочно, и нужно тут же править код.
2) или добавить в класс спец. атрибут, при установке которого можно выбирать или сообщение об ошибке, но код работает, или вылет с исключением.
Вариант 2 наиболее гибок


--------------------
[span style='color:blue']Эх, дайте что-нибудь новенькое да полезное потестить ;-)[/span]
[span style='color:blue']1C++ developer :)[/span] www.1cpp.ru
[span style='color:blue']OpenConf developer :: [/span] openconf.itland.ru
[span style='color:blue']FormEx developer :)[/span] formex.dorex.ru
[span style='color:blue']1C++ active tester :)[/span] www.1cpp.ru
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
artbear
сообщение Feb 7 2006, 08:31
Сообщение #22


Продвинутый
***

Группа: Пользователи
Сообщений: 887
Регистрация: 25-July 03
Из: Башкортостан
Пользователь №: 13



Еще нужно добавить доступ непосредственно к базовой индексированной таблице для полноты картины.
Т.е. в этом случае можно будет к уже выполненному коду добавлять новый код с использованием всех возможностей ИндексированнойТаблицы.


--------------------
[span style='color:blue']Эх, дайте что-нибудь новенькое да полезное потестить ;-)[/span]
[span style='color:blue']1C++ developer :)[/span] www.1cpp.ru
[span style='color:blue']OpenConf developer :: [/span] openconf.itland.ru
[span style='color:blue']FormEx developer :)[/span] formex.dorex.ru
[span style='color:blue']1C++ active tester :)[/span] www.1cpp.ru
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Victuan
сообщение Feb 7 2006, 13:20
Сообщение #23


Начинающий
*

Группа: Пользователи
Сообщений: 14
Регистрация: 4-February 06
Пользователь №: 6354



Цитата
ИМХО вместо сообщений о нереализованных методах нужно добавить или
1) сразу выдается исключение в случае вызова подобных методов, чтобы программа далее не работала, возможно, ошибочно, и нужно тут же править код.
2) или добавить в класс спец. атрибут, при установке которого можно выбирать или сообщение об ошибке, но код работает, или вылет с исключением.
Вариант 2 наиболее гибок

Ну, я выложил как бы альфу-версию. Вообще, я собираюсь нереализованные методы реализовать.
Цитата
Посмотри метод "ЗаполнитьКолонку"

Посмотрю.
Цитата
Еще нужно добавить доступ непосредственно к базовой индексированной таблице для полноты картины.
Т.е. в этом случае можно будет к уже выполненному коду добавлять новый код с использованием всех возможностей ИндексированнойТаблицы.

Молод я и неопытен. Подскажи как сделать.

Все таки повторю вопрос, может кто знает:
Цитата
А могу ли каким либо образом создавать потомков для объектов, созданных из внешних компонент
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
artbear
сообщение Feb 7 2006, 13:43
Сообщение #24


Продвинутый
***

Группа: Пользователи
Сообщений: 887
Регистрация: 25-July 03
Из: Башкортостан
Пользователь №: 13



Цитата(Victuan @ Feb 7 2006, 16:20)
Цитата
Еще нужно добавить доступ непосредственно к базовой индексированной таблице для полноты картины.
Т.е. в этом случае можно будет к уже выполненному коду добавлять новый код с использованием всех возможностей ИндексированнойТаблицы.

Молод я и неопытен. Подскажи как сделать.

1Cv7
// Преобразование к базовому типу
Функция ТЗ() Экспорт
   Возврат Конт(Контекст).ПолучитьБазовыйКласс("ИндексированнаяТаблица");
КонецФункции

Функция ТаблицаЗначений() Экспорт
   Возврат Конт(Контекст).ПолучитьБазовыйКласс("ИндексированнаяТаблица");
КонецФункции


--------------------
[span style='color:blue']Эх, дайте что-нибудь новенькое да полезное потестить ;-)[/span]
[span style='color:blue']1C++ developer :)[/span] www.1cpp.ru
[span style='color:blue']OpenConf developer :: [/span] openconf.itland.ru
[span style='color:blue']FormEx developer :)[/span] formex.dorex.ru
[span style='color:blue']1C++ active tester :)[/span] www.1cpp.ru
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Victuan
сообщение Feb 7 2006, 14:46
Сообщение #25


Начинающий
*

Группа: Пользователи
Сообщений: 14
Регистрация: 4-February 06
Пользователь №: 6354



Т.е. можно сделать так?
Код
Перем ТЗ Экспорт; //через свойство ТЗ можно обращаться к базовым методам ИндексированнойТаблицы (к тем, которые не опубликованы здесь)

Функция This(Конт)
    Возврат Конт;
КонецФункции

procedure Constructor ()
   ТЗ = This(Контекст).ПолучитьБазовыйКласс("ИндексированнаяТаблица");
endProcedure // Constructor
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Victuan
сообщение Feb 7 2006, 16:00
Сообщение #26


Начинающий
*

Группа: Пользователи
Сообщений: 14
Регистрация: 4-February 06
Пользователь №: 6354



Разобрался, можно делать так. Выложил обновление в проклабе.

Цитата
А могу ли каким либо образом создавать потомков на 1с++ для объектов, созданных из других внешних компонент
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kasper076
сообщение Feb 10 2006, 10:23
Сообщение #27


Продвинутый
***

Группа: Пользователи
Сообщений: 211
Регистрация: 11-January 06
Пользователь №: 6112



ИсхТЗ такова:

Период|Отдел |Сумма
--------------------
Дата1 |Отдел1|Сумма1
Дата2 |Отдел1|Сумма2
Дата3 |Отдел1|Сумма3
Дата1 |Отдел2|Сумма4
Дата2 |Отдел2|Сумма5
Дата3 |Отдел2|Сумма6
Дата1 |Отдел3|Сумма7
Дата2 |Отдел3|Сумма8
Дата3 |Отдел3|Сумма9

Код
ИсхТЗ.ДобавитьИндекс("индПериод","Период");
ИсхТЗ.ДобавитьИндекс("индОтдел","Период,Отдел");

КлючМин = СоздатьОбъект("СписокЗначений");
КлючМин.ДобавитьЗначение(Дата1);
КлючМин.ДобавитьЗначение(Отдел1);

КлючМакс = СоздатьОбъект("СписокЗначений");
КлючМакс.ДобавитьЗначение(Дата2);
КлючМакс.ДобавитьЗначение(Отдел1);

ТЗ.УстановитьФильтр(КлючМин,КлючМакс,"индОтдел");
ТЗ1 = СоздатьОбъект("ТаблицаЗначений");
ТЗ.Выгрузить(ТЗ1,"индОтдел");

ТЗ выглядит так:

Период|Отдел |Сумма
--------------------
Дата1 |Отдел1|Сумма1
Дата1 |Отдел2|Сумма4
Дата1 |Отдел3|Сумма7
Дата2 |Отдел1|Сумма2
Дата2 |Отдел2|Сумма5
Дата2 |Отдел3|Сумма8

Почему не работает фильтр по значению отдела???

Вопрос снимаю!!!! Поиск рулит...

Сообщение отредактировал kasper076 - Feb 10 2006, 11:43
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Victuan
сообщение Feb 17 2006, 15:59
Сообщение #28


Начинающий
*

Группа: Пользователи
Сообщений: 14
Регистрация: 4-February 06
Пользователь №: 6354



Цитата
Цитата

Однако по стабильности при работе с большими массивами данных хуже всех оказалась именно 1С-я ТЗ.

Неужто всего 2^24? Ну, вот и предел.

На самом деле, предел количеста строк у 1С-ых = ТЗ 2^24 / 4.

Скоро опубликую обновление класса "Эмулятор ТЗ" и новые выводы.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Victuan
сообщение Feb 23 2006, 20:25
Сообщение #29


Начинающий
*

Группа: Пользователи
Сообщений: 14
Регистрация: 4-February 06
Пользователь №: 6354



Обновил эмулятор стандартной 1С-ой ТаблицыЗначений на базе класса ИндексированнаяТаблица.
http://1c.proclub.ru/modules/mydownloads/p...?cid=5&lid=6257

Попутно обнаружил баг в методе УдалитьСтроку.
При попытке удалить строку объекта ИндексированнаяТаблица 1С валится. Этот эффект наблюдается если в ИндексированнойТаблице есть значения типа IndexedTableExt, причем необязательно в удаляемой строке. Пока не знаю как бороться с этой ошибкой.
Прикрепленные файлы
Прикрепленный файл  IndexedTableExt.rar ( 14.96 килобайт ) Кол-во скачиваний: 56
 
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Victuan
сообщение Jan 28 2012, 07:37
Сообщение #30


Начинающий
*

Группа: Пользователи
Сообщений: 14
Регистрация: 4-February 06
Пользователь №: 6354



Хочется еще раз поднять тему.
Что-нибудь изменилось в объекте ИндексированнаяТаблица с 2007 года.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения

2 страниц V  < 1 2
Ответить в эту темуОткрыть новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



RSS Текстовая версия Сейчас: 24th July 2019 - 03:02