Пример работы с внешними источниками данных.
Работа с файлами.
Подписка на событие.
Работа с XML файлами.
Сериализатор XDTO.
Решил опубликовать эту статью думаю, она будет многим полезна, заодно хороший пример работы с механизмами платформы.
Рассмотрим на примере УТ 11 задачу хранения и восстановления удаленных документов, дабы они не загрязняли нашу базу будем хранить их в файлах, а в следующей статье — в отдельной конфигурации. Ниже приведена пошаговая инструкция.
Берем УТ 11
УДАЛЕНИЕ ОБЪЕКТА
Необходимо создать новую подписку на событие «ВыгрузкаУдаляемогоОбъекта» указав в источниках объекты которые мы будем сохранять пусть для примера это будут документы и справочники ну и укажем когда будет она будет срабатывать «ПередУдалением»
Для определения обработчика подписки создадим серверный общий модуль «МодульОбработчикаСобытияУдаленияОбъекта»
Укажем наш модуль в подписке в пункте «Обработчик»
Теперь в модуле «МодульОбработчикаСобытияУдаленияОбъекта» пропишем процедуру.
Удаляем документы в УТ 11.
Сначала пометим документ на удаление
Удаляем их непосредственно
Это наши удаленные объекты один файл на объект.
Так выглядит содержание нашего файла.
ВОССТАНОВЛЕНИЕ ОБЪЕКТА
Теперь наша задача восстановить удаленный объект.
Для этого создадим в Общих командах команду «ВосстановитьОбъект» по следующими процедурами. Добавим команду в подсистему «Администрирование»
В Предприятии
В итоге при выборе файла получаем востановленный объект.
Вы скажете, а если объектов тысячи? Конечно хранить их в виде файлов в каталоге, да еще с именем фала в виде ID не целесообразно, но эту задачу решим в следующем примере.
Если считаете, что лучше выложить пишите об этом, тогда выложу на каркасной конфигурации для сдачи на специалист.А УТ 11 выкладывать не будем
PS. Ждем продолжение ставим плюсики ;-). Будут плюсы разберем вопрос создания конфигурации для хранения удаленных объектов.
Да, тему можно развить.
Интересно. С удовольствием бы познакомился с продолжением. Отдельная база данных для удалённых объектов — хороший механизм контроля для руководителя.
Вполне подходящий вариант. Однако, как минимум, есть одно предложение по его доработке:
1. Загружать файлы с удаленными объектами все сразу, а не по одному. Причем перед загрузкой в базу, показывать их в таблице с возможностью отбора объектов, которые требуется загрузить.
Согласен, просто этот функционал возложу на дополнительную конфигурацию, для хранения и систематизации удаленных данных.(3) fomix,
Готово продолжение!
Необычно и интересно. В некоторых ситуациях вполне применимо (особенно, если удаление непосредственное).
а я бы сделал попроще, с использование РИБ… единственное, что при удалении объектов, очищал регистрацию этого события… а дальше, одна обработка по сравнению объектов в базе и все… ну можно еще хранить ссылки на удаленные объекты в базе источнике, для упрощения задачи… это позволило бы быстро находить копии объектов в базе приемнике…
а синхронизация автоматическая в фоновом режиме… красота 🙂
В случае изменения структуры объекта, в том числе изменения имени реквизита, объект не загрузится.
(8) Да по этой причине, нужно внести изменения в алгоритм загрузки, сделаю в следующих релизах