Динамические массивы в семерке.

13.12.10

Разработка - Механизмы платформы 1С

Работаем с массивами вычисляемой длины - создаем, пишем, читаем, уничтожаем.

Скачать файлы

Наименование Файл Версия Размер
ДинМас.ert
.ert 28,00Kb
62
.ert 28,00Kb 62 Скачать

Разработчики семерочной платформы совершенно не ориентировались на вычислительные задачи, что, впрочем, вполне понятно. Но иногда вычисления с большим объемом данных все-таки встречаются - тому пример недавние дискуссии на Инфостарте по обходу графов. Мне при решении этой задачи существенно недоставало возможностей работы с массивами заранее неизвестной длины, а заводить массивы "с запасом" - религия не позволяет.

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

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

См. также

"Виртуальный" работник на платформе 1C v7.7

Механизмы платформы 1С Платформа 1С v7.7 Конфигурации 1cv7 Бесплатно (free)

В статье расписаны примеры из жизни использования "Виртуального" работника. Разобраны вопросы, возникающие при работе с ним.

28.11.2021    1530    user707242_Gold_karas    18    

5

Асинхронное программирование в 1с77 без внешних компонент. Обратные вызовы.

Механизмы платформы 1С Платформа 1С v7.7 Абонемент ($m)

Пример построения программного кода для достижения функционала обратных вызовов (call back) во внешних обработках исключительно штатными средствами. Тестировалось на платформе 1с77 релиз 027. Конфигурация значения не имеет.

1 стартмани

06.10.2018    7436    Vortigaunt    5    

11

Особенности разделения объектной модели документа и базы данных в 1С 7.7. Забавный глюк

Механизмы платформы 1С Оперативный учет 7.7 Абонемент ($m)

Когда занимаешься разработкой в среде 1С, редко задумываешься о том, что программным кодом ты работаешь с объектной моделью базы данных, а не с самой базой данных. И что это вообще разные вещи. Ты создаешь объекты: документы и справочники, записываешь их - и в базе данных появляются соответствующие записи. Это настолько привычно, что когда сталкиваешься с нетипичным поведением платформы, первым делом думаешь: надо протестировать базу, она битая. В этой статье я хочу разобрать одну интересную ситуацию, которая как раз демонстрирует такое поведение. Описанная ниже ситуация воспроизводится как в файловом, так и в клиент-серверном (SQL) варианте. Тестировалось на версии платформы 1с77 релиз 027.

1 стартмани

16.05.2018    10112    Vortigaunt    26    

5

Использование классов .Net в 1С для новичков

Механизмы платформы 1С Платформа 1С v7.7 Платформа 1С v8.3 Бесплатно (free)

Руководство для новичков. Написав статью http://infostart.ru/public/238584/, я понял, что многие не понимают того, что написано. Поэтому в этой статье постараюсь более подробно остановиться на азах и без кода на вражеском языке (C#)

27.01.2016    93897    Serginio    116    

188

Все про картинки в 1С 7.7, ну или почти все...

Механизмы платформы 1С Платформа 1С v7.7 Конфигурации 1cv7 Абонемент ($m)

В 1С 8 наличие картинок товаров предусмотрено изначально, а в 7.7 такого нет. Проблема существует и ее исправляют, но это, как правило, частные случаи, касающиеся, например, печати прайса http://infostart.ru/public/289876/ , показу картинок в справочнике номенклатура http://infostart.ru/public/17125/, файловый менеджер картинок товара http://infostart.ru/public/15239/ или просто конфигурации работы с картинками http://infostart.ru/public/21142/ (не стремился дать полный обзор, поэтому не попавшие не обижайтесь :). Что не устроило – информация разбросана по статьям, необходимость дополнительно напрягаться, чтобы это заработало. Здесь я попытался собрать все «до кучи», а так же дать необходимые ссылки для желающих «копнуть вглубь».

1 стартмани

18.11.2014    43941    95    kitminsk    18    

20

ЗаполнитьЗначенияСвойств - заставляем работать в 7.7

Механизмы платформы 1С Платформа 1С v7.7 Конфигурации 1cv7 Бесплатно (free)

Если вы используете в работе 1С:Предприятие 8.х, то наверняка знакомы и с замечательной системной процедурой, как ЗаполнитьЗначенияСвойств(). Ее использование помогает значительно упростить написание программного кода в ряде случае, делает его (код) более наглядным и простым. Но что же делать тем, кто до сих пор использует (постоянно или иногда) 1С:Предприятие 7.7?

24.07.2014    23707    tomvlad    5    

14

Динамическая фильтрация в справочнике при вводе наименования

Механизмы платформы 1С Платформа 1С v7.7 Конфигурации 1cv7 Россия Бесплатно (free)

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

02.07.2012    18337    maxpiter    62    

15
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Шёпот теней 1779 13.12.10 11:41 Сейчас в теме

все люди делятся на две категории:

1. ищут способ
2. ищут причину

... хороший программист всегда ВЫШЕ любой платформы ... вот ...
2. mszsuz 321 13.12.10 11:48 Сейчас в теме
И такая обработка массива работает быстрее, чем ТЗ?
anko_2000; +1 Ответить
3. Ёпрст 1063 13.12.10 12:02 Сейчас в теме
Посмотрел бы лучше класс Вектор и АссоциативныйВектор 1с++
всё быстрее.
5. Арчибальд 2706 13.12.10 13:44 Сейчас в теме
(3) Слишком много сразу...
(4) Ну и не не клади палец в рот...
6. artbear 1447 14.12.10 16:09 Сейчас в теме
(5) Ага, лучше бы сразу показал на Векторе или Ассоциативном векторе из 1С++
Можешь проверить скорости - 1С++ сильно выигрывает, да и сервисных возможностей побольше - тех же быстрых выгрузок/загрузок из штатных объектов типа ТЗ, СЗ, документов и прочая.
8. Арчибальд 2706 16.12.10 08:36 Сейчас в теме
(6)(7) Что-то я попробовал 1С++ поставить - глюки пошли. Держу пока в заначке, разбираться руки не доходят.
9. vip 16.12.10 09:00 Сейчас в теме
(8) А какие именно глюки пошли?
И какой релиз 1С++ у тебя?
Не держи в заначке. Я вообще давно уже не представляю работу без 1С++.
11. Арчибальд 2706 16.12.10 10:11 Сейчас в теме
(9) Да я понимаю, что надо разобраться и начать применять. Текучка заедает.
12. vip 16.12.10 10:40 Сейчас в теме
(11) Разбирайся.
И сразу текучки меньше станет :)
13. Арчибальд 2706 16.12.10 10:47 Сейчас в теме
(12) Не, на текучку это не повлияет. Разве что к какому новому проекту... которого не предвидится.
Но разбираться буду.
10. artbear 1447 16.12.10 09:09 Сейчас в теме
(8) Да, версию 1С++ покажи. Лучше юзать последнюю из версии 3.Х.Х
и порядок загрузки всех ВК.
1С++ должна грузиться самой первой из ВК - правило верно почти в 99% случаях.
14. Арчибальд 2706 17.12.10 09:04 Сейчас в теме
15. artbear 1447 17.12.10 10:00 Сейчас в теме
(14) Последние релизы 1С++ можно взять на странице
http://www.1cpp.ru/index.php/File:Icpp-latest.rar
Внимание - это не архив, а именно страница :)
и там можно скачать любой релиз 1С++ З.Х.Х, и уточнить историю изменений.
17. Арчибальд 2706 17.12.10 10:36 Сейчас в теме
(15) Спасибо. А что, FormEx перестал быть встроенным?
16. Ish_2 1104 17.12.10 10:08 Сейчас в теме
(14) Давай , Арчибальд, буду ждать.
Чем черт не шутит ?
А вдруг твою обработку графа и вравду спасет 1с++ ?
18. Арчибальд 2706 17.12.10 10:51 Сейчас в теме
(16) Не дерзи :D . Вспомни, что на стотысячном дереве без повторений моя обработка твоей не уступает даже без всяких серверов, на миллионнике с повторениями работает на порядок быстрее, чем у тебя, а на миллиарднике - похоже, на три порядка. Чью обработку тут спасать-то?
19. Ish_2 1104 17.12.10 11:29 Сейчас в теме
(18)Уважаю дерзких . Но твоя дерзость не знает границ .
Я тебе талдычу одно и тоже : всё дело в постановке задачи.

1.Если ты предлагаешь "пулялку" по тестам , где столько нереальных повторений узлов ,
сколько НИКОГДА не встретится в реальных задачах - то твой алгоритм оч.оч. хорош. Признаю.

2. Если ты предлагаешь технологичное решение для пользователя , то
- обработка НЕ ДОЛЖНА зависеть от повторений узлов и быть в среднем оптимальной .
Что толку что твоя обработка показала на выдуманном тесте 0 сек ? - Если в реальном нагрузочном тесте она "рухнула"- 10 мин (!!). Какой в ней прок пользователю ?

- обработка в случае зацикливания графа должна ЯСНО, ПОНЯТНО, ОДНОЗНАЧНО для пользователя отобразить это зацикливание для последующего исправления. Если этого нет , то для практического использования обработка непригодна. Ты , что ? Пользователю который будет тыкаться -искать ошибку после твоих сообщений "..ПОЗ00001", скажешь :
"Зато моя обработка "пуляет" по тесту №1 за 0 сек !"
20. Арчибальд 2706 17.12.10 12:06 Сейчас в теме
(19)
всё дело в постановке задачи

Была поставлена задача разузлования. Эту задачу я и решил. На РЕАЛЬНЫХ комплектациях (а спецификаций с миллионом различных позиций не бывает, это за гранью реальности) она решается на порядок быстрее, чем у тебя.
обработка НЕ ДОЛЖНА зависеть от повторений узлов и быть в среднем оптимальной
Перефразируем для понятности. На твой взгляд, во-первых, обработка должна игнорировать РЕАЛЬНУЮ ситуацию повторения узлов, а во-вторых, среднеоптимальным является прямой перебор дуг. И то и другое - ни в какие ворота...
обработка в случае зацикливания графа должна ЯСНО, ПОНЯТНО, ОДНОЗНАЧНО для пользователя отобразить это зацикливание для последующего исправления.
Ну, давай глянем. В графе с одной ошибочной дугой ты находишь 10 000 ошибочных веток, сообщаешь пользователю о 100 из них - и что? Это ясное, понятное и наглядное представление?
Ты решил не ту задачу. Твоя обработка рисует дерево. И все. А вот с разузлованием - тухляк...
ildarovich; +1 Ответить
21. Ish_2 1104 17.12.10 12:24 Сейчас в теме
(20) Представь своё технологичное решение .
Надеюсь , ты понимаешь , что предыдущее твоё решение "Граф(ин).." на технологичность совсем не тянет.
На 77, на 8, на 1с++. Да хоть на чём !!!
Тогда поговорим.
Сейчас всё впустую.
7. Ish_2 1104 14.12.10 18:32 Сейчас в теме
(5) И правда , попробуй (6) в своей обработке графа.
Прогноз : не спасет .
Но выигрыш в 1.5 - 2 раза , думаю , вполне реален.
22. Арчибальд 2706 17.12.10 16:10 Сейчас в теме
(3)(6) Ассоциативный вектор пока не нашел. На Векторе: запись вдвое быстрее, чем в СписокЗначений, чтение примерно одинаковое. Но съедает больше памяти.
Мои массивы раза в четыре-шесть медленнее работают. Но памяти вдвое меньше съедают.
23. artbear 1447 18.12.10 13:41 Сейчас в теме
(22) А чего его искать? онлайн-дока http://www.1cpp.ru/docum/icpp/html/
например, в данном случае смотри файл extobjs.html
Прямая ссылка
http://www.1cpp.ru/docum/icpp/html/extobjs.html#id119
26. fishca 1254 01.09.11 08:42 Сейчас в теме
(22)
Мои массивы раза в четыре-шесть медленнее работают. Но памяти вдвое меньше съедают.

И чем ты гордишься ;) ?
Сейчас проблемы нарастить память как раз нет, а вот увеличить производительность процессора в большинстве случаев не получается.
27. Арчибальд 2706 01.09.11 09:03 Сейчас в теме
(26) Гордость тут ни при чем, это просто замечание по эксперименту. Тема появилась в связи с дискуссией "Как не попасть на миллион", и там дело упиралось в объем выделяемой задаче памяти - не физической, а системной. Суммарное время работы (обработка+ожидание памяти) сильно зависит от того, что еще крутится на копмпе.
А вообще-то публикация больше показательная, чем практическая.
4. Ish_2 1104 13.12.10 13:00 Сейчас в теме
Арчибальд, любой вопрос можно решить так , а можно и эдак.
Что толку , что ты показал, что Formex можно использовать ? И что с того ?
Где сравнительный анализ ?
Без него читателю ничего не остается, как почесать в затылке : "Арчибальд - это голова...".
24. freespy 01.09.11 04:53 Сейчас в теме
бл9, вы бы лучше обсудили, что в теме нет описания, как определить количество элементов в массиве!
25. Арчибальд 2706 01.09.11 08:36 Сейчас в теме
(24) В теме еще не описано, как определить тип переменной. И много чего другого не описано, к теме не относящегося.
Оставьте свое сообщение