Перенос присоединенных файлов в тома

Обработка для переноса присоединенных файлов в тома.

Объем присоединенных файлов достиг 75% от объема БД. Резервное копирования и разворачивание БД для разработчиков стало занимать много времени. Принято решение перенести все присоединенные файлы в тома.

Обработка написана на основе типовой обработки «Перенос файлов в тома» конфигурации УТ 11.1.10.94.

Типовая обработка переносит файлы по справочнику «Версии файлов» из регистра сведений «Хранимые файлы версий», а предлагаемая по всем справочникам присоединенных файлов из регистра сведений «Присоединенные файлы». В обработке формируется текст запроса по метаданным, содержащим «Присоединенные файлы» в наименовании и типом хранения в информационной базе. По всем присоединенным файлам двоичные данные регистра сведений «Присоединенные файлы» переносятся в том.

 Версия платформы 8.3.5.1486. Сервер 1С x32 Linux Debian.

 Для настройки хранения

  1. Создать общий ресурс на файловом сервере. Например \FILESERVERSHARE

  2. В 1С настроить работу с файлами. Меню Администрирование — Настройки работы с файлами — Включить параметр «Хранить файлы в томах на диске».

    В 

  3. Создать в 1С том для хранения файлов.
    Для сервера 1С под управлением Windows указать путь к общему ресурсу для хранения файлов. Для сервера под управлением Linux можно указать только локальный путь. Для этого нужно создать каталог на сервере 1С, в который будет монтироваться общий ресурс.

    mkdir /mnt/files/.

    И примонтировать к созданному каталогу общий ресурс:

    mount -t cifs -o username=DOMAIN\USER,password=USER_PASSWORD,dir_mode=0777,file_mode=0777 //FILESERVER/SHARE/ /mnt/files/

    Указать для тома локальный путь /mnt/files/. Теперь все файлы будут храниться в томе на общем ресурсе

В обработке формируется текст запроса по метаданным, содержащим «ПрисоединенныеФайлы» в наименовании и типом хранения в информационной базе. По всем присоединенным файлам двоичные данные регистра сведений «Присоединенные файлы» переносятся в том.

Обработка запускалась на конфигурации УТ 11.1.10.94.

После выполнения обработки нужно выполнить shrink на MS SQL или vacuum на Postgresql. На файловой версии БД выполнить тестирование и исправление с включенным сжатием таблиц.

29 Comments

  1. Rezident495

    +1 Очень полезная вещь!

    Reply
  2. BudkoT

    Бяда…

    {Форма.Форма.Форма(59)}: Метод объекта не обнаружен (ДобавитьФайлВТом)

    СведенияОФайле = ФайловыеФункцииСлужебный.ДобавитьФайлВТом(ХранилищеФайла.Получить(), ОбрабатываемыйФайл.ДатаМодификацииУниверсальная,

    Reply
  3. parshin

    (2) BudkoT,

    Какая версия конфигурации?

    Reply
  4. ben_art

    а после переноса ссылки в объектах останутся ?

    Reply
  5. parshin

    (4) ben_art,

    Ссылки не меняются. Ссылки в объектах на справочник «ПрисоединенныйФайлы», В тома переносится хранилище значения.

    Reply
  6. ben_art

    ещё вопрос. где то в базе засели битые или потертые файлы и при переносе выскакивает окошко «невозможно обработать файл «-_trashes»

    как этого избежать, может как-то пропускать этот файл или ещё чего нибудь ?

    Reply
  7. parshin

    (6) ben_art,

    Приведите весь текст ошибки, пожалуйста.

    Reply
  8. ben_art

    вот скрин ошибки

    Reply
  9. parshin

    (8) ben_art,

    Корректно ли настроены права пользователя, от которого запущен сервер 1с или запущена файловая БД , на каталог где расположен том для хранения данных? На каких операционных системах развернут сервер 1с и файловый сервер?

    Reply
  10. ben_art

    (9) ДА всё правильно, вернее уже правильно.

    файлы побились давно , теперь их не удалить не перенести.

    Вот и вопрос как в Вашей обработке можно игнорировать исключения записи ?

    Reply
  11. parshin

    (10) ben_art,

    В вызываемой функции ДобавитьФайлВТом есть обработка исключения в случае неудачи переноса файла в том. Должны перенестись все небитые файлы. Не могу понять что значит «Битые файлы». Как они появились? Можете написать строку кода где происходит ошибка?

    Reply
  12. zabaluev

    Исправил ошибку в данной функции и заработало в 1С Бухгалтерии 3.0.43

    Я перенес часть кода в цикле создания запроса.

    Процедура ПеренестиФайлыНаСервере(Оценка = Истина)

    Запрос = Новый Запрос();

    ТекстЗапроса = «ВЫБРАТЬ

    | ВложенныйЗапрос.Ссылка

    |ИЗ

    | («;

    Инд = 0;

    КолСправочников = Метаданные.Справочники.Количество();

    Для Каждого Спр Из Метаданные.Справочники Цикл

    Инд = Инд + 1;

    Если Найти(Спр.Имя, «ПрисоединенныеФайлы») > 0 Тогда

    Если Инд > 1 Тогда

    ТекстЗапроса = ТекстЗапроса + »

    |

    |ОБЪЕДИНИТЬ ВСЕ

    |»;

    КонецЕсли;

    ТекстЗапроса = ТекстЗапроса + «ВЫБРАТЬ

    | » + Спр.Имя + «.Ссылка КАК Ссылка

    |ИЗ

    | Справочник.» + Спр.Имя + » КАК » + Спр.Имя;

    КонецЕсли;

    КонецЦикла;

    Reply
  13. ben_art

    (12) zabaluev, я уже исправил.

    правда пришлось перенести процедуру из общего модуля в обработку

    Reply
  14. rasdag

    Если в наименовании номенклатуры содержатся символы: «/» или «» — то выдается ошибка

    Reply
  15. Xershi

    (14) rasdag, в файле таких символов не должно быть, вот и ошибка.

    Reply
  16. rasdag

    Это понятно что не должно быть, но по факту как видите бывает. Так же на такой символ ругается — «*». Неплохо бы дописать в код замену таких символов. А так на УТ 11.2 тоже полет нормальный.

    Reply
  17. user689645_gb

    Добрый день! Подскажите ,пожалуйста, как для файловой базы как перенести файлы в тома?

    Reply
  18. user689645_gb

    Добрый день!Купила обработку,сделала перенос файлов на том,все прошло,файлы появились в томе,но размер базы не уменьшился,с чем это может быть связано,пожалуйста,подскажите? Тестирование и исправление со всеми галочками делала несколько раз.База файловая.

    Reply
  19. parshin

    (18)Добрый день! Как вариант попробовать выгрузить базу в DT, потом загрузить обратно.

    Reply
  20. user689645_gb

    (19) Добрый день!Не помогло,есть еще какие-то способы?Заранее благодарю.

    Reply
  21. realEvgenius

    Интересно, для комплексной 2.2. подойдет?

    Reply
  22. parshin

    (21) К сожалению, у меня нет возможности проверить.

    Reply
  23. realEvgenius

    (22) Свою задачу я решил, обработку сам написал… Обсуждение тут https://forum.infostart.ru/forum105/topic167472/

    Если хотите, могу Вашу проверить на конфе КА2.2. у меня есть копия базы напичканная картинками

    Reply
  24. parshin

    (23) А проверьте, было бы неплохо.

    Reply
  25. realEvgenius

    (24) Не смог запустить ни в КА2.2, ни в УТ11. Исправил, как написано в (12). Стала открываться, но при запуске ошибка скуль — нет памяти, видимо запрос здоровенный получился или у меня реально база здоровенная ,много слишком мусора

    Reply
  26. parshin

    (25) А в каком месте ошибка? При формировании запроса или при переносе файла? Может быть где-то присоединен особо крупный файл?

    Reply
  27. realEvgenius

    (26) При выполнении… Доооолго саабражает, вылетает с ошибкой скуль — не хватило памяти… Памяти на тестовом серваке 16 гб, в принципе — не много…

    Reply
  28. goodwill

    Спасибо. УТ 11.3.4.59 прошло без ошибок

    Reply
  29. igordynets

    Спасибо автору!

    Обработка отработала на ура — за счет переноса файлов в тома уменьшили размер базы в 4 раза.

    Конфигурация: ERP для Беларуси

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *