Имя: Пароль:
1C
1С v8
Помогите с задачей по массивам в 1С8.2
0 yuli4ka
 
24.03.12
14:17
Нужно написать  функцию сортировки массива структур. На форме есть табличное поле с  определенным набором колонок. При добавлении строки, создается  структура: ключи — колонки, значения — значения этих колонок; затем  структура заносится в общий массив. Пользователь выбирает поле для  сортировки, и нажимает «Сортировать», после чего данный массив структур  сортируется и построчно выводится на экран в текстовом виде (1 строка — 1  запись массива).

Итак,  в функцию сортировки на вход передается массив структур, и поле для  сортировки; на выходе — отсортированный массив. Алгоритм сортировки — желательно рекурсивный, но не обязательно.
1 Чел
 
24.03.12
14:21
а откуда взялось пожелание по рекурсии? Это не есть хороший стиль программирования...
2 Lama12
 
24.03.12
14:23
(0) Не понял. А разве нельзя отсортировать таблицу значений, а потом данные поместить в структуру и далее в массив?
3 Lama12
 
24.03.12
14:24
2+
Зачем изобретать сложности?
(0)Или это домашнее задание?
4 yuli4ka
 
24.03.12
14:26
Мне нужно выполнить именно так поставленную задачу. Можете помочь?
5 Lama12
 
24.03.12
14:26
(0)И где фотка?
6 yuli4ka
 
24.03.12
14:27
фотки нет
7 Чел
 
24.03.12
14:28
нет фотки - нет функции
8 Чел
 
24.03.12
14:29
шутка =)))
9 yuli4ka
 
24.03.12
14:29
какую фотку нужно?
10 yuli4ka
 
24.03.12
14:29
)))
11 Armando
 
24.03.12
14:30
(9) известно какую)
12 Чел
 
24.03.12
14:31
(0) правильно я понял, что в конечном счете табличка заливается в массив структур, где строка массива - строка таблицы, а структура - есть значения ячеек строки по колонкам?
13 yuli4ka
 
24.03.12
14:33
да
14 Lama12
 
24.03.12
14:33
(6) Не правильный ответ.
Задача поставлена с условием не оптимальности структуры кода.
Видимо для того, что б избавиться от возможностей системы сортировать коллекции.
Т.е. с целью обучения.
В принципе, я могу написать такую функцию, и даже это мне в будущем зачтется. Т.к. моя стоимость на рынке будет больше. Но лень...
Ну что господа, у кого есть желание снабдить Украину еще одним неквалифицированным, аттестованным специалистом?
15 yuli4ka
 
24.03.12
14:35
да, с целью обучения, я только начинаю разбираться в 1С программировании)))
16 zak555
 
24.03.12
14:35
> На форме есть табличное поле

предлагаю не изобретать велосипед :

Табличная часть.Сортировать (Tabular section.Sort)
Табличная часть (Tabular section)
Сортировать (Sort)
Синтаксис:

Сортировать(<Колонки>, <ОбъектСравнения>)
Параметры:

<Колонки> (обязательный)

Тип: Строка.
Список имен колонок, разделенных запятыми, по которым производится сортировка таблицы. После каждого имени колонки через пробел может быть указано направление сортировки. Направление определяется: "Убыв" ("Desc") - упорядочивать по убыванию; "Возр" ("Asc") - упорядочивать по возрастанию. По умолчанию сортировка производится по возрастанию. Порядок указания имен колонок таблицы определяет порядок сортировки. Это означает, что сначала таблица сортируется по колонке, указанной первой. Затем группы строк с одинаковым значением в этой колонке сортируются по колонке, которая указана второй, и так далее.
<ОбъектСравнения> (необязательный)

Тип: СравнениеЗначений.
Объект для сравнения элементов. Если объект сравнения не задан, сравнение выполняется по следующим правилам:
элементы, чьи типы не совпадают, сравниваются по коду типа;
элементы простых типов сравниваются по значению;
элементы остальных типов сравниваются по строковому представлению.
Описание:

Сортирует табличную часть в соответствии с указанными правилами сортировки.

Доступность:

Сервер, толстый клиент, внешнее соединение.
Примечание:

Использование метода допустимо только в том случае, если табличная часть получена из свойства объекта. Если табличная часть получена из свойства ссылки (или выборки), то использование этого метода будет вызывать ошибку выполнения.
Пример:

ТаблицаЦен.Сортировать("Цена Убыв, Товар Возр");
17 yuli4ka
 
24.03.12
14:39
мне нужно сделать именно так как написано в условии))
18 Чел
 
24.03.12
14:39
Вспомни школьную информатику 9 класс - сделай самую банальную сортировку методом пузырька или методом max/min (20 строчек кода). Или погугли более оптимальные методы сортировки =) - с целью обучения )

И вообще! На то это и учебная задачка, чтобы самой сделать, а не с чьей-то помощью =))
19 zak555
 
24.03.12
14:40
(17) чё ?
20 yuli4ka
 
24.03.12
14:40
я и хочу сама разобраться, подскажите с чего начать, может литературу какую-то
21 zak555
 
24.03.12
14:41
(20) тогда тебе nasf\гилиев_базовый\BLOCK_1
22 Чел
 
24.03.12
14:42
а в чем ты хочешь разобраться? В 1С? Или в программировании? Или в программировании в 1С?
23 yuli4ka
 
24.03.12
14:43
в программировании в 1С
24 DarKySiK
 
24.03.12
14:44
(23) а цель?
25 Чел
 
24.03.12
14:45
(23) если задача на программирование в 1С, то решение - в (2) и (16)
26 yuli4ka
 
24.03.12
14:46
сейчас поступить на обучение программистов 1с, а в будущем работать по этой специальности
27 DarKySiK
 
24.03.12
14:47
ого, этому где-то учат О_о
28 yuli4ka
 
24.03.12
14:48
ну да, учат
29 Нуф-Нуф
 
24.03.12
14:48
тема сисек нераскрыта
30 МихаилМ
 
24.03.12
14:48
(27)
у франчей вестимо.
31 Чел
 
24.03.12
14:48
(28) Чтобы программировать в 1С - для начала надо научиться вообще программировать. Тогда лучше начать с Бейсика или Паскаля =)
32 GROOVY
 
24.03.12
14:49
(23) Тогда смотри (16) и не парь мозг себе и окружающим. Это залог успеха.
33 DarKySiK
 
24.03.12
14:51
(31) да с ШАЯ хотя бы)
34 Чел
 
24.03.12
14:54
(30) во-во! Я тоже когда пошел работать во франч - мне задачу поставили. Только это было куда понятней - написать на листочке алгоритм сортировки массива... Без каких-либо структур, таблиц значения ))
(33) ну уж точно не с 1С =)
35 Чел
 
24.03.12
14:55
... злые мы... обидели девочку =)
36 DarKySiK
 
24.03.12
14:57
все дело в фотке ( 100%
37 zak555
 
24.03.12
14:59
(30) фрначи учат ? о_О
38 yuli4ka
 
24.03.12
15:00
да...злые вы...
можете помочь, помогите..
39 zak555
 
24.03.12
15:00
(38) можешь фотку показать ?
40 yuli4ka
 
24.03.12
15:01
какую фотку...
41 GROOVY
 
24.03.12
15:03
(40) Массива со структурами в текстовом виде.
42 zak555
 
24.03.12
15:03
(40) свою на реке Псеп
43 yuli4ka
 
24.03.12
15:06
))))
44 Чел
 
24.03.12
15:07
(40) как положено - фас + профиль + в полный рост + нужно учесть пост (29).
Без всего этого никак нельзя. Никак.
45 GROOVY
 
24.03.12
15:08
По задаче: рекомендую перед написанием алгоритма ознакомиться с популярными эффективными методами сортировки: http://vmtcom.dreamwidth.org/71528.html
46 Armando
 
24.03.12
15:10
(45) круто)
47 zak555
 
24.03.12
15:14
(45) бу га га
48 Чел
 
24.03.12
15:18
(45) аа! Мегакруть! ))
49 yuli4ka
 
24.03.12
15:19
я вижу, вам только поржать))
50 Чел
 
24.03.12
15:21
(49) а что еще делать в субботу? =) не учебные же задачки решать )
51 yuli4ka
 
24.03.12
15:21
ну да, и это правда
52 Чел
 
24.03.12
15:23
(51) а что ты хочешь? Тебе много подсказок и намёков уже надавали - если перечитаешь внимательно. Или тебе нужен готовый код функции?
53 GROOVY
 
24.03.12
15:23
(49) Ну почему же?

1. Вы с формами в 1С работать умеете?
2. Задачу надо выполнить в управляемых формах или обычных?
3. Как создать структуру знаете?
4. Как создать массив и поместить в него значение знаете?
5. Как перебрать коллекции в 1С представляете?
54 yuli4ka
 
24.03.12
15:23
Кто-нибудь может реально чем-то помочь?
55 GROOVY
 
24.03.12
15:25
Я просто не вижу озвученных проблем при решении задачи, помочь в чем надо то? Код готовый скинуть? Никто не будет его писать, так как все 1Сники жадные и ленивые. Простимулировать кого-то на написание кода может фотография, это вполне серьезно, сейчас весна, у некоторых обострения на этой почве :)
56 yuli4ka
 
24.03.12
15:26
Я еще ничего не умею как программист в 1С, до этого программировала в HTML и PHP.
57 МихаилМ
 
24.03.12
15:26
(49)
не вижу состороны Вас
даже минимальных усилий для решения задачи.

выложите готовую обработку с заполнеными тестовыми данными.

и методом вывода результата

отладте ее.    

а на форуме останется лишь обсудить

метод сортировки.

иначе получается, что все надо написать за Вас.
58 Чел
 
24.03.12
15:28
(56) программировала в HTML ??? Впервые слышу про такой язык программирования...
59 yuli4ka
 
24.03.12
15:30
ладно, не цепляйтесь к словам
60 GROOVY
 
24.03.12
15:30
(56) И решили начать изучение 1С с этой задачи? Кто Вам это посоветовал?
Начните лучше с этого: http://v8.1c.ru/metod/books/book.jsp?id=187
61 Офелия
 
24.03.12
15:32
(45) супер :))) ничего подобного раньше не видела. посмотрела bubblesort
62 МихаилМ
 
24.03.12
15:32
+(57)
очень сложно обсуждать общие неконкретные вопросы

разбейте задачу на подзадачи.

тогда получите более конкретные ответы,
а не ржачки и стеб

Пока Вы неконкретны, никто не хочет вступать
с Вами в отношения помощи тк сложно оценить
количество усилий для завершения задачи
путем преписки.
63 zak555
 
24.03.12
15:33
(56) вот php
как там идёт сортировка массива ?
64 Чел
 
24.03.12
15:33
+ (60) или хотя бы (21)
65 GROOVY
 
24.03.12
15:33
(61) Вот кто бы мне это показал когда я изучал эти штуки... :)
66 yuli4ka
 
24.03.12
15:34
Я с этого http://v8.1c.ru/metod/books/book.jsp?id=187 и начала изучение 1С. А это задание мне дали сделать для поступления на курсы.
67 Офелия
 
24.03.12
15:36
(65) :)
а я изучала по книжке "алгоритмы и структуры данных", тоже классно было для своего времени
68 Чел
 
24.03.12
15:36
(66) если не можешь решить задание для поступления на курсы - значит курсы еще не для твоего уровня. Найди курсы более адекватные твоим нынешним знаниям.
69 Lama12
 
24.03.12
15:37
(45) Класс!
Такой визуализации алгоритма быстрой сортировки я еще не видел.
70 yuli4ka
 
24.03.12
15:37
спасибо за совет
71 GROOVY
 
24.03.12
15:37
(66) Тогда ответьте на вопросы по пунктам из (53).
72 HeroShima
 
24.03.12
15:39
Ужас..
73 yuli4ka
 
24.03.12
16:53
ссылка есть у кого нибудь на nasf\гилиев_базовый\BLOCK_1
74 GROOVY
 
24.03.12
16:54
(73) spec8.ru
75 GROOVY
 
24.03.12
16:57
Вот тебе ссылки на офф халяву:
http://www.spec8.ru/free-materials
http://easyedu.ru/category/prog82/step1/
http://chistov.spb.ru/forum/38
http://chistov.spb.ru/publ/free_webinar/6

Хотя если книжку осилила, то тебе все это не пригодится...

Ну и нигде тебе про методы сортировки, описание переменных, работу с циклами рассказывать не будут.
76 yuli4ka
 
24.03.12
17:00
а где про методы сортировки можно посмотреть?
77 Чел
 
24.03.12
17:00
78 yuli4ka
 
24.03.12
17:02
(77)-это понятно, какие книги посоветуете?
79 GROOVY
 
24.03.12
17:07
(78) http://www.booksgid.com/programmer/4684-donald-knut.-iskusstvo.html
Дональд Кнут, Искусство программирования, том.3
80 GROOVY
 
24.03.12
17:08
+79 Знания полученные из этой книги никак не помогут в кодинге на 1С.
81 Чел
 
24.03.12
17:08
(78) а для чего тебе это? Ты собираешься серьёзно заниматься разработкой алгоритмов? Или ты учишься программировать на 1С? Нам в школе на информатике рассказали 2 алгоритма - пузырьком и max/min. Изучение этих методов было исключительно в рамках учебного процесса (чтобы мозги развивать в нужном направлении). А на деле - все методы давно реализованы и рассованы по библиотекам. 1С умеет сортировать некоторые объекты средствами платформы (уж какой там метод заложен - не в курсе). И любой программер никогда не станет сортировать массив руками (т.е. пузырьком и т.п.) - он загонит его в какой-нибудь объект (например ТаблицаЗначений) и отсортирует средствами платформы.
82 yuli4ka
 
24.03.12
17:13
программировать на 1С, но что-бы решить поставленную задачу, нужно разобраться и в сортировке массива
83 GROOVY
 
24.03.12
17:16
(82) Вы перебрать элементы массива сможете?
84 yuli4ka
 
24.03.12
17:18
смогу
85 GROOVY
 
24.03.12
17:24
Структуру в массив поместит сможете?
86 Чел
 
24.03.12
17:26
(82) тогда напиши самый простейший вариант - отсортируй методом пузырька:

Процедура СортировкаПузырьком(МойМассив)
   
   Для Сч1 = 1 по РазмерМассива Цикл
       Для Сч2 = 1 по РазмерМассива Цикл
           Если МойМассив[Сч1] > МойМассив[Сч2] Тогда
               А = МойМассив[Сч1];
               МойМассив[Сч2] = МойМассив[Сч1];
               МойМассив[Сч2] = А;
           КонецЕсли;
       КонецЦикла;
   КонецЦикла;
   
КонецПроцедуры
87 Чел
 
24.03.12
17:27
ну или что-то типа того... Навскидку написал...
88 yuli4ka
 
24.03.12
17:32
спасибо, буду разбираться
89 acsent
 
24.03.12
17:54
Для Сч2 = Сч1 по РазмерМассива