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

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    1565    user707242_Gold_karas    18    

5

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

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

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

1 стартмани

06.10.2018    7475    Vortigaunt    5    

11

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

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

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

1 стартмани

16.05.2018    10147    Vortigaunt    26    

5

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

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

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

27.01.2016    94095    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    44050    95    kitminsk    18    

20

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

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

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

24.07.2014    23766    tomvlad    5    

14

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

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

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

02.07.2012    18385    maxpiter    62    

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

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

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

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