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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Коллекции в 1С++
Ответ #45 - 11. Июля 2008 :: 05:33
Печать  
[quote author=kms link=1215152763/30#40 date=1215726402]
Доработал немного выгрузку.
Теперь можно получать выгрузку имен колонок, данных строки или всего вместе.

Интерфейс добавил свой - это на пути к универсальным интерфейсам обмена данными.
Вообще, идея меня вдохновляет - например, скоро мы получим возможность задания значений ключей индекса в ИТ вообще из любой доступной коллекции
(из вектора, сз, строки или колонки ТЗ и т.д.).
[/quote]
А зачем ты убрал фичу выгрузки строки в КОП-наследник от Вектора/Коллекции ?
Я специально так сделал для полной аналогии с ИТЗ::Выгрузить()

ИМХО удобная и полезная фича.
  

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


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Коллекции в 1С++
Ответ #46 - 11. Июля 2008 :: 07:05
Печать  
artbear писал(а) 11. Июля 2008 :: 02:42:
kms писал(а) 10. Июля 2008 :: 14:54:
2. По параметрам по умолчанию - согласен.
Их там сейчас просто нет, это есть в планах.

Это ты про Вставить(1) без второго параметра?
Если да, тогда я не понял твоего решения - считаем это ошибкой и исправляем? или нет?
Плиз, сам исправь, т.к. я еще до конца твою логику построения контекста не уяснил Улыбка

Ну, я просто еще не добавлял параметры по умолчанию - оставил на потом.
С тобой здесь согласен, сделаю.

artbear писал(а) 11. Июля 2008 :: 03:13:
Далее по Вектор::Сдвинуть
Его синтаксис сейчас Вектор::Сдвинуть(Индекс, ПозицияНаСколькоСдвигаем)
Вопрос по второму параметру - ИМХО его использовать неудобно, почему бы не использовать прямое указание индекса, куда нужно вставить элемент из позиции Индекс ?

У нас везде сделано не абсолютной позицией, а смещением.
В коллекциях ТП. В СЗ, ТЗ.
Про v8 можно и не говорить.
Короче, здесь нормально, давай оставим.

artbear писал(а) 11. Июля 2008 :: 05:33:
А зачем ты убрал фичу выгрузки строки в КОП-наследник от Вектора/Коллекции ?
Я специально так сделал для полной аналогии с ИТЗ::Выгрузить()

ИМХО удобная и полезная фича.

Эээ.
А как это было реализовано и какая задумка была поточнее?
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Коллекции в 1С++
Ответ #47 - 11. Июля 2008 :: 08:47
Печать  
kms писал(а) 11. Июля 2008 :: 07:05:
artbear писал(а) 11. Июля 2008 :: 05:33:
А зачем ты убрал фичу выгрузки строки в КОП-наследник от Вектора/Коллекции ?
Я специально так сделал для полной аналогии с ИТЗ::Выгрузить()

ИМХО удобная и полезная фича.

Эээ.
А как это было реализовано и какая задумка была поточнее?

Я добавил шаблонную функцию ::CValue2Type<Type>(const CValue&), посмотри ее код.
Она сначала пытается через dynamic_cast привести контекст с типу Type, если неудача и переданный контекст это КОП, то ищем Type в наследниках.
Аналогично сделано в ИТЗ для выгрузки в ТЗ, СЗ и ИТЗ.
А ты заменил вызов этой функции просто на dynamic_cast Печаль
  

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


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Коллекции в 1С++
Ответ #48 - 11. Июля 2008 :: 08:55
Печать  
artbear писал(а) 11. Июля 2008 :: 08:47:
Я добавил шаблонную функцию ::CValue2Type<Type>(const CValue&), посмотри ее код.
Она сначала пытается через dynamic_cast привести контекст с типу Type, если неудача и переданный контекст это КОП, то ищем Type в наследниках.
Аналогично сделано в ИТЗ для выгрузки в ТЗ, СЗ и ИТЗ.
А ты заменил вызов этой функции просто на dynamic_cast Печаль

А, да, помню.

Я не стал вникать, когда увидел там просто dynamic_cast.
Просто dynamic_cast будет падать на non_rtti_object для объектов 1С.

Надо бы тогда поправить на safe_dynamic_cast и вернуть на место.
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Коллекции в 1С++
Ответ #49 - 11. Июля 2008 :: 08:58
Печать  
kms писал(а) 11. Июля 2008 :: 08:55:
А, да, помню.

Я не стал вникать, когда увидел там просто dynamic_cast.
Просто dynamic_cast будет падать на non_rtti_object для объектов 1С.

Надо бы тогда поправить на safe_dynamic_cast и вернуть на место.

Ага, поправлю.
Кстати, давно хотел насчет safe-cast поговорить.
Опиши, плиз, ситуацию, при которой может быть подобное падение, типа назови объекты и т.д.
Я что-то пропустил упоминание об этом.
  

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


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Коллекции в 1С++
Ответ #50 - 11. Июля 2008 :: 09:06
Печать  
Да попробуй преобразовать через dynamic_cast любой контекст 1С (ТЗ, например) в любой интерфейс icpp.
Вот тогда тебе этот deep magic и пригодится.
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Коллекции в 1С++
Ответ #51 - 11. Июля 2008 :: 09:11
Печать  
Вопрос по реализации выгрузки строки ИТЗ в коллекцию.
Коллекция у нас представлена в каком виде?
- одна строка и куча колонок - строка таблицы,
или куча строк и одна колонка - колонка таблицы ?
Мне просто не очень понятна твоя реализация выгрузки строки ИТЗ в коллекцию.
  

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


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Коллекции в 1С++
Ответ #52 - 11. Июля 2008 :: 09:25
Печать  
[quote author=artbear link=1215152763/45#51 date=1215767462]
Коллекция у нас представлена в каком виде?
- одна строка и куча колонок - строка таблицы,
или куча строк и одна колонка - колонка таблицы ?
[/quote]
Дак это как посмотреть - стоя или лежа. ;)
Тут важно, что у [i]интерфейс[/i] у меня построчный.

+
Выгрузка строки может в реале давать две колонки на строку (см. описание метода в багзилле).
Это может быть полезно не только коллекциям / спискам, но и в общегражданском смысле.
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Коллекции в 1С++
Ответ #53 - 11. Июля 2008 :: 10:26
Печать  
Михаил, сделай, плиз, код на базе этого интерфейса для выгрузки из ИТЗ в ТЗ или СЗ.
Я сейчас делаю выгрузку строки ИТЗ в СЗ.
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Коллекции в 1С++
Ответ #54 - 11. Июля 2008 :: 11:40
Печать  
Ушел в оффлайн до понедельника.
  

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


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Коллекции в 1С++
Ответ #55 - 11. Июля 2008 :: 17:49
Печать  
artbear писал(а) 10. Июля 2008 :: 13:43:
2. Или явно запретить вставку элементов, в позиции с индексом больше, чем количество текущих элементов.
В этом случае вектор будет расти только при явном изменении размера через Вектор::ИзменитьРазмер или Вектор::Добавить.

Мне лично нравится п.2, как более стабильный и четкий.

ОК, согласен.

Будем бросать исключение за вставкой за границей.
Вставка на границе - штатная ситуация.
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Коллекции в 1С++
Ответ #56 - 14. Июля 2008 :: 04:26
Печать  
[quote author=kms link=1215152763/30#39 date=1215701667]
[quote author=artbear link=1215152763/30#36 date=1215696467]
это я тесты на Вектор пишу :) - специально опечатался, и сразу и нарвался :(
[/quote]
Поддерживаю тебя в этом.
Я положительно отношусь к TDD, хотя считаю, что по значимости логика намного важнее.
TDD снижают требования по применению логики, и в этом его сила и опасность.[/quote]
Не совсем согласен с тобой по отношению к тестам - тесты как раз позволяют раз и навсегда закрепить логику поведения.
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Коллекции в 1С++
Ответ #57 - 14. Июля 2008 :: 06:39
Печать  
[quote author=kms link=1215152763/30#40 date=1215726402]
Теперь можно получать выгрузку имен колонок, данных строки или всего вместе.

Интерфейс добавил свой - это на пути к универсальным интерфейсам обмена данными.
Вообще, идея меня вдохновляет - например, скоро мы получим возможность задания значений ключей индекса в ИТ вообще из любой доступной коллекции
(из вектора, сз, строки или колонки ТЗ и т.д.).

[tt]
ВыгрузитьСтроку(Приемник, чНомерСтроки, [Колонки = ""], флВыгружатьИмена)
[/tt]
[/quote]
Добавил к ВыгрузитьСтроку фичу выгрузки в СписокЗначений.

Т.е. теперь ВыгрузитьСтроку понимает как Вектор, так и СписокЗначений.

ЗЫ реализовал универсальный класс CVLResultLoader, служающий для выгрузки данных в СписокЗначений, на базе универсального интерфейса IGeneralResultLoader

PPS Логика ВыгрузитьСтроку подтверждена многочисленными юнит-тестами.
  

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



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Коллекции в 1С++
Ответ #58 - 14. Июля 2008 :: 07:16
Печать  
Объясните, пожалуйста, рядовому пользователю: в чём преимущества вектора? Только в скорости? Именованного вектора не будет?
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Коллекции в 1С++
Ответ #59 - 14. Июля 2008 :: 07:26
Печать  
JohnyDeath писал(а) 14. Июля 2008 :: 07:16:
Объясните, пожалуйста, рядовому пользователю: в чём преимущества вектора? Только в скорости? Именованного вектора не будет?

Будет, конечно.
Щас за чашкой чая Степан на Луа напишет. Улыбка

Смысл тут, Жень, - в желании сделать стандартные коллекции, интегрированные в единое пространство.
Чтобы 1sqlite, например, мог выгружать в любую коллекцию, которая написана по определенным правилам.
Ну и т.д.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 2 3 [4] 5 6 ... 9
ОтправитьПечать