Обработка была создана по необходимости. База УТ-11 работала c 2015 года. В какой-то момент времени был изменен регистр ВыручкаИСебестоимостьПродаж. А именно, добавлены 4 поля типа Число в реквизиты. Никто уже не помнит как так случилось, но факт свершившийся. С ростом базы все больше стали потери заметны производительности при формировании отчета "Валовая прибыль", который построен на этом регистре. Для получения значений из тех реквизитов пришлось использовать не таблицу оборотов, а таблицу движений. В конце концов, терпение как пользователей, так и программистов, с пониманием относившихся к жалобам пользователей, истекло. Было принято решение произвести реструктуризацию регистра с сохранением данных.
Этапы:
1) к реквизитам добавили префикс "удал".
2) были созданы ресурсы с теми же именами и типами, как и "устаревшие" реквизиты.
3) Написана обработка по переносу значений из реквизитов в ресурсы.
4) При запуске обработки в режиме предприятия выбирается нужный регистр.
5) Выключается использование итогов по регистру.
6) Выбираются пары для переноса значений откуда и куда.
При этом в форме обработки автоматически заполняются имена полей 1С и SQL.
7) Запускается выполнение либо средствами 1С, или SQL.
Обработка 1С выполняется за выбранный период, ввиду длительности операции. Я при тестировании выбирал интервалы по полгода. При обработке SQL нет смысла для выбора периодов, потому что было обработано: (17'077'890 rows affected) за 7 минут 16 секунд.
Вот для сравнения краткий лог обработки средствами 1С:
ВыполнитьОбработку - Начало 16.03.2021 15:18:08
Период с 01.01.2018 по 30.06.2018
ВыполнитьОбработку - Конец 16.03.2021 16:04:16
Обработано =169 867. Ошибок= 0 Записей = 1 200 873
*******************
ВыполнитьОбработку - Начало 16.03.2021 16:57:17
Период с 01.07.2018 по 31.12.2018
ВыполнитьОбработку - Конец 16.03.2021 18:13:30
Обработано =227 754. Ошибок= 0 Записей = 1 591 851
В зависимости от выбранного способа обработки:
1С: формируется текста запроса 1С для отбора регистраторов и осуществляется запись набора по каждому регистратору.
SQL: формируется текст запроса SQL, устанавливается соединение с базой и выполняется запрос.
Если по какой-либо причине это невозможно (например, злобные админы не дают данные для доступа к серверу SQL), можно воспользоваться кнопкой "Текст запроса SQL" и полученный текст отдать админам, пусть сами запускают в Managetment Studio.
Например, для моей базы запрос выглядел так:
UPDATE _AccumRg18783
SET _Fld29793 = _Fld18814
,_Fld29795 = _Fld18817
,_Fld29792 = _Fld18813
,_Fld29794 = _Fld18816
WHERE 1 = 1
AND (
((_Fld18814 != 0.0)
AND (_Fld29793 != _Fld18814)
OR ((_Fld18817 != 0.0))
AND (_Fld29795 != _Fld18817))
OR ((_Fld18813 != 0.0)
AND (_Fld29792 != _Fld18813))
OR ((_Fld18816 != 0.0)
AND (_Fld29794 != _Fld18816))
)
8) Включить использование итогов.
9) Пересчитать итоги.
Все, регистр готов к использованию.
Платформа 8.3.14.