Вход | Регистрация

  1  2   

Форумы на Кубань.Ру


1С:Предприятие ::

Метки: 

Массивы в 1С

Ø
Я
  
04.07.01 - 04:01
Кто-нибудь может подсказать, для работы с массивами в 1С какие-нибудь операторы типа Allocate-Deallocate существуют?
 
  Рекламное место пустует
   Opanki
1 - 04.07.01 - 06:00
а ТЗ чем не массив?
   Petrovich
2 - 04.07.01 - 06:09
2(1) Думаешь, с числовыми массивами типа
  Перем ЭтоЧисло (2000) ;
прокатят операторы ТЗ ?
   Opanki
3 - 04.07.01 - 07:09
а что сделать то надо?
   Petrovich
4 - 04.07.01 - 07:04
Просто наткнулся в модуле на использование подобного массива, у него сразу размерность 20000. Понятно дело, некачественное использование ресурсов. Вот я и подумал, есть ли подобные фичи типа Allocate, чтоб можно было динамически задавать размерность массива ?
   Ilfat
5 - 04.07.01 - 07:07
Есть фича типа Allocate/Deallocate - "Таблица значений"
   Задорнов:
6 - 04.07.01 - 07:00
2(5) Ну тупыыыыыыые, ну тупыыыыыыыые...
   Petrovich
7 - 04.07.01 - 07:02
2(5) Я вам про Фому, а вы мне про Ерему. Знаю я, что есть ТЗ, вы мне про числовой массив сказать можете?
   ilfat
8 - 04.07.01 - 07:08
А ТЗ, имхо, глубоко пофиг, что ты в ней хранишь - числа или справочники
   Opanki
9 - 04.07.01 - 07:00
Числовой массив задается фиксированной длины. Может в Радуге есть динамические массивы....не могу сказать не юзал, посмотри у ВайлдХэра
   Petrovich
10 - 04.07.01 - 07:06
2(9) Thanks.
2(8) Я понял, ты неисправим.
 
  Рекламное место пустует
   Ilfat
11 - 04.07.01 - 07:07
10: ну хоть это ты понял
   TeNTeN
12 - 04.07.01 - 08:09
2(10) Ты действительно не понял (8), перед использованием ТЗ не обязательно об'являть размерность оной.
   Petrovich
13 - 04.07.01 - 08:05
2(12) Ну че вы мне, как маленькому объясняете. Никого не хочу обидеть, но только вопрос про ЧИСЛОВОЙ массив был, а не про ТЗ.
   Ilfat
14 - 04.07.01 - 09:05
а глобус Свердловской области тебе не нужен?
Раз такой большой, то должен знать, что ЧИСЛОВОЙ массив ничем не отличается от любого другого МАССИВА.
   Petrovich
15 - 05.07.01 - 03:08
2 Opanki: слушай, а эту фиксированную длину переменной можно задавать (звучит, понимаю, странно)? Просто, вычисляю колво недель, за которые формируется отчет, ставлю эту переменную в размерность числового массива, не катит - ругается. Хотя к тому моменту переменная уже зафиксирована и в дальнейшем не меняется.
   Гоголь
16 - 05.07.01 - 04:09
Наконец-то (15) перешел заместо неуместного умничанья к делу. Если по делу, то могу огорчить - количество элементов задается фиксированно - при обьявлении...
   Petrovich
17 - 05.07.01 - 04:07
Гоголь, Вы, конечно, индивид знающий, начитаный и любящий пофилософствовать (как и я ;-)), но мое, как Вы справедливо заметили, напрочь срубленое чело никак не может покинуть она навязчивая мысль - ведб ко времени объявления размерности колво недель уже зафиксировано. Ведь подумайте сами, многоуважаемый, как было бы всем просто и радостно объявлять размерность массивов переменными ...
   Гоголь
18 - 05.07.01 - 04:07
Не всякая радость есть радость... И что может быть за радость в замене обьявления размера массива переменной, мне гораздо больше нравится константа. Она всегда принимает одно и то же значение, причем как правило, целое... Не в пример некоторым участникам конференции, которые собой представляет очень маленькую периодическую дробь. Одно и тоже, одно и то же... лица меняются, как в калейдоскопе.... но суть - нет... Другое делое, что массив можно с успехом заменить или ТЗ, СЗ с его тремя элементами во втором измерении. Скажу честно, применение СЗ напрочь отбивает мысли о необходимости применения массива с переменной длиной, просто нету в этом необходимости
   Petrovich
19 - 05.07.01 - 05:09
Многоуважаемый Гоголь, Вы совершенно правы - константа действительно всегда принимает одно и то же значение! Очень сожалею, что Вы не можете найти применение "переменным", кажется, будь 1С-ка из одних констант, Вам было бы гораздо легче в работе с ней. Ваши туманные намеки про трубочку с разными цветными стеклышками мне не понятны, а вот очень маленькую периодическую дробь я отнес на свой счет. Очень польщен таким в бесконечность уходящим мнением обо мне.
 Сидел Petrovich, писал эту месагу и думал: "ну гле же Opanki и подобные ему мастера, которые четко отвечают на вопрос и не втирают очки показухой того, какие же они все-таки знающие и умные..."
   Opanki
20 - 05.07.01 - 06:08
2(15)>>слушай, а эту фиксированную длину переменной можно задавать (звучит, понимаю, странно)? >>не совсем понял, но если это то.....
Насколько помню размерность массива задается явно, т.е. Перем Мас[50].
   Petrovich
21 - 05.07.01 - 06:08
2(20) Правильно. Вот я и думаю, почему не канает так:
 Перем КолвоНедель;
 КолвоНедель = 5;
 Перем Массив[КолвоНедель];
Ведь в принципе то же, что и
 Перем Массив[5];
Странно, что это не реализовано...
   Natali
22 - 05.07.01 - 08:06
Насколько я поняла, Petrovich-у нужен динамический массив, так есть объект "Таблица значений", его размерами можно управлять и заполнять его чем угодно (в том числе и числами)
   Ilfat
23 - 05.07.01 - 08:07
22: Ему не надо ТЗ, ему надо массив с методами ТЗ...
   Petrovich
24 - 05.07.01 - 09:04
2(22,23) Правильно, не используя СоздатьОбъект().
   Злыдень
25 - 05.07.01 - 09:09
Вам шашечки или ехать? (с)
   Случайный
26 - 05.07.01 - 10:25
2(25) Судя по всему - шашечки ... Если бы размерность массива можно было бы декларировать runtime, то он был бы динамическим. Ну нет в 1С динамичеких массивов !!! И никто их делать не собирается, поскольку есть ТЗ и СЗ. Как об стенку горохом.
   Тлён
27 - 05.07.01 - 10:28
В 8-ке будет - многомерные и динамический. Правда.
   Petrovich
28 - 05.07.01 - 10:42
2(27) Спасибо, обрадовал. Вот классно будет!
   Гоголь
29 - 05.07.01 - 10:51
И все таки Petrovich ? Чем не устраивает СЗ и ТЗ ? Почему такое пренебрежение возможностями и СЗ, и ТЗ ? Ведь это просто иная форма представления динамического массива...
PS Напрасно вы думаете в (19), что я только Вас имею в виду...
   CVZ
30 - 05.07.01 - 11:09
2Petrovich
Читаю и никак не пойму. ты что, объектной модели пугаешься?
"Таблица значений и "Список значений" - это динамические массивы, причем с набором методов для удобной работы с ними.
   AndreyMx
31 - 05.07.01 - 11:14
Всего лишь идея:
---------------------------
#ЗагрузитьИзФайла хххххххх
---------------------------
а перед ентим в файл хххххххх в нужную строку вписываем
Перем Массив[18];
   Petrovich
32 - 05.07.01 - 11:14
Популярно объясняю Всем. Я оптимизатор по натуре, поэтому там, где есть возможности хоть на капелюшечку, но не засирать память,- моя стихия. Может я и не прав, но создание Объекта именно это и делает. Вот почему возможности простого числового массива были так милы моему сердцу.
---------------
Прочтя последнюю строчку Petrovich не удержался и всхлипнул...
   Тлён
33 - 05.07.01 - 11:16
2(32)Ну - нужно как-то над собой работать. *:))
 
 
   Petrovich
34 - 05.07.01 - 11:16
2(31) А это идея - формировать файл, куда в размерность массива записывать значение переменной. Только я думаю, тогда злопыхатели будут правы - лучне использовать ТЗ...
   CVZ
35 - 05.07.01 - 11:23
2Petrovich
Ты за какие-то жалкие килобайты борешься, тратя кучу времени. У тебя отчет насколько замедлится при работе с СЗ или ТЗ? Овчинка выделки стоит?
   Petrovich
36 - 05.07.01 - 11:28
2(35) Оптимизатор я, оптимизатор!!! (при этом стуча себя в грудь)
 "А он, ..., просит бури,
  как будто в буре есть покой."
   .
37 - 05.07.01 - 11:31
to Petrovich: Опять шумишь?
   CVZ
38 - 05.07.01 - 11:34
2Petrovich
Когда начнешь ценить свое время - поймешь, что не всякая оптимизация оправдана.
   Petrovich
39 - 05.07.01 - 11:36
2(38) Возможно, ты прав. Но когда тебе перестанет хватать ресурсов, вспомни меня.
   Uno
40 - 05.07.01 - 11:37
Сам не пробывал но поидее должно сработать
Перем Массив(20);
Стр=ЗначениеВстроку(Массив);
НовыйРазмер=30
Стр=ИзменитьРазменность(Стр,НовыйРазмер);
Массив2=ЗначениеИзСтроки(Стр);
Ну а как функцию ИзменитьРазмерность() написать посмотри что он в строку при разных числах пишет и измени ее как надо догодаешся сам, надеюсь идея понятна.
   Petrovich
41 - 05.07.01 - 11:39
2(40) Есть контакт!
   Тлён
42 - 05.07.01 - 11:39
2(39) Сейчас принцып номер один - если вам не хватает ресурсов - покупайте новые.
   CVZ
43 - 05.07.01 - 11:43
2Uno
Ага, и будет это работать до первого серьезного изменения движка 1С
Не стоит ковырять глубоко. Были у меня знакомые, которые старый Access раскурочили, и писали на нем крутые проги, используя недокументированные фичи. И все было прекрасно. Пока не вышел новый Ассеss. 8)))
   CVZ
44 - 05.07.01 - 11:45
2Тлён
Особенно, если учесть, сколько стоит пара часов работы специалиста, а сколько - 128 метров памяти 8)
   Petrovich
45 - 05.07.01 - 11:47
2(44) Особенно если учесть, что денег у меня нишиша, и из специалистов вокруг только я, да и тот не важный.
   БТР
46 - 05.07.01 - 11:48
Петрович, а ты структуру СпискаЗначений вообще-то смотрел? Боишься, что будет памяти много занимать или работать будет медленно? Или ты проверил и убедился в этом? Из-за чего сыр-бор затеиваешь? А динамическое распределение памяти штука обоюдоострая. Для нее дисциплина программирования нужна. В 8.0 говорите появится... Ну-ну. Ловите глюки, они вам очень пригодятся.
   CVZ
47 - 05.07.01 - 11:48
2Petrovich
Тем более. Чем фигней маяться, лучше бы клиентов побольше набрал
8))
   Тлён
48 - 05.07.01 - 11:49
2(44) Ты откуда про 128 метров памяти узнал? 340 гривен кажется. 133 Мгц.
-
*<:)
   CVZ
49 - 05.07.01 - 11:56
2Тлён
А что? В точку чтоль попал? 8)
у нас в солнечной Татарии за 30 баков можно найти
в столице думаю за 20 можно купить
А если с 64 метрами сравнивать - так вообще смех 8)
 
  Рекламное место пустует
   Uno
50 - 05.07.01 - 11:58
2(48) За эти деньги уже 384 метров можно взять ну может чуть меньше.
2(43) А что ЗначениеВстроку() уже недокументированая команда?
Почему не использовать всех возможностей движка если он это позволяет. Скорее всего в этой стране, раньше законодательство измениться чем движок.
   Тлён
51 - 05.07.01 - 12:01
2(50) Это Серверная, Брэндовая. А мож и дурят. Нужно прайсы просмотреть
   Petrovich
52 - 05.07.01 - 12:01
Uno, ты ко мне за баррикады быстрей беги после таких высказываний. Меня тут уже после такого с обеда штурмуют ;-)
   Gosha
53 - 05.07.01 - 12:04
Петрович... Самый оптимизированный код получается из написанно на ASM-е программы... коли зудит насчет оптимизации - его и юзай...
   CVZ
54 - 05.07.01 - 12:08
2Uno
я не про ЗначениеВСтроку, а про ИзменитьРазмерность
откуда ты знаешь, что они в следующем релизе с внутренней структурой сделают?
   Uno
55 - 05.07.01 - 12:17
В релизе ничего. В восьмерке может быть. Но под восьмерку я всеравно буду код переделывать после конвертации, иначе смысл на нее переходить, если все алгоритмы остануться старыми.
   Petrovich
56 - 05.07.01 - 12:18
2(53) И как я раньше-то не догадался???
   Ilfat
57 - 05.07.01 - 12:25
2Оптимизатор: а то что вместо ТЗ.КоличествоКолонок(Колво) ты пишешь 20 строк кода - нормально. Ты все так оптимизируешь?
ЗЫ. А идею в (40) надо взять на заметку, хоть и не в этом контексте.
   ...
58 - 05.07.01 - 13:12
 если воспринимать как объекты то при создании объекта
 создается ссылка на этот объект и не о каких закушанных
 ресурсах говорить нельзя. Чего не скажешь при создании
 массивов любой длинны. При оптимизации мозгов луче
 вовремя высвобождать от ненужных констант, массивов ...
   WildHare
59 - 05.07.01 - 14:15
2 Петрович
LOL! Если такой подход называется "оптимизация", то я уже не знаю, что и сказать. ЧТО ты таким образом хочешь сэкономить? Нервную энергию, затрачиваемую на работу мозга, да? ;-)
Давай попробуем разобраться популярно.
Когда ты объявляешь массив, 1С СРАЗУ резервирует под него память. Напиши в модуле Перем Массив[10000000] и посмотри, что будет. Когда ты объявляешь список значений, 1С просто создает ссылку на объект. В списке появляются новые значения -- память расходуется, значения исчезают из списка -- память освобождается. Если это не динамический массив, то я -- Папа Римский.
Далее. Для массива нет НИКАКИХ встроенных функций. Т.е. вообще никаких. Все твои операции с массивом должны быть написаны встроенным языком и откомпилированы движком 1С ПРЯМО во время работы. Ресурсов при этом расходуется НЕМЕРЯНО. Для списка значений существует множество встроенных функций (см. СП), реализованных на уровне движка -- т.е. оптимизированных и откомпилированых ЗАРАНЕЕ. Есть разница? И эту разницу можно увидеть глазами. Возьми массив и список значений, запиши в каждый из них по 5 000 случайных чисел. А потом произведи тупую сортировку по возрастанию. Для массива -- руками, по сколь угодно продвинутому алгоритму, а для списка -- сделай Список.Сортировать(). Замерь время работы для каждого варианта. И поделись впечатлениями. А уже потом стучи себя в грудь и называйся оптимизатором.
   Camino
60 - 05.07.01 - 14:51
Ну.. WildHare как всегда прав.. :))
   ex-Alex
61 - 05.07.01 - 14:55
WildHare такой флейм опошлил. Даже до сотни не дошел. И двух суток не продержался :))). А какие были грандиозные перспективы.
   WildHare
62 - 05.07.01 - 15:05
2 (61)
Не флейм и был ;-) Это все равно не так интересно, как высылать кому-то пустую конфигурацию в 10-томном архиве..
   .
63 - 05.07.01 - 15:07
2(62) Ты мыло в подмвльнике специально для этого оставил ?
Тогда - первый пошел...
   Uno
64 - 05.07.01 - 15:15
Есть стадтартные алгоритмы преоброзования 2,3 и т.д. массивов в одномерные и алгоритмы сортировки этих массивом преобразованых в одномерный и много еще чего полезного. Написаные во времена слабых машин когда народ считал что извлеч значение из одномерного массива это 3 операции, а из двумерного 127, а из преобразованого 7. И пириписовать их под стандартные методы 1с типа сортировать и т.п. к примеру для 5 мерного массива я не взялсябы.
   ...
65 - 05.07.01 - 15:59
... вообще советую Кнута почитать ...
   Ast
66 - 05.07.01 - 16:05
To 35,59
Раз уж затронули эту тему...
Вопрос к спецам 1С - очищается ли память после использования таблицы значений?
   pit
67 - 05.07.01 - 16:13
Ну я тоже попинаю Петровича. А затем поглажу. В общем приложусь
.
То, что ТЗ СЗ имеют массу преимуществ, можно писать сколь угодно долго. Но есть ситуации прямого хранения ссылок, без сортировок и прочих прибамбасов. Тогда массив работает быстрее - нет внутреннего кода.
Да и вообще иногда лучше массив, чем ТЗ. Имно.
.
Просьба не пинать меня ногами
   WildHare
68 - 05.07.01 - 16:17
2 (66)
Если таблица удаляется/очищается -- то да.
   WildHare
69 - 05.07.01 - 16:23
2 (67)
Ага. Есть такие ситуации. Вот только _размер_ массива в таких ситуациях практически всегда известен заранее.. и нет нужды его изменять. ImHO ;-)
   Camino
70 - 05.07.01 - 16:35
2(66) Любой объект можно очистить принудительно. Слава Богу в 1С неявное задание типов, всегда можно написать:
тз=СоздатьОбъект("ТаблицаЗначений");
...
тз="";//или тз=0;
   pit
71 - 05.07.01 - 20:03
To WildHare - я нарвался именно на такой случай. Там заранее был известен размер массива, точнее его предел. Работает быстрее, проверял. Но есть недостаток. После отработки обработки и ее закрытия винда долгоооо стучала винтом на 64 метрах - чистила своп. А обработка действительно стала быстрее, причем в разы. На 128 метрах полет был нормальный и разрыв по времени увеличился.
.
Имхо - чем больше многообразие типов данных - тем лучшее жизнь. Это как с пивом
   Petrovich
72 - 06.07.01 - 04:03
2(All). Извините, господа, пока меня не было, битва шла полным ходом. Спасибо, pit, за поддержку, поднимаю уроненый флаг флейма.
2 WildHare. Посмотри (21), думаю ты согласишься, что это не массив из [1000000]. Конечно, ты прав, но только, если мы работаем с массивам большой размерности. На мой взлгяд, если мне нужен небольшой динамический массив, целесообразнее покрутиться с числовым массивом, нежели заводить еще одну ТЗ.
З.Ы. WildHare - ты не Папа Римский ! :-)))
   Гоголь
73 - 06.07.01 - 04:04
2(72) Извини, Petrovich, но не тебе и не в твоем ЗЫ об этом судить !
На мой взгляд, это уже наглость... может и тебя в таксяки потянуло - тогда можешь сразу так и писать - буду таксявкой.
   Petrovich
74 - 06.07.01 - 04:03
2(73) Прочти сначала (59), а потом ругайся, могучим русским языком классика мировой литературы...
   SAnn
75 - 06.07.01 - 04:06
таксяк - имя нарицательное?... :))
(73) А что, есть варианты??? Так, вроде, Иоан Павел Второй здравствует... :)
   Гоголь
76 - 06.07.01 - 05:07
2(74) И прочел, и понял, кажется, что тут без Гада такого не обойтись - он расставит все по местам, а от себя скажу, брось зарываться смелый Petrovich, тебе до WildHare слишком далеко, значительно дальше, чем до папы, хотя преодолеть это расстояние не очень трудно - достаточно прервать сон...разума.
2(75) На самом деле, глубокоуважаемая SAnn, это скорее, не персонаж, а феномен, причем оччень дурного свойства... А в случае 73, имеются в виду расстояния, меру измерения которых, некоторые считают для себя возможным устанавливать произвольно...
   Petrovich
77 - 06.07.01 - 05:01
2(76) WildHare в защитниках не нуждается, и я думаю, он шутки З.Ы. понимает. А тебе, сердобольный вольнодумец, лучше писать тексты для Мумий Тролля.
   Гоголь
78 - 06.07.01 - 05:02
Petrovich ! Ты сам откуда будешь ? Без приколов, отвечай, если считаешь нужным... А я пока кофею с лимончиком заделаю.
   SAnn
79 - 06.07.01 - 05:04
(77) Но-но!!! Мумий Тролль - то чем не угодил??? (Если это,конечно, не слова признания... ) %))
   Petrovich
80 - 06.07.01 - 06:01
2(78) Из Сибири мы, поэтому и характер такой хреновый...
2(79) Мумий Тролль - одна из лучших рокопопсных групп, хотя я все-равно слушаю Арию, Лигу Блюза и Ноль. Но клипы Мумий Тролля смотрю с удовольствием...
   Юрикc
81 - 06.07.01 - 06:04
Petrovich а я и не знал что ты такой колбасник :)
   Petrovich
82 - 06.07.01 - 06:04
2(81) И ты, земляк, здесь? Смотри, сибиряков обижают ...
   Юрикc
83 - 06.07.01 - 07:03
да за Петровича мы тут всем сейчася, где тут Мертвая Душа (Гоголь)?
   ex-Alex
84 - 06.07.01 - 11:21
Так что, до сотни ветку будем дотягивать или нет ?
   Cибиpяk
85 - 06.07.01 - 14:13
За Петровича!!! Сибирь большая (не чета там западной европейской территоришке) Локализуйся Петрович, город какой?
   Догоним
86 - 06.07.01 - 14:15
и перегоним флейм "Работа в Киеве", уррррррррааааааааа, вперед
   Догоним!
87 - 06.07.01 - 14:19
Чё мы не россине
   Вперед!!!!!!!!!
88 - 06.07.01 - 14:21
субж:-)
   Догоним!
89 - 06.07.01 - 14:24
Чё мы не россияне (исправляю опечатку)
   Так держать
90 - 06.07.01 - 14:24
Не отступать и не сдаваться!
   анек
91 - 06.07.01 - 14:27
"Значит так - возмем количество танков противника за икс...
Мммм.... Нет иск мало, пусть будет игрек..."
   Сибиряk
92 - 06.07.01 - 14:32
Прирастать будем Сибирью
   DVV
93 - 06.07.01 - 14:56
Я уже здесь :-)
   Журавлик
94 - 06.07.01 - 15:08
До сотни не дотянется?
   По моему
95 - 06.07.01 - 15:13
оптимизировать несколько килобайт это глупо. Золотое правило программирования "улучшайте конструкцию, а не кирпичи в этой конструкции". Хотя я раньше как и Petrovich гонялся раньше за байтами и миллисекундами, переходя где возможно на ассемблер. Но когда работаешь с большим и сложным проектом это уже полный параноидальный идиотизм. Не задумываясь буду использовать ТЗ и СЗ.
   Наконец-то...
96 - 06.07.01 - 15:15
...сделали Работу в Киеве в рейтинге ТОП20 !!!
   DVV
97 - 06.07.01 - 15:18
Типа, на старт!
   DVV
98 - 06.07.01 - 15:21
Внимание!!
   DVV
99 - 06.07.01 - 15:22
Марш!!!
   Журавлик
100 - 06.07.01 - 15:22
Целесообразность определяется по двум критериям: насколько сильно заказчик этого хочет и как много этот же заказчик готов заплатить.


  1  2   

Список тем форума

Форум Территория 1С

Рекламное место пустует   Рекламное место пустует
Ошибка? Это не ошибка, это системная функция.
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Ветка сдана в архив. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует