Параллельные вычисления расчета факториала числа N

Публикация № 1257170 29.06.20

Разработка - Математика и алгоритмы

Параллельные вычисления распараллеливание алгоритмов программ асинхронные фоновые задания

Распараллеливание алгоритма с помощью фоновых заданий (асинхронные вычисления)

Цель:

1. ускорить расчет факториала числа

2. научиться распараллеливать вычисления с помощью фоновых заданий

 

Предисловие

Всем привет!

Решил протестировать расчет факториала деревом через параллельные вычисления. Про задачу читайте здесь Факториал числа N = N!

Забегу вперед и скажу, что тесты проводились на клиент-серверной базе, конфигурация Бухгалтерия предприятия, редакция 2.0 на обычных формах, платформа 1С:Предприятие 8.3 (8.3.15.1830), СУБД PostgreSQL. Сведения о процессоре и памяти - в картинках (к сожалению, не знаю как скопировать текст сведений, поэтому вырезал скрин)

Результат меня обрадовал: классический алгоритм рассчитал факториал для 50 000 за 17 сек, алгоритм деревом - за 9 сек. Параллельное вычисление в 4 потока за 0 сек. Напишу за 1 сек, поскольку по настоящему я не смог сделать замеры - отловить время завершения фоновых заданий. Я ориентировался на время начала и время завершения фоновых заданий (картинка консоли заданий приложена).

После 50 000, я быстро посчитал в 4 потока 150 000! за 4-5 сек.

Алгоритм. Решение. Распараллеливание.

Фоновые задания как раз предназначаются для организации параллельных вычислений.

Задачу расчета факториала очень удобно распараллелить на несколько потоков вычислений. Причем это касается любого алгоритма для расчета факториала: классического, рекурсией или деревом. Главное разделить всю последовательность чисел на "отрезки", для каждого из которых запускать свой расчет отдельно.

В общем, сначала разделим входные данные: в алгоритме дерева используется разделение последовательности чисел пополам - еще раз пополам и т.д. Применим эту идею для своих целей.

Я решил разделить последовательность (2...ЧислоN) на 4 группы (см. Листинг 1) и расчет по каждой группе запускать в отдельном фоновом задании (см. Листинг 2).

 
 Листинг 1. Разделим входные данные на 4 группы
 
 Листинг 2. Запуск дочернего фонового задания для потока 1

В файловой базе можно тестировать только одно фоновое задание. Или несколько, но они будут будут вставать в очередь и выполняться последовательно. А значит для распараллеливания файловая база не подходит. 

Поэтому я развернул алгоритм на клиент-серверной базе. При этом я буду запускать сначала родительское фоновое задание (см. Листинг 3), оно в свою очередь будет запускать 4 дочерних фоновых задания (см. Листинг 4).  Листинг 4 содержит все процедуры общего модуля ФоновыеПроцедуры - этого достаточно, чтобы не скачивать прилагаемый ЦФшник.

 
 Листинг 3. Запуск родительского фонового задания
 
 Листинг 4. Запуск 4-х дочерних фоновых заданий из процедуры-обработки родительского фонового задания

Обратите внимание на то, что я задействовал Константы для хранения промежуточных результатов. Тип Число для констант ограничен 32 разрядами, поэтому проверку на корректность расчета я проводил для небольших чисел: от 10 до 20, например. 

Затем запускал расчет факториала для 50 000 и 150 000. Естественно, результат я видел такой "999 999 999 999 999 ....", но в этом случае интересно было только время работы алгоритма. Платформа 1С, насколько я осведомлен, умножает и хранит в памяти большие числа корректно, а вот с отображением больших чисел имеет проблемы. 

Эпилог

Прилагаемую конфигурацию надо запускать в клиент-серверном режиме. Она содержит только общий модуль, обработку с формой для задания числа N и запуска расчета - для тестирования этого достаточно. 

В файловом режиме параллельности расчетов не будет. Для завершения фоновых заданий в файловом режиме используйте таймаут (рекомендация синтакс-помощника). Решение задачи на файловой базе не проводил, поскольку цель была именно разделить потоки вычислений.

 
 Листинг 5. Таймаут для завершения фонового задания

Если будете тестировать распараллеливание вычислений на базах с обычными формами, то можете использовать типовую КонсольЗаданий.epf для просмотра запущенных, завершенных заданий. Эта консоль заданий находится здесь ИТС. Консоль заданий для обычных форм

Если будете тестировать распараллеливание вычислений на базах с управляемыми формами, то используйте БСП (Библиотеку стандартных подсистем), которая содержит подсистему РегламентныеЗадания и свою консоль заданий Описание подсистем БСП. Регламентыне Задания

На платформе 8.3.15.1830 в синтакс-помощнике вы не найдете описание процедуры ФоновыеЗадания.ОжидатьЗавершения() - но в документации 1С найдете Метод ОжидатьЗавершения() считается устаревшим и не рекомендуется к использованию.

Но я его использовал, поскольку мне показалось это удобным.

 

Выводы:

1) ускорил расчет факториала числа

2) научился распараллеливать вычисления с помощью фоновых заданий

Собственно, это все.

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

Лирика, мотивация, кейсы внедрения:

1) Две печатные формы на одном листе

2) JSON -> Дерево значений

3) Анализ прав и ролей: поиск подходящего профиля

4 ) Оцифровка и визуализация склада

Расширения:

1) [Расширение] УНФ. Список заказов + Структура подчиненности

2) [Расширение] БП 3.0. Список счетов/ Список реализаций + Связанные документы

3) [Расширение] УТ 11.4. Счет на оплату с факсимиле и баннерами

Внешние обработки (не расширения!):

1) Список заказов поставщикам + структура подчиненности

2) Список заказов покупателей + структура подчиненности

3) Список реализаций со структурой подчиненности + реестр документов

4) Список заказов покупателей (Расширенная версия)

Другие публикации:

1) Удаление справочников для любых баз на управляемых формах

2) Удаление документов для любых баз на управляемых формах

3) Удаление чеков ККМ в Рознице 2.2

4) Загрузка товаров, штрихкодов, цен и остатков на УФ - Розница 2.2

5) Отчет Остатки и цены (прайс с остатками)

6) Как свернуть базу УТ 10.3: принципы свертки, технология, вспомогательные обработки

7) [ЦФшник] Доработка конфигурации Конвертация Данных

8) [Внешняя обработка] Ввод показателей план-факта БП 3.0

9) [Шаблоны] Договоры для 1с-ника ТОП-скачиваний

10) Удаление документов для любых баз на обычных формах

11) Выделение документов в списках (обычные формы) для групповой обработки

12) Список номенклатуры с выводом уникального идентификатора для УТ 10.3

13) Замена задвоенных договоров в БП 3.0

Всем добра! :)

Специальные предложения

Отзывы
15. dusha0020 1077 30.06.20 15:18 Сейчас в теме
Я кода-то делал подобные вещи, пытаясь ускорить расчеты в серверном режиме. Отсюда у меня ряд вопросов и замечаний:
1. Мне кажется намного удобнее делать количество потоков расчета параметром для вызываемой процедуры. Ядер и потоков на каждом сервере по разному, да и соображения управления нагрузкой не надо забывать.
2. Я бы, как указал echo77 в (1), не стал в таком случае флудить 4 или сколько еще функций расчета факториала, ибо количество потоков динамическое и сколько нужно функций не понятно. Достаточно и одной.
3. Ожидать завершения фоновых заданий можно не собирая их отбором по ключу, а сразу при запуске добавлять в массив. В этом случае нам не нужно будет их потом искать и плодить лишние функции для запуска разных заданий с одним ключом.
4. Как Вы правильно заметили, константы не могут содержать результат больше 32 разрядов. Ну и количество констант не может быть динамическим, определяемым переменной числа нужных потоков. В общем как по мне константы здесь не годятся вообще. Я использовал старый добрый метод ЗначениеВФайл(), передавая имя файла для записи результата как параметр вызываемой функции фонового задания. В этом случае по завершении всех заданий я обходил файлы по списку, получал результаты и обрабатывал.

Прошу не воспринимать мои замечания, как стремление обидеть или уязвить. Пришлось когда-то заниматься этим вопросом, а раз Вы хотите разобраться, то пара-тройка советов, думаю, будет не лишней:)
dammit666; RustIG; +2 Ответить
18. user1534961 13.03.21 20:06 Сейчас в теме
Спасибо. Замечательный пример организации фоновых заданий и обработки данных в многопоточном режиме. Можно использовать и для обменов, и для перепроведений...
5. papami 54 29.06.20 17:47 Сейчас в теме
В БСП удобно все реализовано.
В Бух КОРП 3 дроблю проведение реализаций в разрезе подразделений (количество измеряется десятками) на 4 потока.
При этом 1 поток проводит 2,5 -3 часа, 4 потока - чуть больше часа. (~10000 документов в день)
Причем прибавлять ядра/потоки больше смысла нет, т.к. там уже в другом месте упирается.
Остальные комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. echo77 1768 29.06.20 07:08 Сейчас в теме
А что если использовать одну процедуру ФакториалДПоток при запуске фонового задания?
2. RustIG 1693 29.06.20 10:13 Сейчас в теме
(1) согласно синтакс-помощнику процедуры - обработчики фоновых заданий должны отличаться для фоновых заданий с одинаковым ключом. А ключ одинаковый мне нужен, чтобы фильтр наложить на ожидание одновременно завершающихся заданий.
В общем, я пробовал по разному - и текущий вариант оказался работоспособен.

Цитата из санткас-помощника:
<Ключ> (необязательный)
Тип: Строка.
Ключ задания. Если ключ задан, то он должен быть уникальным среди ключей активных фоновых заданий, имеющих такое же имя метода, что и у данного фонового задания.
3. echo77 1768 29.06.20 10:17 Сейчас в теме
(2) А что если сделать одну процедуру и разные ключи и ожидать завершения фоновых заданий с разными ключами?
4. RustIG 1693 29.06.20 10:21 Сейчас в теме
(3) в теории наверное так тоже можно - программировать придется больше проверок - проверять каждый запущенный фоновый процесс по ключу

просто одно дело теория, другое дело практика - я пока тестировал ряд фраз синтакс-помощника по разному "прочитывал" и натыкался на бездействие программы.

В итоге, сейчас на практике понял некоторые нюансы. Поэтому за нюансы вашего предложенного способа ручаться не могу, комментировать тоже. Тут надо один раз попробовать.

Надеюсь на силу сообщества - каждый внесет свою лепту в раздел "параллельных вычислений".
15. dusha0020 1077 30.06.20 15:18 Сейчас в теме
Я кода-то делал подобные вещи, пытаясь ускорить расчеты в серверном режиме. Отсюда у меня ряд вопросов и замечаний:
1. Мне кажется намного удобнее делать количество потоков расчета параметром для вызываемой процедуры. Ядер и потоков на каждом сервере по разному, да и соображения управления нагрузкой не надо забывать.
2. Я бы, как указал echo77 в (1), не стал в таком случае флудить 4 или сколько еще функций расчета факториала, ибо количество потоков динамическое и сколько нужно функций не понятно. Достаточно и одной.
3. Ожидать завершения фоновых заданий можно не собирая их отбором по ключу, а сразу при запуске добавлять в массив. В этом случае нам не нужно будет их потом искать и плодить лишние функции для запуска разных заданий с одним ключом.
4. Как Вы правильно заметили, константы не могут содержать результат больше 32 разрядов. Ну и количество констант не может быть динамическим, определяемым переменной числа нужных потоков. В общем как по мне константы здесь не годятся вообще. Я использовал старый добрый метод ЗначениеВФайл(), передавая имя файла для записи результата как параметр вызываемой функции фонового задания. В этом случае по завершении всех заданий я обходил файлы по списку, получал результаты и обрабатывал.

Прошу не воспринимать мои замечания, как стремление обидеть или уязвить. Пришлось когда-то заниматься этим вопросом, а раз Вы хотите разобраться, то пара-тройка советов, думаю, будет не лишней:)
dammit666; RustIG; +2 Ответить
16. RustIG 1693 30.06.20 15:54 Сейчас в теме
(15) спасибо, вот про это не додумался:
3. Ожидать завершения фоновых заданий можно не собирая их отбором по ключу, а сразу при запуске добавлять в массив. В этом случае нам не нужно будет их потом искать и плодить лишние функции для запуска разных заданий с одним ключом.


а в остальном, все верно - и про константы и их замену на файл на жестком диске, и про параметр и одну функцию-обработчик - я уже позже домыслил реализацию, но не стал экспериментировать.
5. papami 54 29.06.20 17:47 Сейчас в теме
В БСП удобно все реализовано.
В Бух КОРП 3 дроблю проведение реализаций в разрезе подразделений (количество измеряется десятками) на 4 потока.
При этом 1 поток проводит 2,5 -3 часа, 4 потока - чуть больше часа. (~10000 документов в день)
Причем прибавлять ядра/потоки больше смысла нет, т.к. там уже в другом месте упирается.
6. RustIG 1693 29.06.20 17:53 Сейчас в теме
(5)
Причем прибавлять ядра


насколько я помню, дело не в кол-ве ядер...
и с одним ядром можно несколько рабочих процессов (потоков) запускать... за этим следит кластер серверов и платформа 1с. каждый фоновый процесс запускается в отдельном рабочем процессе.
9. papami 54 29.06.20 18:30 Сейчас в теме
(6)
с одним ядром можно несколько рабочих процессов (потоков) запускать...

Можно запускать, но вопрос в эффективности (я про производительность)
7. RustIG 1693 29.06.20 17:58 Сейчас в теме
(5) с проведением документов надо программировать непересекающиеся множества документов (записей в таблицах), чтобы не создавались блокировки записей в таблицах (документов)...
все-таки принцип проведения документов - особенно расчет себестоимости - основывается на последовательном проведении документов (или фиксации факта хоз.деятельности) - поэтому параллелить именно процесс проведения документов имеет ряд ограничений и нюансов...
8. papami 54 29.06.20 18:27 Сейчас в теме
10. RustIG 1693 29.06.20 19:27 Сейчас в теме
(5) все-таки научиться проводить документы в фоне (через фоновые задания) нельзя назвать задачей распараллеливания вычислений...
При проведении вы не ожидаете завершения фоновой задачи, чтобы произвести очередной расчет, и не используете полученные промежуточные результаты.
Для распараллеливания вычислений как раз и надо собрать все промежуточные результаты всех дочерних фоновых заданий и обработать их в родительском фоновом задании.

Для распараллеливания вам придется залезть в общий модуль конфигурации, дописать логику распараллеливания и сборки промежуточных результатов. А для типовой БП КОРП 3, я думаю это критично для последующих обновлений...

А вот запустить из внешней обработки длительную операцию перепроведения документов с отбором по подразделению - можно легко в БУХ КОРП 3...

Вы как реализовали свой метод?

Кто знает, заложена ли в БСП реализация разделения родительского фонового задания на дочерние и сборка промежуточных результатов?
11. papami 54 29.06.20 19:39 Сейчас в теме
(10)
Что-то Вы тут все как-то в кучу)
Дискуссия отнимет массу времени. Я пас.
13. RustIG 1693 29.06.20 19:46 Сейчас в теме
(11) все ок. можете не отвечать :)
я полагаю, что в БСП заложена модель , о которой я спрашиваю. Например из общего неглобального модуля происходит вызов процедуры из модуля внешней обработки - в модуле обработки можно прописать любую логику и функциональность. Задача решена! :)
12. tazhitkov 29.06.20 19:41 Сейчас в теме
А зачем такой факториал считать?
14. RustIG 1693 29.06.20 19:51 Сейчас в теме
(12) хочется написать мат.пакет алгоритмов для решения СЛАУ.
Начал с простого - с факториала. Изыскания привели к написанию двух публикаций.
Шаг за шагом изучаю возможности платформы.
17. TODD22 18 01.07.20 14:11 Сейчас в теме
(14)
хочется написать мат.пакет алгоритмов для решения СЛАУ.

Если ничего не путаю, 1С вроде в платформе что то реализовывала для решения СЛАУ.
18. user1534961 13.03.21 20:06 Сейчас в теме
Спасибо. Замечательный пример организации фоновых заданий и обработки данных в многопоточном режиме. Можно использовать и для обменов, и для перепроведений...
Оставьте свое сообщение

См. также

Модель распределения суммы по базе

Математика и алгоритмы Платформа 1С v8.3 Россия Абонемент ($m)

Обычно под распределением понимают определение сумм пропорционально коэффициентам. Предлагаю включить сюда также распределение по порядку (FIFO, LIFO) и повысить уровень размерности до 2-х. 1-ое означает, что распределение может быть не только пропорциональным, но и по порядку, а 2-ое - это вариант реализации матричного распределения: по строкам и столбцам. Возможно вас заинтересует также необычное решение этой задачи через создание DSL на базе реализации текучего интерфейса

1 стартмани

21.03.2022    6270    6    kalyaka    11    

37

JSON -> Дерево значений

Инструментарий разработчика Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Очередной просмотрщик json-структуры

1 стартмани

21.12.2021    8230    53    RustIG    25    

33

Изменения формата файлов конфигурации (CF) в 8.3.16

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

Дополнение по формату файлов конфигурации (*.cf) в версии 8.3.16.

16.12.2021    3210    fishca    13    

36

Анализ прав и ролей: поиск подходящего профиля

Роли и права Платформа 1С v8.3 Управляемые формы Управление правами Конфигурации 1cv8 Абонемент ($m)

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

6 стартмани

09.12.2021    11981    146    RustIG    26    

46

Оцифровка и визуализация склада

Учет ТМЦ Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Программная прорисовка склада, магазина, уличных мест хранения - оцифровка и визуализация адресного хранения.

4 стартмани

17.11.2021    17305    60    RustIG    59    

74

Интересная задача на Yandex cup 2021

Математика и алгоритмы Бесплатно (free)

Мое решение задачи на Yandex cup 2021 (frontend). Лабиринт. JavaScript.

12.10.2021    6867    John_d    73    

46

Механизм анализа данных. Кластеризация.

Математика и алгоритмы Анализ учета Платформа 1С v8.3 Анализ и прогнозирование Бесплатно (free)

Подробный разбор, с примером использования, встроенного механизма кластеризации 1С.

31.08.2021    5342    dusha0020    8    

62

Алгоритмы распределения сумм (наивная методика, Алгоритм Кэхэна)

Математика и алгоритмы Россия Бесплатно (free)

Многим встречалась задача распределения суммы и вытекающая из нее проблема округления, каждый решал ее по-своему, все ли способы вам известны?

08.07.2021    5439    con-men    31    

22

Работа с абстрактным массивом

Математика и алгоритмы Универсальные функции Платформа 1С v8.3 Россия Абонемент ($m)

Абстрактные типы данных и алгоритмы уверенно набирают популярность в языках общего назначения. Встроенный язык 1С является предметно-ориентированным и не спешит развиваться в сторону поддержки абстракций. Однако потребность в них существует, т.к. задачи, решаемые на платформе, не уступают разнообразию из других ЯП. Предлагаю рассмотреть вариант реализации абстрактного массива в 1С.

1 стартмани

07.07.2021    6733    kalyaka    57    

31

Параллельная обработка очереди сообщений

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

Описание алгоритма обработки очереди последовательных сообщений регистрации изменений записей регистра сведений. Алгоритм может быть применим к любым объектам метаданных. Алгоритм основан на обработке объектов по их ключам.

15.06.2021    4297    zhichkin    11    

22

Чем воспользоваться для распознавания котиков в 1С?

Математика и алгоритмы Языки и среды Платформа 1С v8.3 Бесплатно (free)

На митапе по инструментам для расширения возможностей 1С выступил Олег Филиппов. Он сравнил подходы Native API, COM, Docker и Serverless, и рассказал, как упростить использование в 1С алгоритмов, реализованных на других языках, с помощью облачной технологии «Функция как сервис».

12.04.2021    4801    comol    10    

29

Эффективные приемы разработки

Математика и алгоритмы Рефакторинг и качество кода СКД Платформа 1С v8.3 Бесплатно (free)

На Infostart Meetup Ekaterinburg.Online выступил Сергей Наумов – руководитель центра аналитики и консалтинга WiseAdvice. Сергей поделился с коллегами приемами разработки, которые помогут избежать потенциальных проблем при реализации сложных проектов.

07.04.2021    5353    SergeyN    13    

39

1С: Документооборот, Data Science и Python

Документооборот и делопроизводство (СЭД) Математика и алгоритмы 1С:Документооборот Бесплатно (free)

В статье рассказывается о создании и обучении модели Data Science на языке Python и интеграции с системой 1С: Документооборот

04.08.2020    5399    Vaganov_Alexey    13    

55

Применение математических достижений в решении сложных задач бизнеса

Математика и алгоритмы Бесплатно (free)

Как правило, самые сложные задачи решаются с точки зрения математики очень легко. Но чтобы найти правильное решение, важно понять бизнес-цель, которую достигает эта задача. О практическом применении математических достижений для эффективного решения сложных задач бизнеса на конференции Infostart Event 2019 Inception рассказал Дмитрий Мишнов.

25.05.2020    6758    Mishnov    17    

22

Поиск и замена задвоенных договоров в БП 3.0

Чистка данных Обработка справочников Платформа 1С v8.3 Бухгалтерский учет 1С:Бухгалтерия 3.0 Бухгалтерский учет Абонемент ($m)

Удобный поиск и замена задвоенных договоров. Информация о задвоенных договорах берется из ОСВ по 60, 62 счету.

4 стартмани

29.04.2020    10857    45    RustIG    5    

7

Множественное (групповое) выделение документов в списках (обычные формы)

Универсальные обработки Рабочее место Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Зарплата и Управление Персоналом 2.5 1С:Управление торговлей 10 Абонемент ($m)

Множественное (групповое) выделение документов в динамическом списке обычных форм удобно использовать для групповой отмены проведения, пометки на удаление, проведения документов.

1 стартмани

27.04.2020    15750    16    RustIG    6    

10

[Расширение] УТ 11.4. Счет на оплату с факсимиле

Печатные формы Оптовая торговля Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 11 Абонемент ($m)

Счет на оплату с факсимиле. Готовый шаблон для собственных доработок. Расширение для УТ 11.4.

3 стартмани

12.04.2020    15909    26    RustIG    23    

7

[Расширение] УНФ. Список заказов + Структура подчиненности

Монитор заказов Рабочее место Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 Управленческий учет Абонемент ($m)

Список заказов покупателей + Структура подчиненности в одном окне. Расширение для программы Управление нашей фирмой, редакция 1.6.

5 стартмани

05.04.2020    34511    34    RustIG    21    

16

Улучшение пооперационного планирования в 1С:ERP 2.4 внешними средствами

Математика и алгоритмы HighLoad оптимизация Бесплатно (free)

Задача построения оптимального производственного расписания требует сравнения тысяч и десятков тысяч вариантов. Выполнять такие вычисления средствами платформы 1С Предприятие нецелесообразно. Как реализовать пооперационное планирование с использованием генетических алгоритмов и параллельных вычислений в докладе на конференции Infostart Event 2019 Inception рассказал генеральный директор компании «ИНТЕХ» Сергей Сафаров.

02.03.2020    9029    ildarovich    8    

53

Treemapping. Демонстрационная обработка

Математика и алгоритмы Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Пример реализации диаграммы вида Treemap на 1С

1 стартмани

27.02.2020    8972    19    randomus    4    

30

Treemapping — способ визуализации данных древовидной структуры. Карта-схема дерева

Математика и алгоритмы Работа с интерфейсом Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

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

18.02.2020    8574    randomus    20    

75

Сравнение адресов: случай из практики

Математика и алгоритмы Универсальные функции Платформа 1С v8.3 Россия Бесплатно (free)

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

04.01.2020    5410    AnatolPopov    7    

22

30 задач. Странных и не очень

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

30 задач на знание языка программирования 1С и некоторого поведения платформы. Маленьких. Странных и не очень.

02.12.2019    40797    Infostart    63    

161

Иерархия без "В ИЕРАРХИИ"

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

Говорится о том, как эффективно представлять иерархию в СУБД, как получать и использовать эти представления при решении задач в запросной технике. Уточняются и дополняются запросы из статьи "Уровни, глубина, прародители, циклы и аналоги запросом" [https://infostart.ru/public/160707/].

22.08.2019    19520    ildarovich    24    

181

Алгоритмы поиска пути в графе. Часть 2

Математика и алгоритмы Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Новые возможности, ранее реализованных алгоритмов поиска пути в графе на платформе 1С 8.3.

1 стартмани

13.08.2019    13960    11    RonX01    10    

92

Обработчики событий при записи объектов. Зачем и что за чем?

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

Программисту, имеющему немного опыта на платформе 1С 8.3, бывает сложно разобраться: ПередЗаписью, ПриЗаписи, ПослеЗаписи, на сервере, на клиенте, в модуле формы, в модуле объекта.... Эта шпаргалка была создана в процессе обучения и реального опыта с целью разложить всё по полочкам, чтобы было четкое понимание в каком случае какой обработчик нужно использовать и в какой последовательности они запускаются при записи и проведении документов. Данная статья будет полезна в большей степени начинающим разработчикам. Но и опытным позволит освежить информацию, упорядочить её.

25.07.2019    201446    AlbinaAAA    51    

757

Что делает "В ИЕРАРХИИ" в запросе?

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

Описание действий платформы 1С при использовании конструкции "В ИЕРАРХИИ" в запросах.

16.07.2019    74999    Infostart    34    

131

10 способов получить модуль числа (а может, и больше)

Математика и алгоритмы Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Пишем функцию вычисления модуля числа. Сколько способов существует? Давайте посчитаем!

1 стартмани

11.07.2019    26824    sam441    38    

56

Алгоритмы поиска пути в графе

Математика и алгоритмы Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

Реализуем алгоритмы поиска пути в графе на платформе 1С 8.3, такие как алгоритм А*, поиск в ширину, жадный поиск, алгоритм Дейкстры и вконце волновой.

1 стартмани

09.07.2019    29761    14    RonX01    11    

116

Создание отчетов с помощью СКД - основные понятия и элементы

Математика и алгоритмы Платформа 1С v8.3 Система компоновки данных Бесплатно (free)

Основные принципы работы СКД. Понятия схемы компоновки и макета компоновки. Описание основных элементов схемы компоновки: наборы данных, поля, вычисляемые поля, ресурсы, параметры.

25.06.2019    103734    ids79    33    

336

Реализуем Стек, Очередь и Приоритетную очередь в 1С

Математика и алгоритмы Универсальные функции Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

В статье рассматриваются способы реализации таких абстрактных структур данных, как стек, очередь и приоритетная очередь, используя готовые типы данных 1С. Выявляются "узкие" места, сложные моменты в реализации и сравнивается скорость работы.

24.06.2019    19679    RonX01    70    

88