Top.Mail.Ru
Меню
Каталог Программы 1С Опыт и отзывы Услуги Компания Интересное Контакты

Многопоточное удаление организаций из базы 1С

Основатель и генеральный директор компании MoscowSoft, Сорокин Сергей
Сорокин Сергей, Генеральный директор MoscowSoft  01.06.2026 Актуальность проверена: 01.06.2026   5 мин.
Подобрать перенос данных 1С

Специализируемся на переносах данных 1С с 2015г.

Подобрать перенос данных 1С >>

Интеграция 1С с маркетплейсами

Специализируемся на интеграциях 1С с маркетплейсами с 2021г.

Изучить продукты >>

Содержание

История создания обработки удаления организаций из баз 1С

У нас есть обработка для удаления организаций из базы 1С без контроля ссылочной целостности. Разработали эту обработку в далеком 2015 году по просьбе заказчика сделать удаление как можно более быстрым, т.к. с контролем ссылочной целостности удаление могло идти неделями и не доходило до конца. Обработка сделана универсально, то есть будет работать на любой конфигурации 1С, в которой есть справочник Организации.

Эта обработка очень популярна у наших заказчиков, размещена она и на нашем сайте, и на Инфостарте. На Инфостарте у нашей обработки более 290 звезд и более 250 продаж. В продаже она находится с 2015 года.

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

Опишем алгоритм подробнее.

Ограничение фоновых заданий для файловых баз 1С

Имейте в виду, в файловых базах 1С фоновые задания работают по очереди - одно за другим. То есть нет никакого смысла запускать удаление в несколько потоков. Для файловых баз 1С удаление будет выполнено более корректно при его запуске в один поток.

Интерфейс обработки и протокола о выполнении удаления

Интерфейс обработки выглядит следующим образом:

Интерфейс обработки Удаление организаций выглядит как показано на снимке экрана

Протокол об удалении данных выглядит следующим образом:

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

Замер времени при удалении в несколько потоков

Взяли демонстрационную базу 1С:ERP релиза 2.5.26.113. Развернули ее в клиент-серверном режиме работы. Платформа 1С 8.5.1.1150. СУБД PortgreSQL 18. Сервер 1С разрядности х64.

Запустили удаление в два потока с целью оставить в базе только одну организацию "ИП Предприниматель". То есть все остальные организации должны быть удалены.

Замер времени при удалении в несколько потоков. Снимок экрана
Количество потоков Время удаления организаций, сек
1 5098
2 2918
4 1811

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

Рекомендации по выбору числа потоков

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

Номер этапа Операция Распределение расчетов по процессорам
1 Заполняем таблицу видов документов, имеющих реквизит организация и созданных в базе 1С по тем организациям, которые собираемся удалить Считаем всего количество документов к удалению. Делим поровну между потоками. Назначаем каждому виду документа номер потока, который будет удалять документы данного вида. Удаление на данном этапе пока не производится.
2 Заполняем таблицу объектов базы 1С, ссылающихся на удаляемые организации. Таблица заполняется за исключением документов, справочников, записей регистров сведений, регистров накопления, регистров бухгалтерии, планов видов расчета Считаем итоговое количество объектов в таблице. Делим поровну между потоками. Каждому объекту таблицу назначается поток, которые будет удалять объект.
3 Заполняем таблицу видов независимых регистров сведений, имеющих измерение "Организация" и имеющих записи по организациям, которые должны удаляться. По каждому виду регистра сведений считаем число записей к удалению. Рассчитываем всего количество записей регистров сведений к удалению. Считаем среднее количество записей на каждый поток. Каждому регистру сведений присваиваем номер потока, который будет очищать записи данного регистра сведений..
4 Заполняем таблицу видов справочников, имеющих реквизит "Организация" и заполненных теми организациями, которые должны быть удалены. Рассчитываем по каждому виду справочника количество элементов к удалению. Рассчитываем итоговое количество элементов справочников к удалению. Рассчитываем среднее количество элементов справочника на один поток. Далее назначаем каждому виду справочника номер потока, который будет удалять элементы этого справочника.
5 Удаление документов, имеющих реквизит "Организация" По таблице, заполненной на этапе 1, каждый поток запускает удаление документов только по своим видам документов (так срабатывает распределение документов по потокам).
6 Удаление записей независимых регистров сведений, имеющих измерение "Организация" По таблице, заполненной на этапе 3, каждый поток запускает очистку своих видов регистров сведений. Наборы записей к удалению выбираются с отбором по каждой из организаций по очереди.
7 Удаление элементов справочников, имеющих реквизит "Организация" По таблице, заполненной на этапе 4, запускается удаление. Каждый поток выполняет удаление элементов справочников только по своим видам справочников.
8 Удаление найденных по ссылкам на этапе 2 объектов Каждая строка ссылающихся на удаляемые организации объектов, запускается на удаление в своем потоке
9 Заполняем таблицу ссылок на удаляемые организации уже без исключений Финальный этап поиска ссылок на удаляемые организации. На этом этапе будут найдены записи регистров сведений, не имеющих измерения "Организация", но содержащих ссылку на удаляемые организации и многие другие объекты будут найдены, как-то косвенно имеющие ссылки на удаляемые организации. Т.к. основное удаление уже выполнено, таких ссылок не должно быть найдено много. Алгоритм заполняем ссылок такой: делим объекты в найденной таблице между потоками поровну. Каждый поток по своим объектам запускает удаление.
10 Удаление объектов / записей регистров по таблице, заполненной на этапе 9 Строки таблицы к удалению делятся равномерно по потокам
11 Непосредственно удаление организаций Одновременно с организациями будут автоматически удалены подчиненные элементы справочников. Тут не делим по потокам, однако проверяем, не удалена ли еще организация (не является ли ссылка на нее битой). Если удалена, пропускаем ее. По сути этот этап будет выполнять

Получить обработку выборочного удаления организаций из базы 1С

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

Заказать обработку удаления организаций >>

MoscowSoft логотип

Подпишитесь на телеграм-канал MoscowSoft!
QR-код (ссылка приглашение) в канал MoscowSoft

https://t.me/MoscowSoft

Публикуем:
- инструкции и советы по разработке на 1С;
- рекомендации по интеграции 1С;
- бесплатно делимся своими обработками;
- публикуем секретные спецпредложения только для подписчиков.

Возврат к списку