Переключение на Главную Страницу Страницы: [1]  ОтправитьПечать
Очень популярная тема (более 25 ответов) Коллекции в 1С++ (число прочтений - 49234 )
steban
1c++ developer
Отсутствует


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Коллекции в 1С++
04. Июля 2008 :: 06:26
Печать  
По мотивам обсуждения вот тут.
ЕМНИП, класс Структура был оптимизирован Михаилом для хранения большого количество элементов и регистронезависимого сравнения ключей.
Это, конечно, хорошо для некоторых задач.
Предлагаю обсудить создание настраиваемого класса-коллекции с возможностью выбирать его поведение.

Интерфейс примерно такой:
Код
Выбрать все
Колл=СоздатьОбъект("Коллекция");
Колл.УстановитьТипКлюча(0);//0-число, 1 -строка, 2- строка с регистронезависимым сравнением, 3- еще что-то
Колл.УстановитьМодельХранения(0);//0-вектор, 1- хеш-таблица, 2 - список, 3-еще что-то
 


Например для задач, для которых критична скорость вставки в середину коллекции выбирать список, и т.п.
  

int getRandomNumber()&&{&&  return 4; //chosen by fair dice roll&&         //guaranteed to be random&&}
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Коллекции в 1С++
Ответ #1 - 04. Июля 2008 :: 06:34
Печать  
А индексированная таблица не спасает?
  
Наверх
ICQ  
IP записан
 
steban
1c++ developer
Отсутствует


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Коллекции в 1С++
Ответ #2 - 04. Июля 2008 :: 06:38
Печать  
У индексированной таблицы довольно дорогие операции создания таблицы, создания колонок, добавление строк.
Если Ускоренное создание объектов в 1С нормально заработает, одна проблема отпадет.
  

int getRandomNumber()&&{&&  return 4; //chosen by fair dice roll&&         //guaranteed to be random&&}
Наверх
 
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Коллекции в 1С++
Ответ #3 - 04. Июля 2008 :: 07:13
Печать  
УстановитьМодельХранения - это безусловно тонкий и нужный инструмент.
только глобального толку думаю мало будет. подавляющее число 1с-ников не работают на таком уровне (вплоть все до мелочей...).
  
Наверх
IP записан
 
PVR
God Member
*****
Отсутствует



Сообщений: 622
Зарегистрирован: 19. Ноября 2007
Пол: Мужской
Re: Коллекции в 1С++
Ответ #4 - 04. Июля 2008 :: 07:17
Печать  
trdm писал(а) 04. Июля 2008 :: 07:13:
УстановитьМодельХранения - это безусловно тонкий и нужный инструмент.
только глобального толку думаю мало будет. подавляющее число 1с-ников не работают на таком уровне (вплоть все до мелочей...).

Мало, но есть  Улыбка
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Коллекции в 1С++
Ответ #5 - 04. Июля 2008 :: 08:32
Печать  
steban

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

Даже итераторы для листа нельзя сравнивать на <>, только на == и !=, а для вектора, к примеру, можно.
И это правильно.

К примеру, как будет работать предлагаемая коллекция, у которой ТипКлюча == число, а МодельХранения == список?
Если она не будет работать, то теряет смысл общий интерфейс.
Если она будет работать, но с затратами N - то это уже совсем плохо.

Таким образом, думаю, надо просто определиться, какие коллекции нам нужны.
Мне лично не хватает одной - единственной коллекции, о которой я вчера уже упомянул.

Это вектор, заодно индексированный строкой ("ИменованныйВектор").
Можно будет использовать вместо структуры и СЗ, в том числе во множестве мест в ИТ.
Прост в реализации, может вырождаться в просто "Вектор", если задавать пустые ключи, к примеру.
Прост в применении, ибо жестко не требует наличия итераторов, достаточно индексов.
Для реализации в icpp уже есть все, что нужно (CIStringMap/std::vector (или std::deque)).
И т.д.

Именованный вектор также можно использовать как hash_set / hash_map.
В принципе, структура - это по-сути и есть hash_map.

Конечно, есть задачи, где требуется вставка и удаление в начало (deque это решает), или в середину.
Над списками и прочим можно еще подумать.
Но еще интереснее подумать над алгоритмами, которые можно будет к этим контейнерам применить.
  

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


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Коллекции в 1С++
Ответ #6 - 04. Июля 2008 :: 08:34
Печать  
PVR писал(а) 04. Июля 2008 :: 07:17:
trdm писал(а) 04. Июля 2008 :: 07:13:
УстановитьМодельХранения - это безусловно тонкий и нужный инструмент.
только глобального толку думаю мало будет. подавляющее число 1с-ников не работают на таком уровне (вплоть все до мелочей...).

Мало, но есть  Улыбка

Однажды я сделал контейнер, у которого есть метод "Сдвинуть".
Реализовано на базе алгоритма STL "rotate".

Тогда я подумал: не вынести ли сам rotate в интерфейс коллекции, ибо "сдвинуть" - это всего лишь микроскопическая частичка "rotate".
И... как то не стал этого делать... Улыбка
  

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



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Коллекции в 1С++
Ответ #7 - 04. Июля 2008 :: 08:44
Печать  
Блин, лучше сделайте в 1С++ закладки и панель инструментов, не зависимые от офисов и прочей хрени Улыбка
А структура сейчас достаточно хорошо работает, её хватает Улыбка.
  
Наверх
IP записан
 
steban
1c++ developer
Отсутствует


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Коллекции в 1С++
Ответ #8 - 04. Июля 2008 :: 08:50
Печать  
kms писал(а) 04. Июля 2008 :: 08:32:
Таким образом, думаю, надо просто определиться, какие коллекции нам нужны.
Мне лично не хватает одной - единственной коллекции, о которой я вчера уже упомянул.

Это вектор, заодно индексированный строкой ("ИменованныйВектор").
Можно будет использовать вместо структуры и СЗ, в том числе во множестве мест в ИТ.
Прост в реализации, может вырождаться в просто "Вектор", если задавать пустые ключи, к примеру.
Прост в применении, ибо жестко не требует наличия итераторов, достаточно индексов.
Для реализации в icpp уже есть все, что нужно (CIStringMap/std::vector (или std::deque)).

Мне пока достаточно просто вектора Улыбка
ОК. давай решать проблемы по мере их поступления.
  

int getRandomNumber()&&{&&  return 4; //chosen by fair dice roll&&         //guaranteed to be random&&}
Наверх
 
IP записан
 
steban
1c++ developer
Отсутствует


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Коллекции в 1С++
Ответ #9 - 04. Июля 2008 :: 08:51
Печать  
trdm писал(а) 04. Июля 2008 :: 08:44:
А структура сейчас достаточно хорошо работает, её хватает Улыбка.

Для некоторых задач недостаточно хорошо
  

int getRandomNumber()&&{&&  return 4; //chosen by fair dice roll&&         //guaranteed to be random&&}
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Коллекции в 1С++
Ответ #10 - 04. Июля 2008 :: 09:22
Печать  
steban писал(а) 04. Июля 2008 :: 08:50:
Мне пока достаточно просто вектора Улыбка
ОК. давай решать проблемы по мере их поступления.

Нуу. Вот так всегда...
А как хорошо все начиналось. Смех

Ну, если бы мера была бы далеко, я бы не выступал по этому вопросу. Улыбка
  

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


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Коллекции в 1С++
Ответ #11 - 04. Июля 2008 :: 09:26
Печать  
trdm писал(а) 04. Июля 2008 :: 08:44:
Блин, лучше сделайте в 1С++ закладки и панель инструментов, не зависимые от офисов и прочей хрени Улыбка
А структура сейчас достаточно хорошо работает, её хватает Улыбка.

Дык это очень просто.
Я перестал заморачиваться и начал юзать ТП с плоской границей.
Только, кажется, я не до конца еще в CVS это залил.
Значит, будет.

А вот с коллекциями - мне не нравится то, что делал Deb.
Все, что можно было переделать, уже переделали.
Мне даже не нравится Делегат, который когда-то вполне нравился.

Все потому, что в свое время Deb шарашил не заботясь об интерфейсе.
А надо было слушать Палыча, и только потом брать в руки перфоратор.
  

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



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Коллекции в 1С++
Ответ #12 - 04. Июля 2008 :: 10:08
Печать  
kms писал(а) 04. Июля 2008 :: 09:26:
Дык это очень просто.
Я перестал заморачиваться и начал юзать ТП с плоской границей.
Только, кажется, я не до конца еще в CVS это залил.
Значит, будет.

Это ты про закладки? или Панель инструментов?

Очень хотелось бы поиметь возможность создавать панель инструментов или ее аналог на родном месте. Чтобы не пришлось программно двигать атрибуты на форме и менять ее размер.

P.S. Попытки в этом направлении уже были на форуме. Но мне не нравится реализация
  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Коллекции в 1С++
Ответ #13 - 04. Июля 2008 :: 10:16
Печать  
kms писал(а) 04. Июля 2008 :: 09:26:
trdm писал(а) 04. Июля 2008 :: 08:44:
Блин, лучше сделайте в 1С++ закладки и панель инструментов, не зависимые от офисов и прочей хрени Улыбка
А структура сейчас достаточно хорошо работает, её хватает Улыбка.

Дык это очень просто.
Я перестал заморачиваться и начал юзать ТП с плоской границей.
Только, кажется, я не до конца еще в CVS это залил.
Значит, будет.


Могу назвать много причин невозможности (ну лично для меня) такого перехода... но боюсь не по теме... вполне поддерживаю trdm в необходимости создания панели и закладок... вот реализовал же Chieftain панель управления, однако на дельфи... правда тема как то затерялась.
Кстати Миша, я там счас в ТП одну хотелку накидаю может она тебе интересной покажется.
А плоская граница в ТП есть в текущей сборке... и намано работает огромное спасибо  Подмигивание Правда там тоже есть пара "но" ... но я в другую тему пошел  Подмигивание

Пы.Сы. Арта оказался проворнее  Смех
Пы.Сы.2 Прошу прощения Chieftain конечно же... ошибся в нике
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Коллекции в 1С++
Ответ #14 - 04. Июля 2008 :: 10:37
Печать  
Народ, Не уходим от темы.

Михаил, поясни по ИменованныйВектор подробнее, как ты планируешь сделать одновременный доступ по индексу и строке, что-то не пойму.
  

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



Сообщений: 3046
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Коллекции в 1С++
Ответ #15 - 04. Июля 2008 :: 10:49
Печать  
trdm писал(а) 04. Июля 2008 :: 08:44:
Блин, лучше сделайте в 1С++ закладки и панель инструментов, не зависимые от офисов и прочей хрени Улыбка
А структура сейчас достаточно хорошо работает, её хватает Улыбка.

офф.
Дима, может это подойдет http://www.1cpp.ru/forum/YaBB.pl?num=1215168467
  

1&&2&&3
Наверх
 
IP записан
 
trdm
1c++ power user
qt1l developer
1c++ moderator
Отсутствует



Сообщений: 2343
Местоположение: г. Ростов-на-Дону
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Коллекции в 1С++
Ответ #16 - 04. Июля 2008 :: 11:44
Печать  
trad писал(а) 04. Июля 2008 :: 10:49:
офф.
Дима, может это подойдет http://www.1cpp.ru/forum/YaBB.pl?num=1215168467

О! Подошло! Работает!
А интересно, можно ли из этой ВК вытянуть интерфейс для добавления МФС-шных контролов,
назвать 1C++AdCtrl.dll и избавиться от этих зависимостей. А то офис ставить на терминал-сервер не очень хорошая идея...
  
Наверх
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Коллекции в 1С++
Ответ #17 - 04. Июля 2008 :: 12:14
Печать  
artbear писал(а) 04. Июля 2008 :: 10:37:
Народ, Не уходим от темы.

Михаил, поясни по ИменованныйВектор подробнее, как ты планируешь сделать одновременный доступ по индексу и строке, что-то не пойму.

Ну как - например, как большинство коллекций, используемых в ТП.
Типа колонок или полей поставщика ODBC.
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Коллекции в 1С++
Ответ #18 - 07. Июля 2008 :: 04:57
Печать  
kms писал(а) 04. Июля 2008 :: 08:32:
Таким образом, думаю, надо просто определиться, какие коллекции нам нужны.
Мне лично не хватает одной - единственной коллекции, о которой я вчера уже упомянул.

Это вектор, заодно индексированный строкой ("ИменованныйВектор").
Можно будет использовать вместо структуры и СЗ, в том числе во множестве мест в ИТ.
Прост в реализации, может вырождаться в просто "Вектор", если задавать пустые ключи, к примеру.
Прост в применении, ибо жестко не требует наличия итераторов, достаточно индексов.
Для реализации в icpp уже есть все, что нужно (CIStringMap/std::vector (или std::deque)).
И т.д.

Именованный вектор также можно использовать как hash_set / hash_map.
В принципе, структура - это по-сути и есть hash_map.

Посмотрел вектора и коллекции, реализованные в CSimpleCollection и CSimpleVector.
В принципе, CSimpleVector как вектор устроит.
1. Михаил, каким образом можно выписать его реализацию и зарегить его как объект "Вектор/Vector" - как обычно, создав новый контекст и продублировав код вызова? или как-то по-другому, через CSimpleCollection ?

2. Изучал CSimpleCollection, так и не понял, где в этом классе доступ по другим ключам, кроме числового индекса. Это к теме именованного вектора, индексированного и числом, и строкой Печаль
Михаил, поясни, плиз.
  

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С++
Ответ #19 - 07. Июля 2008 :: 09:13
Печать  
artbear писал(а) 07. Июля 2008 :: 04:57:
Посмотрел вектора и коллекции, реализованные в CSimpleCollection и CSimpleVector.
В принципе, CSimpleVector как вектор устроит.
1. Михаил, каким образом можно выписать его реализацию и зарегить его как объект "Вектор/Vector" - как обычно, создав новый контекст и продублировав код вызова? или как-то по-другому, через CSimpleCollection ?

Зарегистрировал (icpp).

Описание соответствует коллекции "ИндексыКартинок":
http://www.1cpp.ru/docum/icpp/html/TableField.html#id52

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

Например, выгрузку в СЗ я сделал универсальной для всех коллекций.
Можно поддержать и дополнительные классы, ИТ например.
Но хотелось бы, чтобы это было на этот раз универсально, через внешние интерфейсы, типа ResultLoader'а - т.е. надо продумать.

Цитата:
2. Изучал CSimpleCollection, так и не понял, где в этом классе доступ по другим ключам, кроме числового индекса. Это к теме именованного вектора, индексированного и числом, и строкой Печаль
Михаил, поясни, плиз.

Ну, это пока было в планах. Улыбка
Давайте тоже сделаем.
  

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


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

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

Например, выгрузку в СЗ я сделал универсальной для всех коллекций.
Можно поддержать и дополнительные классы, ИТ например.
Но хотелось бы, чтобы это было на этот раз универсально, через внешние интерфейсы, типа ResultLoader'а - т.е. надо продумать.

Например,
1) загрузка из СЗ,
2) загрузки из колонки ТЗ/ИТЗ
3) загрузка из текущей/переданной строки ТЗ/ИТЗ
все 3 варианта лучше делать через интерфейсы, конечно.
4) Для ИТЗ также лучше сделать интерфейс загрузки/выгрузки, наподобие того, как Саша сделал в 1sqlite - выгружать одно удовольствие, буквально пара строк кода Улыбка
  

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С++
Ответ #21 - 07. Июля 2008 :: 09:38
Печать  
Может тогда действительно сделать прокси-объекты для загрузки и выгрузки
- строки ТЗ
- колонки ТЗ
- строки ИТ
- колонки ИТ
- СЗ

При этом можно сразу спроектировать интерфейс так, чтобы заодно поддержать и коллекции, индексированные строкой.
Ну, к примеру, для строк ТЗ и ИТ ключом может являться имя колонки, для СЗ - представление.
Для колонок ТЗ и ИТ - хз, может быть, значение другой выбранной колонки?
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Коллекции в 1С++
Ответ #22 - 09. Июля 2008 :: 05:12
Печать  
Давайте решать по интерфейсам выгрузки/загрузки.

1. В ИТ нужно добавить метод ВыгрузитьСтроку для универсальности.
Т.е. у нас будут полные пары Загрузить/Выгрузить и ЗаполнитьСтроку/ВыгрузитьСтроку.

Параметры напрашиваются следующие
ИТЗ::ВыгрузитьСтроку(КудаВыгружаем, [Индекс = ""], [НомерСтроки = ""])

Интерфейс соответственно аналогично интерфейсу ISQLiteResultLoader

Цитата:
     class Utils1cpp::ICollectionLoader
     // Подготовка приемника к приему результатов
     // Должен возвращать количество элементов, которое готов принять приемник.
     virtual DWORD init(DWORD elemCountsInResult) = 0;

     // Добавление метаданных элемента в результат запроса
     virtual void setIndexMetadata(DWORD elemIdx, const CString& elemName, const CType& type) = 0;

     // Добавление строки в результат запроса.
     // Параметр - массив указателей на CValue, количеством равный количеству
     // добавленных элементов
     virtual void addValues(CValue** ppValues) = 0;

Возможно, setIndexMetadata и не нужно, но для именованных ключей может и пригодиться.

Без этого метода поставщик 1sqlite от Степана, например, работать удовлетворительно не будет Печаль
  

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С++
Ответ #23 - 09. Июля 2008 :: 05:40
Печать  
artbear писал(а) 09. Июля 2008 :: 05:12:
1. В ИТ нужно добавить метод ВыгрузитьСтроку для универсальности.
Т.е. у нас будут полные пары Загрузить/Выгрузить и ЗаполнитьСтроку/ВыгрузитьСтроку.

Параметры напрашиваются следующие
ИТЗ::ВыгрузитьСтроку(КудаВыгружаем, [Индекс = ""], [НомерСтроки = ""])

Точнее так,
ИТЗ::ВыгрузитьСтроку(КудаВыгружаем, [Индекс = ""], [Колонки = ""], [НомерСтроки = ""])
для большей вариативности.
Внутренний интерфейс при этом не меняется.
  

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


А нужны ли мы нам?

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Коллекции в 1С++
Ответ #24 - 09. Июля 2008 :: 05:58
Печать  
artbear писал(а) 09. Июля 2008 :: 05:40:
artbear писал(а) 09. Июля 2008 :: 05:12:
1. В ИТ нужно добавить метод ВыгрузитьСтроку для универсальности.
Т.е. у нас будут полные пары Загрузить/Выгрузить и ЗаполнитьСтроку/ВыгрузитьСтроку.

Параметры напрашиваются следующие
ИТЗ::ВыгрузитьСтроку(КудаВыгружаем, [Индекс = ""], [НомерСтроки = ""])

Точнее так,
ИТЗ::ВыгрузитьСтроку(КудаВыгружаем, [Индекс = ""], [Колонки = ""], [НомерСтроки = ""])
для большей вариативности.
Внутренний интерфейс при этом не меняется.

Ага. Только индекс тут не нужен Улыбка
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Коллекции в 1С++
Ответ #25 - 09. Июля 2008 :: 06:12
Печать  
ADirks писал(а) 09. Июля 2008 :: 05:58:
Ага. Только индекс тут не нужен Улыбка

Ага Улыбка
Ну, типа по аналогии - насколько возможно:
Код
Выбрать все
ЗаполнитьСтроку([чНомерСтроки = 0], Источник, [чНомерСтрокиИсточника = 0], [чПоИменамКолонок = 0])
 


Код
Выбрать все
ВыгрузитьСтроку(чНомерСтроки = 0, Приемник, [Колонки = ""])
 

  

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


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

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

ЗЫ вопросов по интерфейсу ICollectionLoader нет?
  

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С++
Ответ #27 - 09. Июля 2008 :: 10:13
Печать  
[quote author=artbear link=1215152763/15#26 date=1215597543]
И кто реализует?
ЗЫ вопросов по интерфейсу ICollectionLoader нет?[/quote]
Все равно. :)
Но раньше, чем сделаю ассоциативные коллекции, я точно за это не возьмусь.
  

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


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

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

2 - ты выгрузку в СЗ проверял?
у меня Вектор.Количество() = 2, а СЗ.РазмерСписка() = 1 после Вектор.Выгрузить(СЗ) :
(
  

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С++
Ответ #29 - 10. Июля 2008 :: 10:21
Печать  
Если моё мнение как-то учитывается, то пусть коллекции нумеруются с 1.
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Коллекции в 1С++
Ответ #30 - 10. Июля 2008 :: 10:39
Печать  
artbear писал(а) 10. Июля 2008 :: 10:07:
Михаил, вопрос по Вектору и коллекциям
1 - нумерация в открытых для пользователя коллекциях всегда идет с 0 ?
Не будет ли это неудобно в 1С, где привыкли к нумерации с 1.
Например, в ИТЗ и колонки, и строки нумеруются с 1.

2 - ты выгрузку в СЗ проверял?
у меня Вектор.Количество() = 2, а СЗ.РазмерСписка() = 1 после Вектор.Выгрузить(СЗ) Печаль

По выгрузке в СЗ все ок, я ошибся Печаль

По нумерации вопрос остается.
  

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С++
Ответ #31 - 10. Июля 2008 :: 10:53
Печать  
[quote author=artbear link=1215152763/30#30 date=1215686367]
Михаил, вопрос по Вектору и коллекциям
1 - нумерация в открытых для пользователя коллекциях всегда идет с 0 ?
Не будет ли это неудобно в 1С, где привыкли к нумерации с 1.
Например, в ИТЗ и колонки, и строки нумеруются с 1.
[/quote]
Ну, в ТП так сделано.
В v8 так сделано.

Я за нумерацию с 0 - потом  легче будет. :)

[quote][quote]
2 - ты выгрузку в СЗ проверял?
у меня Вектор.Количество() = 2, а СЗ.РазмерСписка() = 1 после Вектор.Выгрузить(СЗ) :([/quote]
По выгрузке в СЗ все ок, я ошибся :(
[/quote]
Пустые теряются - СЗ так устроенО.
  

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


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Коллекции в 1С++
Ответ #32 - 10. Июля 2008 :: 10:55
Печать  
JohnyDeath писал(а) 10. Июля 2008 :: 10:21:
Если моё мнение как-то учитывается, то пусть коллекции нумеруются с 1.

Женя, твое мнение очень даже учитывается.
Но я этот вопрос продумывал.
  

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



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Коллекции в 1С++
Ответ #33 - 10. Июля 2008 :: 11:13
Печать  
kms писал(а) 10. Июля 2008 :: 10:55:
JohnyDeath писал(а) 10. Июля 2008 :: 10:21:
Если моё мнение как-то учитывается, то пусть коллекции нумеруются с 1.

Женя, твое мнение очень даже учитывается.
Но я этот вопрос продумывал.

Да, тут с одной стороны 1С 7.7, где всё нумеруется с единицы, а с другой - все остальные "нормальные" системы, включая 8-ку.
Я пошёл по пути наименьшего сопротивления  Улыбка Если нумерация будет начинаться с нуля - пусть начинается, вам по-любому виднее.  Подмигивание
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Коллекции в 1С++
Ответ #34 - 10. Июля 2008 :: 11:30
Печать  
[quote author=kms link=1215152763/30#31 date=1215687187]
[quote][quote]
2 - ты выгрузку в СЗ проверял?
у меня Вектор.Количество() = 2, а СЗ.РазмерСписка() = 1 после Вектор.Выгрузить(СЗ) :([/quote]
По выгрузке в СЗ все ок, я ошибся :(
[/quote]
Пустые теряются - СЗ так устроенО.
[/quote]
Про пустые я знаю, это в данном случае было ни при чем, у меня был баг в коде :)

Кстати, предложение по выгрузке в СЗ из коллекций - т.к. коллекции позволяют пустые значения, а СЗ нет, выгрузка в СЗ может приводить к разнице размеров, сдвигам позиций и т.д., что может плохо повлиять на алгоритмы.
Поэтому предлагаю добавить в метод Коллекция::Выгрузить(СЗ) доп. параметр типа фНаличиеПустогоПараметраПриводитКИсключению, по умолчанию он задан - т.е. типа
Коллекция::Выгрузить(СЗ, [фНаличиеПустогоПараметраПриводитКИсключению = 1])

Кому все-таки нужна подобная неоднозначная выгрузка при наличии пустых значений в коллекции, будут явно передавать второй параметр в 0.

Что скажете?

ЗЫ да, я также согласен с нумерацией с 0.
  

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С++
Ответ #35 - 10. Июля 2008 :: 12:25
Печать  
Реализован метод ИТЗ::ВыгрузитьСтроку(чНомерСтроки = 0, Приемник, [Колонки = ""]) в 3.0
http://www.1cpp.ru/bugs/show_bug.cgi?id=3978

В наличии тесты + дока

PS пока только для класса Вектор или его наследников, ну или для любых коллекций, которые доступны из 1С.
  

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С++
Ответ #36 - 10. Июля 2008 :: 13:27
Печать  
kms

Михаил, по Вектору и коллекциям получается не всегда очевидное поведение.
Например, можно написать
 Вектор.Установить(1) или Вектор.Вставить(1),
1С и 1С++ это проглотят, хотя тут наверняка ведь опечатка, а не желание задать пустое значение для второго элемента в коллекции.

ИМХО для подобных методов второй параметр не должен быть по умолчанию.

это я тесты на Вектор пишу Улыбка - специально опечатался, и сразу и нарвался Печаль

Жду ответа.

PS тоже самое наверняка и в Сдвинуть Печаль
  

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С++
Ответ #37 - 10. Июля 2008 :: 13:43
Печать  
artbear писал(а) 10. Июля 2008 :: 13:27:
kms
Михаил, по Вектору и коллекциям получается не всегда очевидное поведение.

это я тесты на Вектор пишу Улыбка - специально опечатался, и сразу и нарвался Печаль

Далее по методу Процедура Вставить(Индекс, Значение)
Сейчас - если Индекс больше/равен количества элементов, он вставляется в конец вектора, независимо от переданного индекса, а не в позицию с указанным индексом.

Соответственно пользователь может быть неверно проинформирован, т.к. он может считать, что он успешно вставил элемент в позицию Индекс Печаль
Т.е. опять неоднозначность.

Это поведение метода CSimpleVector::Insert

Варианты исправления:
1. Сделать как в стандартной библиотеке шаблонов std - сделать метод функцией и возвращать номер позиции, куда был вставлен элемент. При этом количество элементов увеличивается так, чтобы новый элемент поместился в указанной позиции.
2. Или явно запретить вставку элементов, в позиции с индексом больше, чем количество текущих элементов.
В этом случае вектор будет расти только при явном изменении размера через Вектор::ИзменитьРазмер или Вектор::Добавить.

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

Жду ответа.
  

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С++
Ответ #38 - 10. Июля 2008 :: 14:08
Печать  
В общем, тестирование Forever Улыбка
  

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С++
Ответ #39 - 10. Июля 2008 :: 14:54
Печать  
1. По параметризации выгрузки пустых - не, не будем делать.
Последние дни меня склонили к мысли, что такие параметры должны принадлежать прокси-объектам - загрузчикам результатов.
А интерфейс выгрузки должен быть простым, четким и односторонним (т.е. учитывать только интересы источника).

2. По параметрам по умолчанию - согласен.
Их там сейчас просто нет, это есть в планах.

3. По Вставке за границей.
Увеличивать размер - точно не будем.
Насчет исключения - ну можно, наверное... немного еще подумаю над этим.

P.S.
[quote author=artbear link=1215152763/30#36 date=1215696467]
это я тесты на Вектор пишу :) - специально опечатался, и сразу и нарвался :(
[/quote]
Поддерживаю тебя в этом.
Я положительно отношусь к TDD, хотя считаю, что по значимости логика намного важнее.
TDD снижают требования по применению логики, и в этом его сила и опасность.
  

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


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Коллекции в 1С++
Ответ #40 - 10. Июля 2008 :: 21:46
Печать  
Артур.

Доработал немного выгрузку.
Теперь можно получать выгрузку имен колонок, данных строки или всего вместе.

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

Не правда ли, чУдно? :)

P.S.
Как вы с Лехой думаете - не стоит пока не поздно переделать чуть порядок параметров на:
[tt]
ВыгрузитьСтроку(Приемник, чНомерСтроки, [Колонки = ""], флВыгружатьИмена)
[/tt]
Все же приемник всегда указывается, в отличие от номера строки и колонок.
  

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


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

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

Не правда ли, чУдно? :)

P.S.
Как вы с Лехой думаете - не стоит пока не поздно переделать чуть порядок параметров на:
[tt]
ВыгрузитьСтроку(Приемник, чНомерСтроки, [Колонки = ""], флВыгружатьИмена)
[/tt]
Все же приемник всегда указывается, в отличие от номера строки и колонок.[/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С++
Ответ #42 - 11. Июля 2008 :: 02:42
Печать  
[quote author=kms link=1215152763/30#39 date=1215701667]
2. По параметрам по умолчанию - согласен.
Их там сейчас просто нет, это есть в планах.
[/quote]
Это ты про Вставить(1) без второго параметра?
Если да, тогда я не понял твоего решения - считаем это ошибкой и исправляем? или нет?
Плиз, сам исправь, т.к. я еще до конца твою логику построения контекста не уяснил :)
  

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С++
Ответ #43 - 11. Июля 2008 :: 03:00
Печать  
[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 &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

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

ИМХО для использования метода пользователи будут всегда предварительно получать разницу между Индекс и конечной позицией Печаль, что не есть гуд.

Жду комментариев.
  

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С++
Ответ #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 &amp;&amp; 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 записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Коллекции в 1С++
Ответ #60 - 14. Июля 2008 :: 10:58
Печать  
Дока на Вектор внесена в репозитарий icpp.
Вот только соберется, похоже, только, когда Федор поправит сборку Печаль
  

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С++
Ответ #61 - 15. Июля 2008 :: 03:46
Печать  
Добавил к ВыгрузитьСтроку фичу выгрузки в ТаблицаЗначений.

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

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

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

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С++
Ответ #62 - 15. Июля 2008 :: 08:09
Печать  
Да, теперь весьма универсально получилось.
Может быть, только не CValue2ResultLoader(vDest), а CBLContext2ResultLoader() сделать.
И совсем хорошо бы реализовать схему автоудаления через Release() для VL/VT ResultLoader.
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Коллекции в 1С++
Ответ #63 - 15. Июля 2008 :: 08:26
Печать  
kms писал(а) 15. Июля 2008 :: 08:09:
Может быть, только не CValue2ResultLoader(vDest), а CBLContext2ResultLoader() сделать.

Ага, сам уже над этим раздумывал.

kms писал(а) 15. Июля 2008 :: 08:09:
И совсем хорошо бы реализовать схему автоудаления через Release() для VL/VT ResultLoader.

Расскажи, подробнее, как сделать? желательно с кодом.

ЗЫ у меня вообще уже готова и протестирована выгрузка из ИТЗ через универсальный интерфейс для ТЗ, СЗ и коллекций.
Нарисовал еще кучу тестов для ИТЗ::Выгрузить, все проходят Улыбка
Сейчас буду заливать.
  

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С++
Ответ #64 - 15. Июля 2008 :: 08:29
Печать  
artbear писал(а) 15. Июля 2008 :: 08: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С++
Ответ #65 - 15. Июля 2008 :: 08:41
Печать  
Завел новую тему об универсальных интерфейсах загрузки/выгрузки
http://www.1cpp.ru/forum/YaBB.pl?num=1216110955/0#0
Прошу обсуждать их там, а не в этой ветке.
  

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С++
Ответ #66 - 15. Июля 2008 :: 16:22
Печать  
artbear писал(а) 15. Июля 2008 :: 08:26:
kms писал(а) 15. Июля 2008 :: 08:09:
И совсем хорошо бы реализовать схему автоудаления через Release() для VL/VT ResultLoader.

Расскажи, подробнее, как сделать? желательно с кодом.

Ну, как любой COM - объект, или как автоудаляемый CBLContext, например.
В классе - реализующем интерфейс делаешь "счетчик ссылок", который увеличивается на 1 в AddRef() и уменьшается на 1 в Release().
По достижению 0 - объект уничтожается.
  

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


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Коллекции в 1С++
Ответ #67 - 15. Июля 2008 :: 16:23
Печать  
artbear писал(а) 15. Июля 2008 :: 08:29:
Для СЗ можно выгрузить только одну колонку, если передано несколько колонок, выбрасывается исключение. В универсальной выгрузке ИТЗ::Выгрузить(СЗ) я сохранил подобное поведение.

Но для коллекций подобное обеспечить не удается, т.к. они в принципе могут принимать и две колонки, поэтому сделал просто - в коллекции будет выгружаться только первая колонка из перечисленных, остальные выгружаться не будут. При этом никакой ошибки не возникнет, т.е. это для коллекций штатная ситуация.

Да, думаю, это нормально.
Единственно, если еще не сделал - неплохо бы, чтобы при выгрузке 2х колонок вторая колонка попадала в представление.
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Коллекции в 1С++
Ответ #68 - 16. Июля 2008 :: 03:12
Печать  
kms писал(а) 15. Июля 2008 :: 16:23:
Единственно, если еще не сделал - неплохо бы, чтобы при выгрузке 2х колонок вторая колонка попадала в представление.

Для СЗ сделал, конечно, + тесты.
Для коллекций пока нет, т.к. не понимаю, как для них указать представление Улыбка
Или этого пока просто нету ? Улыбка
  

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С++
Ответ #69 - 16. Июля 2008 :: 03:14
Печать  
kms писал(а) 15. Июля 2008 :: 16:22:
artbear писал(а) 15. Июля 2008 :: 08:26:
kms писал(а) 15. Июля 2008 :: 08:09:
И совсем хорошо бы реализовать схему автоудаления через Release() для VL/VT ResultLoader.

Расскажи, подробнее, как сделать? желательно с кодом.

Ну, как любой COM - объект, или как автоудаляемый CBLContext, например.
В классе - реализующем интерфейс делаешь "счетчик ссылок", который увеличивается на 1 в AddRef() и уменьшается на 1 в Release().
По достижению 0 - объект уничтожается.

Да, это понятно.
В какой момент вызывать Release при выгрузке в этот приемник? после окончания выгрузки, т.е. после ldrDone ?

ЗЫ а вообще внутри 1С++ пока обошелся просто shared_ptr Улыбка
  

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



Сообщений: 3046
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Коллекции в 1С++
Ответ #70 - 16. Июля 2008 :: 05:22
Печать  
kms писал(а) 15. Июля 2008 :: 16:23:
... при выгрузке 2х колонок вторая колонка попадала в представление.
а 3х - третья в пометку
  

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



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Коллекции в 1С++
Ответ #71 - 23. Июля 2008 :: 05:23
Печать  
artbear писал(а) 10. Июля 2008 :: 12:25:
Реализован метод ИТЗ::ВыгрузитьСтроку(чНомерСтроки = 0, Приемник, [Колонки = ""]) в 3.0
http://www.1cpp.ru/bugs/show_bug.cgi?id=3978

В наличии тесты + дока

PS пока только для класса Вектор или его наследников, ну или для любых коллекций, которые доступны из 1С.


В документации ошибка:

Цитата:
ВыгрузитьСтроку / Unload

Синтаксис: ВыгрузитьСтроку(Приемник, [чНомерСтроки = 0], [Колонки = ""], [чПоложениеИменКолонок = 0])


Или вы ещё с интерфейсом не определились?
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Коллекции в 1С++
Ответ #72 - 23. Июля 2008 :: 05:25
Печать  
Нет, как в документации все верно Улыбка
Мы слегка исправили интерфейс для совпадения с аналогичными методами, где первым всегда стоит Приемник.
  

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



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Коллекции в 1С++
Ответ #73 - 23. Июля 2008 :: 05:30
Печать  
artbear писал(а) 23. Июля 2008 :: 05:25:
Нет, как в документации все верно Улыбка
Мы слегка исправили интерфейс для совпадения с аналогичными методами, где первым всегда стоит Приемник.


Ну тогда ещё реализацию исправьте  Смех. А то неработает.
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Коллекции в 1С++
Ответ #74 - 23. Июля 2008 :: 05:45
Печать  
Nick писал(а) 23. Июля 2008 :: 05:30:
artbear писал(а) 23. Июля 2008 :: 05:25:
Нет, как в документации все верно Улыбка
Мы слегка исправили интерфейс для совпадения с аналогичными методами, где первым всегда стоит Приемник.


Ну тогда ещё реализацию исправьте  Смех. А то неработает.

И верно Улыбка
Я доку поправил, а в коде и тестах как было, так и осталось Печаль
  

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С++
Ответ #75 - 23. Июля 2008 :: 05:47
Печать  
artbear писал(а) 23. Июля 2008 :: 05:45:
И верно Улыбка
Я доку поправил, а в коде и тестах как было, так и осталось Печаль

Ну, бывает...
Мы же тогда не приняли решение, просто продекларировали, что это было бы неплохо.
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Коллекции в 1С++
Ответ #76 - 23. Июля 2008 :: 06:02
Печать  
Исправлено.

ЗЫ мы решим технические вопросы и, наверное, сегодня выложим еще одну сборку 3.0.1.12 с фиксами.
  

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С++
Ответ #77 - 23. Июля 2008 :: 10:24
Печать  
Научил коллекции (Вектор, АссоциативныйВектор) выгружаться в любую другую коллекцию или СписокЗначений, или ТаблицаЗначений.

Михаил, может быть, для Коллекция::Выгрузить(Приемник) изменить поведение?
Т.е. при передаче пустого значения не делать выгрузку в СписокЗначений, как сейчас, выгружать в простой Вектор ?
Или вообще запретить передавать пустое значение приемника?

PS тесты подтверждают.
  

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С++
Ответ #78 - 23. Июля 2008 :: 18:01
Печать  
artbear писал(а) 23. Июля 2008 :: 10:24:
Научил коллекции (Вектор, АссоциативныйВектор) выгружаться в любую другую коллекцию или СписокЗначений, или ТаблицаЗначений.

Отлично! Мы этого и добивались.

Но есть одна проблема, Артур.
Ты не заметил, а моя выгрузка работала со списком на форме.
Надо бы вернуть эту возможность.
http://www.1cpp.ru/bugs/show_bug.cgi?id=4016

Цитата:
Михаил, может быть, для Коллекция::Выгрузить(Приемник) изменить поведение?
Т.е. при передаче пустого значения не делать выгрузку в СписокЗначений, как сейчас, выгружать в простой Вектор ?
Или вообще запретить передавать пустое значение приемника?

Конечно запретить - абсолютно согласен.
  

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


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Коллекции в 1С++
Ответ #79 - 23. Июля 2008 :: 18:13
Печать  
Цитата:
           // artbear TODO как быть с тем, что СписокЗначений в 1С не принимает пустые значения
           // сейчас же пустые значения копируются также, как и заполненные.
           // мне это нравится - т.к. есть точное соответствие между ИТЗ и СЗ

Армянское радио отвечает: да и хрен с ним.
Ну, можно кидать исключение при передаче пустых - но мое мнение - это лишнее.
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Коллекции в 1С++
Ответ #80 - 24. Июля 2008 :: 05:35
Печать  
kms писал(а) 23. Июля 2008 :: 18:01:
Но есть одна проблема, Артур.
Ты не заметил, а моя выгрузка работала со списком на форме.
Надо бы вернуть эту возможность.
http://www.1cpp.ru/bugs/show_bug.cgi?id=4016

Зато твоя выгрузка работает как штатное добавление значение в СЗ, и в итоге пустые значения при выгрузке пропускаются Печаль, т.е. приемник-СЗ перестает соответствовать источнику, что плохо.
Тесты это показывают четко!
Предлагаю пока пустые значения загружать, как и было.

А насчет списка на форме я тест залью в репозитарий, он падает + баг висит.

Еще подумаем, лады?
  

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С++
Ответ #81 - 24. Июля 2008 :: 06:16
Печать  
Залил тесты (Вектор, АссоцВектор, ИТЗ) + код по загрузке в СЗ.

Интересная ситуация - падают тесты для
Вектор::Выгрузить(СЗНаФорме)
АссоцВектор::Выгрузить(СЗНаФорме)
но не падают
ИТЗ::Выгрузить(СЗНаФорме ...)
ИТЗ::ВыгрузитьВСтроку(СЗНаФорме ...)

Очень странно Печаль
Ведь реализация приемника одинакова во всех случаях.

ЗЫ также добавил тесты для ТЗ на форме, они проходят нормально.
  

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С++
Ответ #82 - 24. Июля 2008 :: 06:30
Печать  
artbear писал(а) 24. Июля 2008 :: 06:16:
Интересная ситуация - падают тесты для
Вектор::Выгрузить(СЗНаФорме)
АссоцВектор::Выгрузить(СЗНаФорме)
но не падают
ИТЗ::Выгрузить(СЗНаФорме ...)
ИТЗ::ВыгрузитьВСтроку(СЗНаФорме ...)

Очень странно Печаль
Ведь реализация приемника одинакова во всех случаях.

Отбой тревоги, все нормально, неверно были составлены тесты.
  

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С++
Ответ #83 - 24. Июля 2008 :: 06:54
Печать  
Михаил, дока на АссоцВектор::Сортировать(Параметр) непонятна Печаль
что означает
Сортировать / Sort
---------------------------------------------------------------------
     :Синтаксис:
           Сортировать(Выражение)

     :Параметры:
           - Выражение, тип: Строка
                 Выражение сортировки.
                 Состоит из перечисления "колонок", разделенных запятыми,
                 каждая из которых может иметь один или несколько модификаторов

                 **Колонки:**
                       + "Ключ"
                       + "Значение"

Насчет колонок/ключ/значение не понял Печаль
Поясни.

Раз дока непонятна, значит, непонятно, как использовать и тестов не могу составить Печаль
Жду.
  

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С++
Ответ #84 - 24. Июля 2008 :: 08:07
Печать  
artbear писал(а) 24. Июля 2008 :: 06:54:
Михаил, дока на АссоцВектор::Сортировать(Параметр) непонятна Печаль
Насчет колонок/ключ/значение не понял Печаль

Да там все просто, например

- Сортировать("Ключ,Значение") - сортировать по возрастанию ключа, далее - по представлению значений
- Сортировать("Ключ,*Значение") - сортировать по возрастанию ключа, далее - по внутр. представлению значений
- Сортировать("-Значение,^#Ключ") - сортировать по убыванию ключа, далее - по возрастанию ключа без учета регистра и с обрезкой пробелов
- Сортировать("Ключ") - только по ключу
- Сортировать("Значение") - только по значению
- Сортировать () - неверное использование

Вектор::Сортировать() - допускается и означает простую сортировку значений.
Сортировка простого вектора аналогична в плане примененных модификаторов, просто можно не указывать наименование колонки, т.к. она всего одна ("Значение").
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Коллекции в 1С++
Ответ #85 - 24. Июля 2008 :: 08:27
Печать  
1. Залей эту инфу в репозитарий, плиз.
Думаю, что не мне одному будет непонятна текущая дока Улыбка

2. Значит, для простого Вектора можно написать Сортировать("*Значение") и т.д., т.е. можно писать значение, а можно не писать?
  

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С++
Ответ #86 - 24. Июля 2008 :: 09:09
Печать  
artbear писал(а) 24. Июля 2008 :: 05:35:
kms писал(а) 23. Июля 2008 :: 18:01:
Но есть одна проблема, Артур.
Ты не заметил, а моя выгрузка работала со списком на форме.
Надо бы вернуть эту возможность.
http://www.1cpp.ru/bugs/show_bug.cgi?id=4016

Зато твоя выгрузка работает как штатное добавление значение в СЗ, и в итоге пустые значения при выгрузке пропускаются Печаль, т.е. приемник-СЗ перестает соответствовать источнику, что плохо.

Тесты это показывают четко!
Предлагаю пока пустые значения загружать, как и было.

А насчет списка на форме я тест залью в репозитарий, он падает + баг висит.

Еще подумаем, лады?

Нет проблем, время есть, можно и подумать.
Но на мой взгляд, использование СЗ сейчас уже будет скорее привязано к форме (пометки, представления и т.д.).
Так что рваться, чтобы загрузить в СЗ пустые значения, я смысла не вижу.
Для этого есть уже несколько нормальных контейнеров, которые как раз не имеют привязки к форме.
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Коллекции в 1С++
Ответ #87 - 24. Июля 2008 :: 11:39
Печать  
ИМХО для АссоцВектор-а не хватает метода получения ключа по числовому индексу и наоборот.
  

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С++
Ответ #88 - 24. Июля 2008 :: 13:18
Печать  
artbear писал(а) 24. Июля 2008 :: 11:39:
ИМХО для АссоцВектор-а не хватает метода получения ключа по числовому индексу и наоборот.

Я знаю.
По ключу-строке перейти к индексу можно - это метод "НайтиКлюч" в двух вариантах.
А вот получения ключа по индексу не хватает - добавлю.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Коллекции в 1С++
Ответ #89 - 25. Июля 2008 :: 03:20
Печать  
artbear писал(а) 23. Июля 2008 :: 10:24:
Научил коллекции (Вектор, АссоциативныйВектор) выгружаться в любую другую коллекцию или СписокЗначений, или ТаблицаЗначений.

Михаил, может быть, для Коллекция::Выгрузить(Приемник) изменить поведение?
Т.е. при передаче пустого значения не делать выгрузку в СписокЗначений, как сейчас, выгружать в простой Вектор ?
Или вообще запретить передавать пустое значение приемника?

PS тесты подтверждают.


А вот эти изменения когда попадут в релиз? Сейчас в вектор не выгружается Печаль

Хотелка: второй необязательный параметр методу Выгрузить - "Очищать" Значениея (0, 1), по умолчанию 1.
т.е. чтоб можно было объединить два вектора, или дополнить список значений
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Коллекции в 1С++
Ответ #90 - 25. Июля 2008 :: 03:32
Печать  
Nick писал(а) 25. Июля 2008 :: 03:20:
А вот эти изменения когда попадут в релиз? Сейчас в вектор не выгружается Печаль

Сегодня соберу релиз.

А все хотелки пиши в багзиллу.
  

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С++
Ответ #91 - 25. Июля 2008 :: 06:08
Печать  
Nick писал(а) 25. Июля 2008 :: 03:20:
Хотелка: второй необязательный параметр методу Выгрузить - "Очищать" Значениея (0, 1), по умолчанию 1.
т.е. чтоб можно было объединить два вектора, или дополнить список значений

Нет, никакого "очищать" в векторах при выгрузке не будет.
Саша Орефков также обещался убрать это у себя из выгрузки результатов запроса.

Если сейчас приемники очищаются, то, скорее всего, это поведение будет изменено.
  

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


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Коллекции в 1С++
Ответ #92 - 25. Июля 2008 :: 06:10
Печать  
artbear писал(а) 25. Июля 2008 :: 03:32:
А все хотелки пиши в багзиллу.

Я совсем не уверен, что в багзиллу нужно писать "все" хотелки.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Коллекции в 1С++
Ответ #93 - 25. Июля 2008 :: 06:12
Печать  
kms писал(а) 25. Июля 2008 :: 06:08:
Нет, никакого "очищать" в векторах при выгрузке не будет.
Саша Орефков также обещался убрать это у себя из выгрузки результатов запроса.

Если сейчас приемники очищаются, то, скорее всего, это поведение будет изменено.


Т.е. метод будет всегда добавлять, а если нужно очистить, можно это сделать самому?
  
Наверх
ICQ  
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Коллекции в 1С++
Ответ #94 - 25. Июля 2008 :: 06:15
Печать  
Nick писал(а) 25. Июля 2008 :: 06:12:
Т.е. метод будет всегда добавлять, а если нужно очистить можно это сделать самому?

Да.

Я считаю, что метод источника не должен управлять приемником.
Его задача - исключительно предоставление данных в нужном протоколе.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Коллекции в 1С++
Ответ #95 - 25. Июля 2008 :: 06:16
Печать  
kms писал(а) 25. Июля 2008 :: 06:15:
Nick писал(а) 25. Июля 2008 :: 06:12:
Т.е. метод будет всегда добавлять, а если нужно очистить можно это сделать самому?

Да.

Я считаю, что метод источника не должен управлять приемником.
Его задача - исключительно предоставление данных в нужном протоколе.

+1
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Коллекции в 1С++
Ответ #96 - 25. Июля 2008 :: 06:18
Печать  
kms писал(а) 25. Июля 2008 :: 06:08:
Нет, никакого "очищать" в векторах при выгрузке не будет.
Саша Орефков также обещался убрать это у себя из выгрузки результатов запроса.

Если сейчас приемники очищаются, то, скорее всего, это поведение будет изменено.

Да, пока очищаются.
Сейчас нарисую я доп.тесты, чтобы не забыть исправить.
  

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С++
Ответ #97 - 28. Июля 2008 :: 05:54
Печать  
kms писал(а) 25. Июля 2008 :: 06:15:
Nick писал(а) 25. Июля 2008 :: 06:12:
Т.е. метод будет всегда добавлять, а если нужно очистить можно это сделать самому?

Да.

Я считаю, что метод источника не должен управлять приемником.
Его задача - исключительно предоставление данных в нужном протоколе.

А что делать с ИТЗ::Выгрузить? для него задокументировано как раз очистка приемника перед загрузкой.
В целях совместимости придется оставить подобное поведение.
  

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С++
Ответ #98 - 28. Июля 2008 :: 06:08
Печать  
artbear писал(а) 25. Июля 2008 :: 06:18:
kms писал(а) 25. Июля 2008 :: 06:08:
Нет, никакого "очищать" в векторах при выгрузке не будет.
Саша Орефков также обещался убрать это у себя из выгрузки результатов запроса.

Если сейчас приемники очищаются, то, скорее всего, это поведение будет изменено.

Да, пока очищаются.
Сейчас нарисую я доп.тесты, чтобы не забыть исправить.

http://www.1cpp.ru/bugs/show_bug.cgi?id=4020
  

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С++
Ответ #99 - 28. Июля 2008 :: 06:30
Печать  
Также интересная ошибка http://www.1cpp.ru/bugs/show_bug.cgi?id=4021
  

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С++
Ответ #100 - 28. Июля 2008 :: 08:16
Печать  
artbear писал(а) 28. Июля 2008 :: 06:30:
Также интересная ошибка http://www.1cpp.ru/bugs/show_bug.cgi?id=4021

Да, точно, придется передавать строку, частично заполненную значениями.
У Саши, насколько я понимаю, то же самое.
  

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


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Коллекции в 1С++
Ответ #101 - 28. Июля 2008 :: 19:42
Печать  
artbear писал(а) 28. Июля 2008 :: 06:30:
Также интересная ошибка http://www.1cpp.ru/bugs/show_bug.cgi?id=4021

Ну, я там чуть подправил, погляди.
Мысль, правда, чуть поменялась - я думаю, надо чуть по-другому добавлять колонки при выгрузке в непустую ТЗ.
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Коллекции в 1С++
Ответ #102 - 29. Июля 2008 :: 05:59
Печать  
Михаил, хочу воспользоваться CBLSimpleVector внутри 1С++ для передачи данных в этом контейнере в 1С и не удается Печаль
Подключил хедер "SimpleBLCollection.h", пишу строку
CBLSimpleVector* p = new CBLSimpleVector;
компилятор выдает ошибку - типа нельзя юзать неполный тип Печаль

Что еще нужно подключить для правильной работы?
Жду ответа.

ЗЫ ну и думаю, что очень неудобно еще что-то подключать для использования этого класса Печаль
  

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С++
Ответ #103 - 29. Июля 2008 :: 06:17
Печать  
Отбой тревоги Улыбка - мой мелкий косячок с определением внутренних классов Печаль
  

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


I Love YaBB 2!

Сообщений: 256
Зарегистрирован: 01. Июня 2006
Re: Коллекции в 1С++
Ответ #104 - 01. Августа 2008 :: 07:53
Печать  
Новый баг и интерфейсом выгрузки из ИТЗ: http://www.1cpp.ru/bugs/show_bug.cgi?id=4030
Вот тема: http://www.1cpp.ru/forum/YaBB.pl?num=1217576503/0

PS: Такой баг был уже заявлен KMS.
Прямо не знаю - закрыть свой, или оставить Улыбка

Артур, он с 23-го висит. Подскажи, плиз, есть ли к-либо подвижки на эту тему?
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Коллекции в 1С++
Ответ #105 - 01. Августа 2008 :: 15:36
Печать  
Я в оффлайне до 7.08 Печаль
Так что ждите или обращайтесь к kms
  

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С++
Ответ #106 - 01. Августа 2008 :: 19:01
Печать  
artbear писал(а) 01. Августа 2008 :: 15:36:
Я в оффлайне до 7.08 Печаль
Так что ждите или обращайтесь к kms

Ждем, возвращайся! Улыбка
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Коллекции в 1С++
Ответ #107 - 19. Августа 2008 :: 04:30
Печать  
Для нормальной работы с коллекциями не хватает методов поиска.
Предлагаю в Вектор/АссоциативныйВектор добавить методы
Найти(Значение) - возвращает индекс, если найдено, и -1, если не найдено.
НайтиПоАлгоритму(АлгоритмПоиска) - возвращает вектор с индексами найденных значений, если найдено, и пустой вектор, если не найдено.

Что скажете?
  

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



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Коллекции в 1С++
Ответ #108 - 19. Августа 2008 :: 04:34
Печать  
artbear писал(а) 19. Августа 2008 :: 04:30:
Для нормальной работы с коллекциями не хватает методов поиска.
Предлагаю в Вектор/АссоциативныйВектор добавить методы
Найти(Значение) - возвращает индекс, если найдено, и -1, если не найдено.
НайтиПоАлгоритму(АлгоритмПоиска) - возвращает вектор с индексами найденных значений, если найдено, и пустой вектор, если не найдено.

Что скажете?


Алгоритм поиска в каком виде? Можно пример?
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Коллекции в 1С++
Ответ #109 - 19. Августа 2008 :: 05:09
Печать  
Nick писал(а) 19. Августа 2008 :: 04:34:
artbear писал(а) 19. Августа 2008 :: 04:30:
Для нормальной работы с коллекциями не хватает методов поиска.
Предлагаю в Вектор/АссоциативныйВектор добавить методы
Найти(Значение) - возвращает индекс, если найдено, и -1, если не найдено.
НайтиПоАлгоритму(ФункторПоиска) - возвращает вектор с индексами найденных значений, если найдено, и пустой вектор, если не найдено.

Что скажете?


Алгоритм поиска в каком виде? Можно пример?

В метод НайтиПоАлгоритму передаем какой-нибудь объект-функтор, у которого есть метод Найти(Значение) и который возвращает 0, если не найдено, и любое другое число, например, больше 0 , если значение найдено.
Функтором может быть объект ВыполняемыйМодуль или объект пользовательского класса.
Например, Вектор = Коллекция.НайтиПоАлгоритму(МойОбъектКОП)

А еще лучше НайтиПоАлгоритму(ФункторПоиска, ИмяМетодаПоиска)
В этом случае можно юзать простейший поиск по СЗ, т.е.
Вектор = Коллекция.НайтиПоАлгоритму(СписокНужныхЗначений, "НайтиЗначение")
без создания доп. ВМ или кода.
Наверняка найдется и другое применение.

ЗЫ в целях оптимизации, наверное, лучше не возвращать Вектор, а использовать переданный.
Число НайтиПоАлгоритму(ФункторПоиска, ИмяМетодаПоиска, ВекторРез) - 1, если нашли, и 0, если нет.
  

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С++
Ответ #110 - 19. Августа 2008 :: 05:22
Печать  
artbear писал(а) 19. Августа 2008 :: 04:30:
Для нормальной работы с коллекциями не хватает методов поиска.

Зарегил баг http://www.1cpp.ru/bugs/show_bug.cgi?id=4080
  

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С++
Ответ #111 - 19. Августа 2008 :: 16:14
Печать  
artbear писал(а) 19. Августа 2008 :: 04:30:
Для нормальной работы с коллекциями не хватает методов поиска.
Предлагаю в Вектор/АссоциативныйВектор добавить методы
Найти(Значение) - возвращает индекс, если найдено, и -1, если не найдено.
НайтиПоАлгоритму(АлгоритмПоиска) - возвращает вектор с индексами найденных значений, если найдено, и пустой вектор, если не найдено.


Цитата:
Что скажете?

Ну, в такой прямолинейной постановке задачи есть множество нерешенных вопросов.

1. Как должен осуществляться поиск? Линейно?
А если контейнер отсортирован? Бинарно? Это будет отдельный метод или модификация существующего?

2. Откуда должен осуществляться поиск?
С начала? С заданного индекса?

3. В каких пределах?
До конца? До заданного индекса?

4. Зачем возвращать вектор найденных значений?
Может быть, мне нужно только первое и последнее значения?

5. Направление поиска?
Вперед? Назад?

6. А собственный функтор сравнения не захочется?
Для упорядочивания по алгоритму и последующему поиску?

7. А позиционирование типа lower_bound/upper_bound/equal_range не понадобится?

Короче, можно долго рассуждать.
Чтобы решить все это эффективно, нужно понятие итератора.
Точно так же, как оно нужно было бы и для ИТ.

Кстати, кроме поиска, итераторы нужны во множестве других операций.
Вот только всерьез думать над их дизайном пока некогда.

А делать по-быстрому не хотелось бы.
Дабы не плодить списки несовместимостей из-за изначально непроработанных решений.

P.S.
А может быть, нам хватает возможностей ИТ?
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Коллекции в 1С++
Ответ #112 - 20. Августа 2008 :: 03:19
Печать  
kms писал(а) 19. Августа 2008 :: 16:14:
artbear писал(а) 19. Августа 2008 :: 04:30:
Для нормальной работы с коллекциями не хватает методов поиска.
Предлагаю в Вектор/АссоциативныйВектор добавить методы
Найти(Значение) - возвращает индекс, если найдено, и -1, если не найдено.
НайтиПоАлгоритму(АлгоритмПоиска) - возвращает вектор с индексами найденных значений, если найдено, и пустой вектор, если не найдено.


Цитата:
Что скажете?

1. Как должен осуществляться поиск? Линейно?
А если контейнер отсортирован? Бинарно? Это будет отдельный метод или модификация существующего?

2. Откуда должен осуществляться поиск?
С начала? С заданного индекса?

3. В каких пределах?
До конца? До заданного индекса?

4. Зачем возвращать вектор найденных значений?
Может быть, мне нужно только первое и последнее значения?

5. Направление поиска?
Вперед? Назад?

6. А собственный функтор сравнения не захочется?
Для упорядочивания по алгоритму и последующему поиску?

7. А позиционирование типа lower_bound/upper_bound/equal_range не понадобится?

Короче, можно долго рассуждать.
Чтобы решить все это эффективно, нужно понятие итератора.
Точно так же, как оно нужно было бы и для ИТ.

Кстати, кроме поиска, итераторы нужны во множестве других операций.
Вот только всерьез думать над их дизайном пока некогда.

А делать по-быстрому не хотелось бы.
Дабы не плодить списки несовместимостей из-за изначально непроработанных решений.

P.S.
А может быть, нам хватает возможностей ИТ?

Отвечу по пунктам.

1. С точки зрения внешнего интерфейса нет разницы в методе поиска, это дело реализации
Но, естественно, хотелось бы эффективности - если сортирован, то бинарный, иначе обычный.
Или спец.параметр на усмотрение пользователя, который лучше знает, сортирована коллекция или нет.

2-3 Можно сделать два метода Найти и НайтиВИнтервале - внутренняя их реализация не сильно будет отличаться.

4. Вектор нужен потому, что операция поиска с произвольным функтором может выдавать сразу несколько результатов для различных значений, для этого и нужен вектор. Т.е. для универсальности.

5. Думаю, что вперед достаточно. Но можно и назад сделать в будущем.

6. Функтор сравнения был бы удобен, несомненно. Но скорее всего это излишество.

7. Нет, наверное, это также излишество.

8. Да, итераторы пригодились бы. Но и без них неплохо живется.

В данном случае считаю, что это лишнее усложнение.

9. По поводу ИТ - а нафига нам нужны тогда простые коллекции, если с ними нельзя выполнять даже операции поиска Печаль
ИТ все-таки более годен для более сложных вычислений и операций.

Методы поиска очень нужны, иначе операции поиска (пусть и бинарная) в режиме 1С выполняются долго Печаль
  

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С++
Ответ #113 - 20. Августа 2008 :: 07:05
Печать  
Не договоримся Улыбка
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Коллекции в 1С++
Ответ #114 - 20. Августа 2008 :: 08: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С++
Ответ #115 - 20. Августа 2008 :: 15:05
Печать  
Ну, рано или поздно, я думаю, появится v7stl.dll.
Там контейнеры и алгоритмы можно будет реализовать на достойном уровне.

Однако здесь есть и чисто технические проблемы - это отсутствие возможности описывать быстрые алгоритмы внутри 1С.
Есть и концептуальная проблема - v7stl.dll никому не нужно.

А вот в icpp я не уверен, что коллекции должны быть наполнены таким образом.
Если ты задумаешься, твое предложение не делает интерфейс коллекций полным, оно просто добавляет одну специализированную возможность.
На первый взгляд - кое-что - это лучше, чем ничего; но если хорошо подумать, то ничего - намного лучше, чем нЕчто. Улыбка
  

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


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Коллекции в 1С++
Ответ #116 - 20. Августа 2008 :: 19:40
Печать  
Впрочем, я подумаю; может быть в простом виде что-то такое и будет сделано.
Хотя скажу честно, для тех применений, для которых эти коллекции планировались, это все не особо нужно.
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Коллекции в 1С++
Ответ #117 - 21. Августа 2008 :: 03:09
Печать  
kms писал(а) 20. Августа 2008 :: 19: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С++
Ответ #118 - 21. Августа 2008 :: 07:52
Печать  
artbear писал(а) 21. Августа 2008 :: 03:09:
Поясни, что за применения?

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

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Коллекции в 1С++
Ответ #119 - 21. Августа 2008 :: 08:06
Печать  
А как же тогда Вектор и АссоциативныйВектор? Печаль
Для них операции простого поиска и быстрого поиска в сортированном массиве важны/нужны/удобны.
  

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



Сообщений: 622
Зарегистрирован: 19. Ноября 2007
Пол: Мужской
Re: Коллекции в 1С++
Ответ #120 - 21. Августа 2008 :: 09:08
Печать  
artbear писал(а) 21. Августа 2008 :: 08:06:
А как же тогда Вектор и АссоциативныйВектор? Печаль
Для них операции простого поиска и быстрого поиска в сортированном массиве важны/нужны/удобны.

Тем более если понадобится заменит СЗ на АссоциативныйВектор  Улыбка
  
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


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

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: Коллекции в 1С++
Ответ #121 - 21. Августа 2008 :: 10:24
Печать  
artbear писал(а) 21. Августа 2008 :: 08:06:
А как же тогда Вектор и АссоциативныйВектор? Печаль
Для них операции простого поиска и быстрого поиска в сортированном массиве важны/нужны/удобны.

Да это понятно.
Ну, я же уже пообещал чуток подумать над интерфейсом.
  

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