0. wowik 475 04.06.16 15:58 Сейчас в теме

Хранение файлов в томах на диске (для УПП 1.3)

Доработка типовой УПП 1.3 в плане хранения присоединенных файлов вне базы данных

Перейти к публикации

Вознаграждение за ответ
Показать полностью
Комментарии
Избранное Подписка Сортировка: Древо
1. cool.vlad4 43 05.06.16 15:33 Сейчас в теме
а в вашей версии УПП есть модули ПрисоединенныеФайлы, ПрисоединенныеФайлыКлиент?(скорее всего есть) Имхо через него все проще можно было сделать. там уже готовые функции все есть.(т.е. через БСП это сделать)
2. wowik 475 05.06.16 22:05 Сейчас в теме
(1) cool.vlad4, сделайте, опубликуйте свой вариант, чё пальцы гнуть)
Trancer64; +1 1 Ответить
3. cool.vlad4 43 05.06.16 22:10 Сейчас в теме
(2) а я где-то пальцы гнул?
Irwin; pss1985; kadild; AlexKoso; CSiER; Рамзес; waol; sulfur17; +8 1 Ответить
4. Ivon 631 08.06.16 12:26 Сейчас в теме
Механизм интересен, но хранение в файловых шарах имеет свои минусы, порой очень существенные. Я бы делал хранение в отдельной БД - и бекапить проще и безопасность данных выше.
5. thelans 28 08.06.16 14:05 Сейчас в теме
На сколько я знаю в MS SQL есть возможность хранить файлы, сохранённые в поле BLOB, на диске. В 1С дорабатывать при этом ничего не надо, а выставить соответствующие настройки СУБД.
6. Xershi 402 08.06.16 19:49 Сейчас в теме
(5) thelans, что то новенькое. Где про это почитать подробнее?
13. CSiER 20 14.06.16 07:21 Сейчас в теме
(6) Xershi, рискну предположить, что речь идет про filestream - но структурой бд "рулит" 1С (как в этом случае быть при реструктуризациях, триггерах и прочих мелочах с данными - тоже интересно).
14. cool.vlad4 43 15.06.16 01:06 Сейчас в теме
(6) Xershi, c 2008 sql server filestream как верно выше заметили и с 2012 filetables появились, котороые позволяют делать таблицы, связывать их с папкой, где можно будет работь уже с файлами привычными операциями. технология крутая, но как ее связать с 1С (какой профит от этого получить) , я не знаю. в принципе хранения в томах из БСП имхо достаточно для 1С, может ошибаюсь, поправьте.
7. webester 28 09.06.16 06:00 Сейчас в теме
(5)(6)Угу очень интересно, как это работает.
9. SuhoffGV 09.06.16 17:06 Сейчас в теме
(5) thelans, Только выгрузка в DT и бэкап средствами СУБД быстрее от этого не станут. А если хранить файлы в ФС то выгрузка в dt будет намного быстрее.
romankoav; +1 Ответить
8. kosmo0 79 09.06.16 08:58 Сейчас в теме
В подобных случаях у меня зачастую возникает вопрос - неужели люди не создают тестовые базы для всяких безобразий? (причем чтобы и пользователи могли изменения и/или новинки потестить).

К чему весь разговор. Тестовые базы зачастую это загруженная сохраненка рабочей БД. И в этом случае тестовая база может легко и непринужденно что-нибудь сотворить с сохраненными файлами рабочей БД. Так что не помешало бы сделать маленький механизм контроля какой БД с файлами можно работать, а какой - нет (либо только смотреть, но не менять).
KAV2; Krio2; ph33l; NazarovV; +4 Ответить
10. SuhoffGV 09.06.16 17:11 Сейчас в теме
(8) kosmo0, Создают. У меня в базе есть константа "СтрокаСоединенияСРабочейБазой". И процедура общего модуля "ЭтоРабочаяБаза()" которая проверяет совпадает ли строка соединения текущей базы с значением константы. Если совпадает, то база считается рабочей и критичный функционал работает нормально.

Но к сожалению хранение файлов во внешних каталогах пока не написали, но уже назрело. Бэкап средствами СУБД идет 80 минут. Только из-за файлов в базе.
11. Xershi 402 09.06.16 17:14 Сейчас в теме
(10) SuhoffGV, а каков их объем? У нас 40 гигов на ссд за 130 сек бекапит.
15. SuhoffGV 21.06.16 17:13 Сейчас в теме
(11) Xershi, 40Гб только дамп сжатый а gzip занимает. База в postgresql на 300Gb SAS дисках. Размер самой базы по данным pg_admin - 65Gb. Из них чуть более 32,2Гб в виде файлов в базе.
12. vshish 110 10.06.16 03:12 Сейчас в теме
Все хорошо и вроде бы правильно, но. Как писал в [1] да есть Присоединенные файлы, и есть еще некоторые подводные камни.
Я о них знаю потому, что сам делал такую доработку. Вот она http://infostart.ru/public/411416/
и вообще этот метод работает и на КА 1.1 и на УТ 10.3 и на УПП 1.3 правда с релиза как появился механизм электронного обмена документами.
16. qapex 49 23.06.16 09:45 Сейчас в теме
добрый день, сервер 1с на linux, с правами на linux настроили, файлы записывает на шару, а при открытии выдает ошибку. По коду получилось, что ПолучитьФайлы() возвращает пустой массив и дальше код не отрабатывает. Получается, что ПолучитьФайлы() работает от клиента (и пути, и права), а запись файлов через сервер (и пути, и права под которыми сервер 1с запущен). А путь предполагается использовать один и тот же?
17. wowik 475 23.06.16 21:29 Сейчас в теме
(16) qapex, ПолучитьФайлы() - что за процедура?
22. alen-s 12.12.16 08:49 Сейчас в теме
(16)
У Вас получилось решить эту проблему?
18. qapex 49 24.06.16 06:58 Сейчас в теме
19. wowik 475 24.06.16 20:34 Сейчас в теме
(18) qapex, ну вообще должно работать, если папка открыта для сети и обращаетесь через "\\". Не знаю в чем дело.
20. Himikuda 22.07.16 07:56 Сейчас в теме
Всё работает класс) Огромное спасибо! хоть база пухнуть не будет. Только есть нюанс, имена файлов не корректно отображаются (набор символов) зато читаются., может кто то подскажет как это возможно поправить?
21. vovan_matveev 3 15.09.16 01:53 Сейчас в теме
Спасибо, wowik!
Статья очень помогла.

Я ограничился только тем что храню только присоединенные файлы (которые добавляются и отображаются через формы справочника Хранилище дополнительной информации)
таким образом я ограничился только первой частью статьи (доработка справочника Хранилище дополнительной информации и общий модуль), последней чстью (сохранение и открытие внешних файлов).

А вместо объемной средней части (где подмена функций во всех ссылках на "Хранилище.Получить()" я ограничился изменением одной функции модуля формы в справочнике Хранилище дополнительной информации.

В моем случае в базе уже были картинки хранящиеся внутри базы. поэтому мне было важно отображать и старый файлы и новые файлы из тома.

// Процедура показывает картинку текущей строки таблицы Изображения
//
// Параметры: 
//  Элемент - элемент формы, Изображения
//
// Возвращаемое значение:
//  Нет.
//
Процедура ПоказатьКартинкуТекущейСтроки(Элемент)

	Если Элемент.ТекущиеДанные = Неопределено Тогда
		ЭлементыФормы.ПолеИзображения.Картинка = Новый Картинка();
		Возврат;
	КонецЕсли;

	//Проверка на новую строку, если новая то не обновляем изображение.
	Если НЕ Элемент.ТекущаяСтрока.Пустая() Тогда
		//Изменения на основе wowik
		ТекущаяКартинка = Элемент.ТекущиеДанные.Ссылка.Хранилище.Получить();
		Если  ТекущаяКартинка = Неопределено Тогда
			ТекущаяКартинка = ОбщийМодульРМ.ПолучитьДвоичныеДанныеФайлаВХранилище(Элемент.ТекущиеДанные.Ссылка);
		КонецЕсли;
		//--Изменения на основе wowik
		ЭлементыФормы.ПолеИзображения.Картинка = ?(ТекущаяКартинка <> Неопределено, ТекущаяКартинка, Новый Картинка());
	КонецЕсли;
	
	ОбновитьКнопкиОсновногоИзображения(ЭлементыФормы.Изображения.ТекущаяСтрока);

КонецПроцедуры
Показать
23. alen-s 29.12.16 12:59 Сейчас в теме
24. n0ther 09.02.17 13:45 Сейчас в теме
Почему в справочник не добавлен реквизит Том с типом ТомаХраненияФайлов? Так же быстрее и проще, чем перебирать все тома.
25. wowik 475 03.04.17 11:40 Сейчас в теме
(24)
ее и проще, чем перебирать все тома.

это уже бантики)
26. albertik88 2 04.05.17 07:00 Сейчас в теме
Добрый день, у меня упп версии 1.3.5.1 - она полностью доработана и абсолютно не обновляется...у меня вообще отсутствует вкладка электронные документы в настройках программы...а сейчас возникла необходимость хранение файлов вне базы...если есть возможность скинь мне базу cf, или выложи в облако...буду очень признателен и благодарен! zakievar@mail.ru
27. pss1985 3 03.05.18 05:20 Сейчас в теме
я у себя такое как-то реализовывал, но еще добавил права на открытие файла. Создал таб часть "Пользователи" с реквизитами Пользователь и право записи, право чтения. Если в ней есть пользователь, то дается право на осуществление действий с этим файлом. Бывают случаи, когда надо некоторым пользователям запретить открытие и изменение файла.
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Санкт-Петербург
зарплата от 100 000 руб.
Полный день

Руководитель группы сервисов ЭДО, ЭЦП и криптографии
Москва
зарплата от 150 000 руб.
Полный день

Руководитель группы интеграций (1С)
Москва
зарплата от 150 000 руб.
Полный день

Руководитель группы сервисов FRM на 1С
Москва
зарплата от 150 000 руб.
Полный день

Консультант-аналитик 1С (ЗУП)
Санкт-Петербург
Полный день