gifts2017

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

Опубликовал Илья Паршин (parshin) в раздел Администрирование - Сервисные утилиты

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

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

 

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

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

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

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

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

  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.

Скачать файлы

Наименование Файл Версия Размер
Перенос присоединенных файлов в том 65
.epf 7,00Kb
19.08.15
65
.epf 1 7,00Kb Скачать

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Сергей Михеев (Rezident495) 19.08.15 13:45
2. Тарас Будько (BudkoT) 23.10.15 03:47
Бяда...
{Форма.Форма.Форма(59)}: Метод объекта не обнаружен (ДобавитьФайлВТом)
СведенияОФайле = ФайловыеФункцииСлужебный.ДобавитьФайлВТом(ХранилищеФайла.Получить(), ОбрабатываемыйФайл.ДатаМодификацииУниверсальная,
3. Илья Паршин (parshin) 23.10.15 09:44
(2) BudkoT,

Какая версия конфигурации?
4. Артём Рогов (ben_art) 21.12.15 15:34
а после переноса ссылки в объектах останутся ?
5. Илья Паршин (parshin) 22.12.15 06:45
(4) ben_art,
Ссылки не меняются. Ссылки в объектах на справочник "ПрисоединенныйФайлы", В тома переносится хранилище значения.
6. Артём Рогов (ben_art) 22.12.15 11:40
ещё вопрос. где то в базе засели битые или потертые файлы и при переносе выскакивает окошко "невозможно обработать файл "-_trashes"
как этого избежать, может как-то пропускать этот файл или ещё чего нибудь ?
7. Илья Паршин (parshin) 23.12.15 09:59
(6) ben_art,
Приведите весь текст ошибки, пожалуйста.
8. Артём Рогов (ben_art) 23.12.15 11:51
вот скрин ошибки
Прикрепленные файлы:
9. Илья Паршин (parshin) 25.12.15 12:05
(8) ben_art,
Корректно ли настроены права пользователя, от которого запущен сервер 1с или запущена файловая БД , на каталог где расположен том для хранения данных? На каких операционных системах развернут сервер 1с и файловый сервер?
10. Артём Рогов (ben_art) 25.12.15 15:11
(9) parshin, ДА всё правильно, вернее уже правильно.
файлы побились давно , теперь их не удалить не перенести.
Вот и вопрос как в Вашей обработке можно игнорировать исключения записи ?
11. Илья Паршин (parshin) 28.12.15 12:17
(10) ben_art,
В вызываемой функции ДобавитьФайлВТом есть обработка исключения в случае неудачи переноса файла в том. Должны перенестись все небитые файлы. Не могу понять что значит "Битые файлы". Как они появились? Можете написать строку кода где происходит ошибка?
12. Александр Забалуев (zabaluev) 28.12.15 14:25
Исправил ошибку в данной функции и заработало в 1С Бухгалтерии 3.0.43
Я перенес часть кода в цикле создания запроса.


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

Запрос = Новый Запрос();
ТекстЗапроса = "ВЫБРАТЬ
| ВложенныйЗапрос.Ссылка
|ИЗ
| (";
Инд = 0;
КолСправочников = Метаданные.Справочники.Количество();
Для Каждого Спр Из Метаданные.Справочники Цикл
Инд = Инд + 1;


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

Если Инд > 1 Тогда
ТекстЗапроса = ТекстЗапроса + "
|
|ОБЪЕДИНИТЬ ВСЕ
|";
КонецЕсли;

ТекстЗапроса = ТекстЗапроса + "ВЫБРАТЬ
| " + Спр.Имя + ".Ссылка КАК Ссылка
|ИЗ
| Справочник." + Спр.Имя + " КАК " + Спр.Имя;
КонецЕсли;
КонецЦикла;
apd1c; ben_art; +2 Ответить 1
13. Артём Рогов (ben_art) 28.12.15 16:55
(12) zabaluev, я уже исправил.
правда пришлось перенести процедуру из общего модуля в обработку
14. rasdag ххх (rasdag) 07.03.16 01:17
Если в наименовании номенклатуры содержатся символы: "/" или "\" - то выдается ошибка
15. Xer shi (Xershi) 07.03.16 10:34
(14) rasdag, в файле таких символов не должно быть, вот и ошибка.
16. rasdag ххх (rasdag) 07.03.16 13:41
Это понятно что не должно быть, но по факту как видите бывает. Так же на такой символ ругается - "*". Неплохо бы дописать в код замену таких символов. А так на УТ 11.2 тоже полет нормальный.