Часто при разработке необходимо выделить и удалить какую-то часть помеченных на удаление данных. Особенно эта необходимость сказывается на больших информационных базах с десятками или сотнями тысяч помеченных на удаление объектов. Обрабатывать сразу все данные очень продолжительно по времени, поэтому без подручного средства, в котором можно доходчиво посмотреть, выбрать и удалить какую-то часть данных никак.
Данная обработка является итогом моих наработок за некоторый период времени. Функционал расширял по мере необходимости. Обработка работает в режиме обычного приложения и управляемого приложения. В обработке реализовано:
- отображение дерева метаданных с возможностью отметки тех объектов базы, которые необходимо удалить;
- отображение количества помеченных на удаление объектов, отмеченных пользователем и возможных к удалению;
- возможность включение\выключения монопольного режима работы;
- возможно удаления связанных записей независимых регистров сведений;
- возможность групповой замены найденных ссылок;
- отображение ссылок на удаляемый объект в виде дерева. Отражение в этом дереве структуры циклических (рекурсия) ссылок, подсвечивание ключевых ссылок (которые не дают удалить объект) ;
- удаление в транзакции пакета циклических ссылок - "или все, или ничего", дабы не получилось в базе "Объект не найден...";
- возможность произвольных запросов-отборов на каждый объект метаданных. При этом запросы-отборы можно копировать. Это полезно, например, когда необходимо удалить документы за определенный период по организации; или справочники по какому-либо критерию отбора;
- сохранение и восстановление ранее применяемых отборов;
- индикатор прогресса при поиске помеченных на удаление объектов и контроле ссылочности с возможностью прерывания операции.
Для обеспечения указанного функционала обработка активно использует оперативную память. И, хотя были приняты меры по оптимальному использованию оперативной памяти, все-же в некоторых случаях (большие базы, большое количество удаляемых объектов) может возникнуть ситуация с нехваткой памяти. В таких случаях необходимо ограничивать перечень удаляемых объектов или перейти на использования 64-битного клиента 1С.
Последняя версия 1.17. Изменения:
- Исправлена ошибка вида "Ошибка арифметического переполнения при преобразовании numeric к типу данных numeric", возникающая на базах с большим количеством объектов.
Версия 1.16. Изменения:
- Реализована работа в тонком клиенте управляемого приложения;
- Добавлены кнопки по свертке полей формы, множественной установке\снятии отметок дерева метаданных, кнопка очистки табло;
- Исправлена возможная ошибка при замене ссылок в регистрах сведений, имеющих реквизиты с неограниченной строкой;
- Оптимизировано быстродействие некоторых участков кода.
Версия 1.15. Изменения:
- Добавлена опция: Замена с отключением контроля записи (ОбменДанными.Загрузка = Истина);
- Мелкие оптимизации форм.
Версия 1.14. Изменения:
- Уменьшены задержки клиент-серверных переходов на больших объемах данных;
- Доработана логика под конфигурации с планами счетов без назначенных видов субконто.
Версия 1.13. Изменения:
- Исправлена плавающая ошибка процедуры формы при попытке удаления;
- В обычной форме добавлена возможность пометить на удаление связанные ссылки. Для пометки на удаление необходимо выделить одну или несколько строк связанных ссылок и из контекстного меню выбрать "Пометить на удаление". В блоке связанных ссылок отображено дерево. При выделении строки дерева и вызове пометки на удаление - помечаются на удаление элементы всех дочерних строк.
- В обычной форме добавлена функция "Показать в списке" дерева связанных ссылок.
Версия обработки 1.12. Изменения:
- Исправлена не критическая ошибка в обычной форме возникающая при обновлении отображения связанных ссылок.
Версия обработки 1.11. Изменения:
- Исправлена ошибка раскраски связанных ключей записей регистров сведений.
Версия обработки 1.10. Изменения:
- Возращен механизм действия опции "Удалять записи регистров сведений". Данный функционал теперь действует на записи регистров сведений, в которых удаляемый объект не является ведущим. Записи с ведущим удяляемым объектом удаляются автоматически;
- Отключена запись\удаление с флагом ОбменДанными.Загрузка;
- В дереве ссылок добавлено отображение признака "Проведен" и "Пометка удаления" для связанных объектов. В обычной форме - в виде картинки строк, в управляемой - в виде флажков.
Версия обработки 1.09. Изменения:
- Исправлена опечатка в алгоритме при контроле ссылочности справочников-владельцев;
- Изменен участок кода для управляемой формы, который не разрешал ее запустить на одной из типовых конфигураций;
- Добавлен контроль по стандартным табличным частям объектов конфигураци.
Версия обработки 1.08. Изменения:
- Реализова работа обработки в толстом клиенте управляемого приложения.
Версия обработки 1.07. Изменения:
- Реализован механизм контроля\замены ссылок по небалансовым измерениям регистров бухгалтерии.
Версия обработки 1.06. Изменения:
- Отключена очистка дерева метаданных после выполнения поиска - теперь дерево метаданных отображается всегда;
- Добавлен механизм замены ссылок.
- Добавлено отображение общего количества оъектов в базе;
- Механизм удаления переведен на режим ОбменДанными.Загрузка = Истина;
- Опция "Удалять записи регистов сведений" теперь работает для ведущих и не ведущих измерений.
Изменена справка обработки:
Обработка состоит из двух частей: Дерево удаляемых объектов (3) и Дерево ссылок (4) на удаляемый объект.
В дереве удаляемых объектов производятся основные настройки по поиску удаленных ссылок. В дереве ссылок анализируются связанные с удаляемым
объектом другие объекты информационной базы. Управление обработкой выполняется с помощью Меню основных действий (1), отметок в дереве
удаляемых объектов и Меню дополнительных функций (2)
1. Меню основных действий
- Очистить - инициализирует дерево объектов метаданных, очищает ранее полученные результаты;
- Найти - производит поиск помеченных на удаление объектов информационной базы по отмеченным объектам. Поиск производится по справочникам,
документам, планам счетов, планам видов характеристик, планам видов расчета, планам обмена, задачам, бизнес-процессам;
- Замена - производит замену удаляемой ссылки на указанную в колонке "Замена". При замене ссылок в измерениях регистров сведений может возникнуть ситуация,
когда итоговый набор будет содержать дублирующие по измерениям строки, в таких ситуациях дубли строк удаляются. При этом приоритет отдается строке с меньшим номером по порядку.
- Контроль - производит контроль ссылочности найденных помеченных на удаление объектов базы. Контроль производится по реквизитам, измерениям,
ресурсам объектов метаданных, реквизитам табличных частей объектов метаданных, видам расчета регистров расчета, счетам и аналитике регистров бухгалтерии,
ведущим задачам бизнес-процессов, измерениям последовательностей документов.
- Удалить - производит удаление помеченных объектов, которые возможно удалить.
2. Меню дополнительных функций
- Отборы - подменю с операциями для отборов дерева объектов (далее).
- Удалять записи регистров сведений - включение\выключение режима удаления связанных записей независимых регистров сведений.
В случае, если ссылка на объект содержится в ресурсе или реквизите регистра - такие записи регистров не будут удалены.
- Выводить список удаляемых - при включенной опции при удалении в системных сообщениях будет выводиться перечень удаленных объектов;
- Монопольный режим - включение\выключение монопольного режима работы базы;
- Найти и удалить - по выделенным объектам метаданных производится три действия подряд: найти - контроль - удалить.
3. Дерево объектов
В первоначальном состоянии представляет собой полный перечень объектов метаданных. Необходимо установить отметки для тех объектов,
среди которых будет производиться поиск помеченных на удаление.
По выполнению поиска в колонке дерева "Всего" отразиться количество найденных помеченных на удаление объектов, в колонке "Всего ссылок" отобразиться
общее количество ссылок данного типа объектов.
По выполнению контроля в колонке дерева "Возможно удалить" отразиться количество объектов, которые можно удалить.
Строки дерева раскрашиваются зеленым или красным цветом в зависимости от возможности удаления найденных объектов. Голубым выделяются строки, в которых указана
ссылка замены для удаляемого объекта.
По контекстному меню дерево возможно отсортировать в желаемом порядке.
Функции групповой установки\снятия отметок действуют по выделенным строкам дерева.
Флажок "Отметка" используется как при поиске помеченных на удаление объектов, так и при контроле ссылочности, замене ссылок.
В колонке "Отбор" для групп объектов можно указать произвольный запрос для дополнительной фильтрации найденных к удалению объектов. Двойной щелчок в колонке "Отбор"
открывает форму произвольного запроса
Произвольный запрос позволяет применить дополнительный фильтр при выборе помеченных к удалению объектов.
В итоговой выборке из запроса должно присутствовать поле с именем "Ссылка", это поле и будет фильтрующим.
В форме конструктора запроса (7) :
- Очистить - очищает текущий запрос;
- По умолчанию - формирует новый запрос на основании типа данных текущего объекта;
- Получить параметры - обновление списка параметров из запроса
Фильтрующие запросы возможно устанавливать только на уровне 2-й группировки дерева удаляемых объектов, т.е. на уровне раздела метаданных.
4. Дерево связанных ссылок
При активизации строки в дереве объектов в дереве ссылок отображается иерархическая структура найденных ссылок на удаляемый объект.
При обнаружении циклической ссылочности объектов в структуре дерева текущий объект, который задействован в циклической ссылке,
будет отображен повторно и завершающим в дереве циклических ссылок.
В строках этого дерева подсвечивается цветом красным ссылки, которые не могут быть удалены или не удаляются согласно текущих настроек;
зеленым цветом - ссылки, которые удаляются и могут быть удалены. Жирным шрифтом выделяются ключевые ссылки,
которые не разрешают в конечном итоге удалить текущий объект.
По двойному клику в строках этого дерева возможно просмотреть связанную ссылку.
5. Контекстное меню дерева объектов
Контекстное меню дерева объектов работает по выделенным строкам дерева.
- Установить\снять отметки - устанавливает\снимает отметки по выделенным строкам дерева, включая подчиненные строки;
- Сортировка по возрастанию\убыванию - управление сортировкой строк дерева;
- Очистить отбор - (сочетание клавиш Ctrl-X) в выделенных строках дерева удаляются запросы-фильтры данных;
- Скопировать отбор - (сочетание клавиш Ctrl-C) копирует запрос-отбор из текущий строки дерева объектов в буфер обмена;
- Вставить отбор - (сочетание клавиш Ctrl-V) вставляет запрос-отбор из буфера обмена в выделенные строки дерева объектов. При вставке производится трансформация запроса -
подмена таблиц выборки данных. В случае, когда скопированный запрос-отбор не может быть трансформирован под текущий объект базы, в колонке Отбор
ячейка с данным запросом будет подсвечена светло-красным цветом;
- Очистить замену - (сочетание клавиш Shift-X) в выделенных строках дерева удаляются ссылки-замены;
- Скопировать замену - (сочетание клавиш Shift-C) копирует ссылку-замену из текущий строки дерева объектов в буфер обмена;
- Вставить замену - (сочетание клавиш Shift-V) вставляет ссылку-замену из буфера обмена в выделенные строки дерева объектов.
6. Команды управления отборами
- Сохранить отборы - сохраняет существующие запросы-отборы для дерева удаляемых объектов;
- Восстановить отборы - восстанавливает ранее сохраненные запросы-отборы;
- Очистить отборы - очищает дерево объектов от отборов