Параллельные вычисления расчета факториала числа 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) Бонусная система. Разработка, внедрение

3) Про деньги фрилансера и ценообразование услуг

4 )Внедрение адресного хранения на 1С:КА 2.4. Часть 1. Теоретическая.

Расширения:

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 1019 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 43 29.06.20 17:47 Сейчас в теме
В БСП удобно все реализовано.
В Бух КОРП 3 дроблю проведение реализаций в разрезе подразделений (количество измеряется десятками) на 4 потока.
При этом 1 поток проводит 2,5 -3 часа, 4 потока - чуть больше часа. (~10000 документов в день)
Причем прибавлять ядра/потоки больше смысла нет, т.к. там уже в другом месте упирается.
Остальные комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. echo77 1260 29.06.20 07:08 Сейчас в теме
А что если использовать одну процедуру ФакториалДПоток при запуске фонового задания?
2. Rustig 1197 29.06.20 10:13 Сейчас в теме
(1) согласно синтакс-помощнику процедуры - обработчики фоновых заданий должны отличаться для фоновых заданий с одинаковым ключом. А ключ одинаковый мне нужен, чтобы фильтр наложить на ожидание одновременно завершающихся заданий.
В общем, я пробовал по разному - и текущий вариант оказался работоспособен.

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

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

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

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

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


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


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

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

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

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

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

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

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

См. также

Аналог PIVOT в запросе 1С (как выполнить транспонирование таблицы в запросе 1С) Промо

Практика программирования v8 Бесплатно (free)

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

12.12.2020    3961    Eugen-S    21    

Полезные примеры СКД, ч.2

Практика программирования v8 v8::СКД Бесплатно (free)

Еще несколько примеров решения задач в СКД.

06.04.2021    10104    Neti    8    

Неочевидные нюансы записи управляемой формы

Практика программирования v8 v8::УФ Платформа 1C v8.2 1cv8.cf Бесплатно (free)

Разберем несколько нюансов записи управляемой формы.

02.04.2021    11823    SeiOkami    54    

Обзор полезных методов БСП 3.1.4

Практика программирования БСП (Библиотека стандартных подсистем) v8 1cv8.cf Бесплатно (free)

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

25.03.2021    37541    rayastar    51    

Как свернуть базу УТ 10.3 Промо

Свертка базы v8 v8::ОУ УТ10 Россия УУ Платные (руб)

Как свернуть УТ 10.3. Цель свертки - свернуть остатки по товарам и по взаиморасчетам с контрагентами.

1800 руб.

04.04.2019    31224    188    37    

Звуковое управление в 1С 8.3

Практика программирования v8 1cv8.cf Бесплатно (free)

В данной статье описано создание библиотеки для звукового управления (выполнение команд голосом) для платформы 1С 8.3. Задача была поставлена так, чтобы модуль функционировал непосредственно на клиенте 1С, осуществляя управление формами, и взаимодействовал с интерфейсом.

16.03.2021    6914    velemir    31    

Доработка проведения в ERP 2.5. (Регистры накопления, Регистры сведений)

Практика программирования v8 ERP2 БУ Бесплатно (free)

Покажу точки входа для доработки "типового" проведения документов в ERP для регистров оперативного учета. Рассмотрим три основные ситуации: нужно изменить имеющееся проведение документа; нужно сделать записи в существующие регистры; нужно с нуля описать алгоритм проведения в добавленный регистр. Пример реализован на 1С:ERP Управление предприятием 2 (2.5.4.120)

10.01.2021    10277    BuriyLesha    10    

Serverless (Faas) в 1С. Создание и вызов Yandex Cloud Functions

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

"Я не могу просто взять и скопировать код с гитхаба", "у нас 1С микросервисами окружена", "возможностей мало" - частые фразы 1С разработчиков. которым не хватает возможностей платформы в современном мире. Faas, конечно, история не новая, но нас сдерживало 152ФЗ и задержки по пингам. Для того, чтобы действительно использовать в 1С код, к примеру, на Python, надо было приложить усилия. Теперь всё намного проще - берём и используем.

28.12.2020    8606    comol    31    

Базовые вещи БСП, которые облегчат жизнь программисту 1С

Практика программирования БСП (Библиотека стандартных подсистем) v8 1cv8.cf Россия Бесплатно (free)

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

30.08.2020    19479    quazare    34    

Серверные вызовы, которые нельзя вызывать

Практика программирования v8 v8::УФ 1cv8.cf Бесплатно (free)

Не баян, а классика. Рассмотрим особенность платформы настолько же древнюю, как сами УФ.

12.05.2020    9100    SeiOkami    34    

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

Практика программирования Разработка внешних компонент Универсальные функции v7.7 v8 Бесплатно (free)

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

27.01.2016    85132    Serginio    115    

Форма выбора (подбор) в управляемых формах

Практика программирования v8 v8::УФ 1cv8.cf Россия Бесплатно (free)

Разбор небольших примеров того, как правильно открывать форму выбора (подбора) в управляемых формах, не прибегая к модальным окнам.

08.05.2020    73162    user5300    19    

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

Чистка базы Обработка справочников v8 v8::БУ БП3.0 БУ Абонемент ($m)

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

2 стартмани

29.04.2020    5550    20    Rustig    5    

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

Чистка базы v8 КА1 БП2.0 ЗУП2.5 УТ10 Абонемент ($m)

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

2 стартмани

27.04.2020    5975    32    Rustig    2    

Список заказов покупателей (новый взгляд) Промо

Рабочее место Монитор заказов Оптовая торговля Монитор заказов Оптовая торговля v8 v8::ОУ КА1 УТ10 УУ Абонемент ($m)

Внешняя обработка "Список заказов покупателей". Фишка в том, что на одной форме отображается структура связанных документов с указанием контрагента. В этом окне также есть список товаров по заказу. Видны статусы заказов: исполнен, выполняется, черновик.

2 стартмани

16.08.2017    37014    72    Rustig    62    

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

Универсальные обработки Рабочее место v8 КА1 БП2.0 ЗУП2.5 УТ10 УУ Абонемент ($m)

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

2 стартмани

27.04.2020    8362    9    Rustig    4    

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

Печатные формы документов Оптовая торговля v8 v8::ОУ УТ11 Абонемент ($m)

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

2 стартмани

12.04.2020    8225    16    Rustig    19    

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

Рабочее место Оптовая торговля v8 v8::БУ БП3.0 БУ Абонемент ($m)

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

1 стартмани

09.04.2020    6557    8    Rustig    6    

Загрузка товаров, остатков и цен. Розница 2.2, 2.3 Промо

Обработка документов Обработка справочников Загрузка и выгрузка в Excel Розничная торговля Учет ТМЦ Розничная торговля Учет ТМЦ v8 Розница Россия УУ Платные (руб)

Загрузка товаров, остатков и цен из макета табличного документа (из эксель "вручную") + макет ценника со штрихкодом. Розница 2.2,2.3.

1800 руб.

08.04.2019    26734    45    26    

Список номенклатуры + Уникальный идентификатор. УТ 10.3

Поиск данных Оптовая торговля v8 v8::ОУ УТ10 УУ Абонемент ($m)

Поиск номенклатуры по уникальному идентификатору.

2 стартмани

09.04.2020    5208    2    Rustig    2    

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

Монитор заказов Рабочее место v8 УНФ УУ Абонемент ($m)

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

1 стартмани

05.04.2020    19699    15    Rustig    9    

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

Чистка базы v8 v8::УФ 1cv8.cf Абонемент ($m)

Удаление справочников без проверки связанных ссылок для любых баз на УФ и ОФ.

1 стартмани

04.02.2020    6402    22    Rustig    9    

Использование программных перечислений, ч.1: строковые константы Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

Часто ли у вас возникает необходимость в коде выполнять сравнение на строку?

10.12.2016    40882    unichkin    74    

Программная работа с настройками СКД

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Нюансы программной работы с настройками системы компоновки данных в отчетах и динамических списках. Обзор всех видов настроек компоновки. Что в каких случаях правильно применять. В качестве примера рассмотрена работа с отборами и группировками.

27.01.2020    63236    ids79    26    

[СКД] Программное создание схемы компоновки данных

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Сделаем отчет на СКД полностью программно, без использования макета "схема компоновки данных".

15.01.2020    42435    John_d    22    

Последовательности событий при проведении документа 1С. Шпаргалка + про формы + про расширения

Практика программирования v8 Россия Бесплатно (free)

Собрал информацию о событиях/подписках/расширениях в одном месте.

30.12.2019    34088    kuzyara    38    

Вспомогательные инструкции в коде 1С Промо

Практика программирования v8 1cv8.cf Бесплатно (free)

Помогаем редактору кода 1С помогать нам писать и анализировать код.

15.10.2018    35832    tormozit    106    

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

Практика программирования v8 Бесплатно (free)

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

02.12.2019    23738    YPermitin    62    

Как передать IP адрес, который вызвал HTTP запрос в 1C (для веб-сервера Apache)

Практика программирования v8 Бесплатно (free)

Столкнулся с задачей получения IP адреса, который вызывает http сервис 1С. Итак, решение:

22.11.2019    12064    Sibars    19    

Полезные процедуры и функции для программиста

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

Все мы пишем программный код и часто используем процедуры, облегчающие его написание. Ниже приведена выборка таких полезных процедур и функций.

07.10.2019    39150    HostHost    41    

Оформление и рефакторинг сложных логических выражений Промо

Практика программирования v8 Россия Бесплатно (free)

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

20.09.2012    82619    tormozit    131    

Таблица значений. Нюансы

Практика программирования v8 Бесплатно (free)

Обзор некоторых аспектов использования общеизвестного инструмента 1С.

01.10.2019    51888    Yashazz    56    

О программе Postman для тестирования API и для чего она нужна 1С-нику

Практика программирования Программное обеспечение (software) v8 Бесплатно (free)

Для чего нужна программа Postman для тестирования API и какая от него польза для 1С-программиста.

24.09.2019    19671    budidich    31    

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

Обработка документов Чистка базы v8 v8::УФ Розница УНФ БП3.0 ЗУП3.x Абонемент ($m)

Удаление и распроведение документов для любых баз на УФ.

2 стартмани

13.09.2019    11308    146    Rustig    32    

Запись значения в поле ввода/формы со срабатыванием события ПриИзменении Промо

Практика программирования v8 1cv8.cf Россия Бесплатно (free)

Иногда возникает необходимость после записи значения в какое либо поле ввода/формы вызвать для него обработчик события ПриИзменении, а о вызове самого события приходится только мечтать. В этой статье приводится программный способ вызова этого события.

11.07.2007    54048    tormozit    51    

[Шпаргалка] Программное создание элементов формы

Практика программирования Работа с интерфейсом v8 1cv8.cf Бесплатно (free)

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

06.09.2019    98345    rpgshnik    75    

Агрегатные функции СКД, о которых мало кто знает

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Пользуетесь ли Вы всеми возможными агрегатными функциями, которые предоставляет система компоновки данных? Если Вы используете только: СУММА, КОЛИЧЕСТВО, МИНИМУМ, МАКСИМУМ, СРЕДНЕЕ, то эта статья для Вас.

05.09.2019    75826    ids79    55    

Регистры бухгалтерии. Общая информация

Практика программирования Математика и алгоритмы v8 v8::БУ БУ Бесплатно (free)

Общая информация о внутреннем устройстве регистров бухгалтерии.

05.09.2019    45448    YPermitin    25    

Три костыля. Сказ про фокусы в коде

Практика программирования v8 Бесплатно (free)

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

03.09.2019    29989    YPermitin    81    

Отслеживание выполнения фонового задания

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

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

17.08.2019    44462    ids79    22    

Функции СКД: ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Подробное описание и использование внутренних функций системы компоновки данных: Вычислить, ВычислитьВыражение, ВычислитьВыражениеСГруппировкойМассив, ВычислитьВыражениеСГруппировкойТаблицаЗначений.

08.08.2019    147161    ids79    75    

Фоновое выполнение кода в 1С - это просто

Практика программирования v8 1cv8.cf Бесплатно (free)

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

02.08.2019    59187    avalakh    26    

Разбираемся с параметрами редактирования СКД

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Связь по типу, Параметры выбора, Связи параметров выбора

31.07.2019    40674    json    17    

СКД - наборы данных и связи между ними, создание собственной иерархии, вложенные отчеты

Практика программирования v8 v8::СКД 1cv8.cf Бесплатно (free)

Набор данных объект. Использование в схеме компоновки нескольких наборов данных. Различные варианты связи наборов: объединение, соединение. Использование иерархии в отчетах на СКД. Создание собственной иерархии, иерархия детальных записей. Использование вложенных схем в отчетах на СКД.

26.07.2019    102825    ids79    16    

СКД - использование расширений языка запросов, секция ХАРАКТЕРИСТИКИ

Инструментарий разработчика Практика программирования v8 v8::СКД Бесплатно (free)

Автоматическое и не автоматическое заполнение полей компоновки данных. Использование расширений языка запросов для СКД «{…}», секция ВЫБРАТЬ, секция ГДЕ, параметры виртуальных таблиц. Автоматизированное использование дополнительных данных в запросе: секция ХАРАКТЕРИСТИКИ.

17.07.2019    47654    ids79    27    

Регистры сведений. За кулисами

Практика программирования Разработка v8 1cv8.cf Бесплатно (free)

Небольшие заметки по внутреннему устройству регистров сведений.

09.07.2019    33464    YPermitin    14