Многопоточные фоновые задания

02.08.17

База данных - Инструменты администратора БД

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

Скачать файл

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование По подписке [?] Купить один файл
Многопоточные фоновые задания:
.cf 83,51Kb
22
22 Скачать (1 SM) Купить за 1 850 руб.

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

  1. Запустить последовательную обработку и 7 процессоров сервера будут курить бамбук, пока один считает себестоимость.
  2. Запустить параллельную обработку и долго и упорно пилить сценарии балансировки, перезапуска при ошибках и т.п.

Здесь то и приходит на помощь Менеджер фоновых заданий. В рамках разработки расчета себестоимости нам придется написать две экспортные функции в общем модуле:

  1. ПолучитьНоменклатуруДляРасчетаСебестоимости() - эта функция должна возвращать массив структур с ключами Разделитель (строка36) и Синоним (строка100). В поле Разделитель мы помещаем формальное значение, в рамках которого будем потом выполнять задания. В нашем случае это будет УИД номенклатуры, приведенный к строке. В поле Синоним требуется поместить синоним разделителя, который будет выводиться в пользовательский интерфейс. В нашем случае это может быть наименование номенклатуры.
  2. ВыполнитьРасчетСебестоимостиПоНоменклатуре(Разделитель, ДополнительныеПараметры) - эта процедура должна выполнять расчет себестоимости. На вход ей подаются: Разделитель (строка36) - формальное значение, в рамках которого выполняется разделение, в нашем случае УИД номенклатуры и ДополнительныеПараметры - структура, ключ и значение которой мы задаем в пользовательском интерфейсе.

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

Естественно, возможности менеджера не ограничиваются приведенным примером. Можно управлять обменами данных, запусками алгоритмов, формированием отчетов и т.п. Главное выдерживать основной принцип: Определение формального разделителя -> Запуск обработки по значению разделителя.

Если в вашем конкретном случае вы не можете выявить один разделитель, а обработку требуется проводить по паре (тройке, четверке...) параметров (например номеналутра-склад) - можно применить следующий подход:

  1. Создаете свой регистр сведений в котором склад и номенклатура - измерения, разделитель - ресурс
  2. В функции получения разделителей определяете те пары номенклатура - склад по которым вы хотите вести обработку и запишите эти пары в регистр, формируя при этом новые иентификаторы. Эти новые идентификаторы (строковые представления) возвращайте Менеджеру.
  3. В процедуре выполнения принимайте на вход идентификатор, ищите его в регистре - получаете пару номенклатура - склад

При этом, возникает вопрос как не отправить дважды один и тот же идентификатор, как при этом гарантировать его получение менеджером и как понять когда идентификатор больше не нужен и можно почистить регистр. Для этого требуется написать две процедуры и указать их полные имена в соответствующих реквизитах фонового задания:

  1. ПриПолученииРазделителя(Разделитель) - Менеджер вызовет эту процедуру с соответствующим значением разделителя, когда разделитель будет гарантировано им получен. В этой процедуре можно установить на соответствующую запись регистра флаг "больше не отправлять".
  2. ПриУспешномВыполнении(Разделитель) - Менеджер вызовет эту процедуру с соответствующим значением разделителя, когда обработка этого разделителя будет завершена. В этой процедуре можно удалить запись из нашего регистра.

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

Менеджер поставляется в виде поставки конфигурации, код открыт. В общем модуле ФоновыеЗаданияСервер после комментария "/// тестовые функции" приведены примеры написания процедур для работы с Менеджером. При внедрении в относительно свежие типовые модуль ОбщегоНазначенияКлиент не включать в объединение; при внедрении в старые типовые или самописные - смотреть по месту.

Многопоточность Фоновые задания

См. также

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку сразу нескольких баз данных и выполнять их автоматически без непосредственного участия пользователя. Решение в Реестре отечественного ПО

8400 руб.

20.08.2024    14826    108    46    

108

Инструменты администратора БД Инструментарий разработчика Роли и права Программист Платформа 1С v8.3 1C:Бухгалтерия Россия Платные (руб)

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

15000 руб.

10.11.2023    11986    45    33    

67

Инструменты администратора БД Роли и права Системный администратор Программист Пользователь 8.3.14 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Документооборот 1С:Зарплата и кадры государственного учреждения 3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Роли… Вы тратите много времени и сил на подбор ролей среди около 2400 в ERP или 1500 в Рознице 2, пытаясь понять какими правами они обладают? Вы все время смотрите права в конфигураторе или отчетах чтоб создать нормальные профили доступа? Вы хотите наглядно видеть какие права дает профиль и редактировать все в простом виде? А может хотите просто указать подсистему и дать права на просмотр и добавление на объекты и не лезть в дебри прав и чтоб обработка сама подобрала нужные роли? Все это теперь стало возможно! Обновление от 18.09.2024, версия 1.2

18000 руб.

06.12.2023    10822    47    8    

78

SALE! %

Инструментарий разработчика Инструменты администратора БД Системный администратор Программист Платформа 1С v8.3 Управляемые формы 1C:Бухгалтерия Россия Платные (руб)

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

4800 3840 руб.

14.01.2013    191446    1153    0    

920

Закрытие периода Инструменты администратора БД Корректировка данных Бухгалтер Пользователь Бухгалтерский учет 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)

Расширение «Оперативное проведение» в 4 раза уменьшает время проведения документов и закрытия месяца. Является комплексным решением проблем 62 и 60 счетов. Оптимизирует проведение при включенной функциональной опции «Раздельный учет НДС». Используется в более 10 организациях уже 2 года. Совместимо с конфигурацией Бухгалтерия 3.0 (+КОРП).

14400 руб.

29.04.2020    33887    108    152    

75

Инструменты администратора БД Системный администратор Программист Платформа 1С v8.3 1C:Бухгалтерия Платные (руб)

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

3600 руб.

06.02.2017    32697    145    18    

51

Архивирование (backup) Инструменты администратора БД Платформа 1С v8.3 Управляемые формы 1C:Бухгалтерия 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Платные (руб)

Данная разработка позволит решить вопрос с резервным копированием Ваших баз в автоматическом режиме, расположенных на сервере 1С. Система умеет ставить блокировки на вход, блокировать фоновые задания, принудительно отключать сеансы пользователей. И все это система делает в автоматически при создании бэкапа (или через команду). Выгрузка происходит в родной формат 1С - .dt. Так же система умеет архивировать данные выгрузки с установкой пароля. Умеет менять расширение файла zip или dt на любое указанное вами, что позволит сохранить выгрузки от шифровальщика. Может удалять старые копии выгрузок, оставляя указанное количество резервных копий, начиная с самой поздней. Только для WINDOWS!

6000 руб.

06.11.2012    73805    629    45    

88

Инструменты администратора БД Пользователь Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Платные (руб)

Многие сталкиваются с проблемой когда изображения, находящиеся в базе разные по объему и размерам. Менеджеры могут добавить файлы в очень высоком разрешении, объемом свыше 20 Мегабайт. База данных становится слишком большой, выгрузка на сайт идёт медленно и требуется много место на хостинге. Как сжать картинки и уменьшить размер базы 1С? Это можно сделать с помощью данной обработки. Существует возможность выбрать различные варианты для того чтобы уменьшить картинки: в разы, в процентах от первоначального объема, а также сделать картинки одинаковой ширины. В результате размер базы 1С значительно сократится (в зависимости от количества и размера картинок), а изображения станут небольшого объема, равными по ширине, почти без потери качества. Работает на управляемых формах для УТ 11, КА, ERP.

3000 руб.

21.07.2022    10200    10    4    

18
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Evil Beaver 8263 02.08.17 12:43 Сейчас в теме
Правильно ли я понимаю, что это тот же МенеджерЗаданий, только другой?

https://github.com/wizi4d/TaskManagerFor1C
3. m-rv 977 02.08.17 13:25 Сейчас в теме
(1) Да, есть что-то общее
2. user700035_6550355 34 02.08.17 12:46 Сейчас в теме
4. Bassgood 1457 02.08.17 13:33 Сейчас в теме
(0) А почему бы не вынести исполняемый фоновыми заданиями код в справочник, дабы не обновлять каждый раз конфигурацию при появлении новых алгоритмов, требующихся выполнять в фоновом режиме (например, как это реализовано в типовых конфигурациях - возможность запуска обработок из справочника "Дополнительные отчеты и обработки" в фоновом режиме)?
p.s. Допустим мне требуется выполнить какой-то разовый алгоритм и я хочу запустить его на выполнение по расписанию ночью - в этом случае "карячить" конфу ради этого будет совсем не айс, если такая возможность вообще имеется.
5. Evil Beaver 8263 02.08.17 15:31 Сейчас в теме
(4) Берете этот код, либо, приведенный мной по ссылке выше, впиливаете туда эту возможность, делитесь с обществом. Профит.
sergelemon; Сурикат; izidakg; +3 Ответить
6. Bassgood 1457 02.08.17 16:25 Сейчас в теме
(5) К сожалению, нет свободного времени для допиливания, хотелось бы иметь в наличии готовое, понятное и гибкое решение :)
7. Evil Beaver 8263 02.08.17 17:59 Сейчас в теме
(6) Ну вот так всегда. Как решение иметь - так все хотят, а как сделать, так времени нет. Можно подумать, что у товарища топикстартера времени вагон на предусматривание всех возникающих хотелок заранее.

Человек сделал для себя, выложил - пользуйтесь. А вы ему "а почему не вынести?" Да можно вынести, в чем вопрос, вот только полагаю, ему это не надо было.
8. Bassgood 1457 02.08.17 18:32 Сейчас в теме
(7) Я просто подбросил идею для развития разработки, без каких-либо претензий к автору, возможно у него есть в планах дальнейшая ее модернизация. А по поводу готового решения я это к тому, что если сделать его более гибким, то желающих скачать его будет намного больше.
9. abadonna83 45 07.09.17 16:20 Сейчас в теме
Нам очень нравится. Скажите а под обычные формы есть?
Очень надо.

Есть идея совместить вашу обработку с асинхронной записью регистров в документе "Расчет себестоимости".
10. m-rv 977 07.09.17 16:56 Сейчас в теме
(9)
под обычные нету, но если захотите допилить - в принципе работы не много
11. abadonna83 45 07.09.17 17:04 Сейчас в теме
Была бы очень признательна. Выложите пожалуйста под обычную форму.
12. m-rv 977 08.09.17 06:49 Сейчас в теме
(11)
я имел ввиду захотите своими силами допилить :)
Оставьте свое сообщение