Переключение на Главную Страницу Страницы: 1 2 [3] 4 5 ... 9 ОтправитьПечать
Очень популярная тема (более 25 ответов) Коллекции в 1С++ (число прочтений - 49240 )
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 && 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 && 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 && 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 && 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 && 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 && 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 && 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 && 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 && 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 && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1 2 [3] 4 5 ... 9
ОтправитьПечать