Имя: Пароль:
1C
 
Идеи по решению хранения файла в 1с
,
0 NIGHTHUNTER
 
04.11.20
10:56
Недавно заводил тему. Есть кое какие примеры в интернете.
Но запомнилось одно, что жаловались на то когда 70% базы увеличивается именно из за того что производится загрузка файлов в 1с.
Наверное в хранилище. Как ещё там может это хранится. В двоичных данных. И я думал как сделать простое решение что бы оно было первым.
И в дальнейшем подлежащем развитию. Решил сделать, самое простое. В нужный справочник, к которому нужно привязывать файл ворд:
1. Добавил поле ПутьКМакетуWord.
2. Кнопку ОткрытьМакетWord.
3. На форме справочника отдельная вкладке Макет Word. Там поле, выбирая значение в котором
открывается диалог выбора файла. Выбранный файл копируется в указанный в константе каталог. И его путь прописывается в этот реквизит ПутьКМакетуWord.
4. По кнопке ОткрытьМакетWord срабатывает процедура ЗапуститьПриложение() открывая файл ворд.

Как вам такое решение? Какие есть плюсы какие минусы??? Из доработок я как понимаю возможно следующее, -

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

Что бы вы из всего этого, ещё сделали бы в своем решении, если бы была подобная задача?
1 NIGHTHUNTER
 
04.11.20
10:57
Код, участвующий в доработке (0) .

//
&НаКлиенте
Процедура ПутьКМакетуWordНачалоВыбора(Элемент, ДанныеВыбора, СтандартнаяОбработка)
    ПолноеИмяФайла = "";
    ПутьФайла      = "";
    Если ПоместитьФайл(ПутьФайла, , ПолноеИмяФайла, Истина) = Истина Тогда
        МестоКудаКопируется   = ПолучитьКаталогХраненияМакетов() + "\" + ПолучитьИмяФайла(ПолноеИмяФайла);
        МестоОтКудаКопируется = ПолноеИмяФайла;
        КопироватьФайл(МестоОтКудаКопируется, МестоКудаКопируется);
        Объект.ПутьКМакетуWord = МестоОтКудаКопируется;
    КонецЕсли;
КонецПроцедуры
//
&НаСервере
Функция ПолучитьКаталогХраненияМакетов()
    Возврат Константы.КаталогМакетов.Получить();
КонецФункции
//
Функция ПолучитьИмяФайла(ПолныйПуть)
    ИсхСтрока       = ПолныйПуть;
    Позиция         = Найти(ИсхСтрока, "\");
    ПозицияКонечная = 0;
    Пока Позиция <> 0 Цикл
        ПозицияКонечная = ПозицияКонечная + Позиция;
        ИсхСтрока = Сред(ИсхСтрока, Позиция+1);
        Позиция   = Найти(ИсхСтрока, "\");
    КонецЦикла;
    ИмяФайла = Сред(ПолныйПуть, ПозицияКонечная + 1);
    Возврат ИмяФайла;
КонецФункции
//
&НаКлиенте
Процедура ОткрытьМакетWord(Команда)
    ЗапуститьПриложение(Объект.ПутьКМакетуWord);
КонецПроцедуры
//
2 ДенисЧ
 
04.11.20
11:00
Если бы у меня была такая задача.... Я бы повесился...
https://www.youtube.com/watch?v=3V-6QNvolu4
3 mistеr
 
04.11.20
11:16
(0) Главный минус. Случился факап, восстановили базу из бэкапа, а фалов нет. Пользователи собрались, поймали разработчика и сделали ему фак ап.
4 NIGHTHUNTER
 
04.11.20
11:20
(3) Ну да. По новой пусть сидят перегружают.
Это же первое решение из возможных, самое простое.
А если рассматривать добавление файлов загружаемых в 1с, там так же и загружать и открывать можно будет?
А то я все как то мешкаюсь по этой доработке. Но думаю нужно ее будет сделать.
То есть того что в (0) совсем не достаточно?
А таких ситуаций как в (3) можно придумывать много.
5 NIGHTHUNTER
 
04.11.20
11:22
Может ли кто привести пример, загрузки файлов в 1с?
Там в хранилище, двоичные данные. Или как там. В интернете есть ресурсы, но я их не опробовал.
Может у кого есть готовое решение, которое сразу можно использовать в деле. Попробовать?
Это всего лишь вопрос. А так сам буду заниматься .
6 hhhh
 
04.11.20
11:25
(0) в чем революционность твоего решения? Ведь в типовых всё то же самое сделано. И присоединенные файлы и тома на диске. Вроде это таое решение не первое.
7 novichok79
 
04.11.20
11:25
если БСП, чем не устраивают тома хранения файлов?
если не БСП, варианты такие:
1) хранить в специализированных решениях для хранения больших файлов
2) хранить на диске в общей помойке на сервере
дальше думай сам что лучше.
8 АгентБезопасной Нацио
 
04.11.20
11:29
(7) чем не устраивают? да колеса у этого велосипеда недостаточно квадратные...
9 NIGHTHUNTER
 
04.11.20
11:38
(6)(7)
В том что я его сделал сам.
Попробовал посмотреть БСП, ничего не понял и закрыл.
Так же и в УТ. Там же не все просто. Там нужно разобраться что бы понимать. На это нужно время.
Я хочу сделать сам простое понятное решение. Вот как.
10 novichok79
 
04.11.20
11:40
(9) самое простое решение - хранение во внешних файлах.
я реализовал за пару дней что-то подобное на самописной базе.
правда это были не картинки, а внутренние данные, в итоге пришлось переделывать под внутреннее хранение, для того чтобы воспользоваться плюшками от реляционности.
11 NIGHTHUNTER
 
04.11.20
11:42
(10) тут речь о файлах word
12 novichok79
 
04.11.20
11:43
(11) решение приведено уже несколько раз выше.
13 NIGHTHUNTER
 
04.11.20
11:45
(12) примера кода что бы испробовать не было
пойду искать
14 novichok79
 
04.11.20
11:46
(13) пример кода?????? вы издеваетесь?
первая ссылка в гугле...
https://helpme1c.ru/rabota-s-fajlovoj-sistemoj-v-yazyke-1s-8-v-primerax
15 vde69
 
04.11.20
11:52
(0) плохое решение...
минусы

1. проблемы с правами будут, учитывая клиент серверную архитектуру автору или придется эту папку полностью расшаривать для всех (что не безопасно, например шифровальщик с клиентской тачки возьмет и все зашифрует)
2. проблемы с совместным доступом (один открыл файл и сразу в режиме записи)
3. нет события которое фиксировало-бы изменение файла
4. нет истории изменения файлов
5. нужно делать бекапы этой папки вместе с базой, при совместном доступе это может стать проблемой
6. не предусмотрен максимальный размер - будут заливать туда файлы с максимальным разрешением и качеством, в результате места нужно будет как минимум в 10 раз больше... Например у меня за год файловое хранилище растет примерно на 80 гигов и это пери условии жестких ограничений на размеры вложений, без ограничений это будет под терабайт в год.... а ведь это еще и бекапить нужно...
16 mistеr
 
04.11.20
11:56
(15) Все эти минусы блекнут перед железным аргументом:

"Попробовал посмотреть БСП, ничего не понял и закрыл"
17 rphosts
 
04.11.20
12:00
(0) данные о файле хранить в РС. Каталогизировать хранение файла... в нетленке файло крепилось или к потребителю или к определенному виду документа (произвольное кол-во файлов), т.е. имя каталога и имя файла генерилось программно. Каталог доступен только серверу 1С, по итогам работы за около 4-5 лет создано почти 4Тб фоток и сканов.... ничё, шевелится как-то.
18 vde69
 
04.11.20
12:05
(16) БСП - реально монстроуголная хрень.

1с долго пытается реализовать в ней некую систему описания интерфейса, но пока выходит полная хрень...

Пока 1с не введет понятие "программный интерфейс" (не в виде комментариев а в виде отдельного объекта метаданных) БСП останется практически неподъёмной для большинства 1с ников...

И ведь именно из-за отсутствия удобного интерфейса сама 1с в типовых одну и ту-же функцию пишет в нескольких модулях сразу... То есть даже сами разработчики типовых (и самого БСП) нифига не владеют полной картиной процедур и функций своей системы...
19 Надо работать
 
04.11.20
12:12
(18) и как "программный интерфейс" помог бы решить задачу топикстартеру, в твоем понимании?
20 timurhv
 
04.11.20
12:48
(9) Так не надо смотреть БСП и что-то там запоминать, разбираться. Открываете документацию на ИТС по подсистеме, там все описано и разжевано. Минут 10 читаете, потом минут 20 кодите. Для успокоения души можете запустить обработку проверки подключения БСП.
(18) Все программные интерфейсы экспортные в модуле, обрамлены соответствующей областью и описаны в документации БСП. Для меня этого достаточно.
Ну а кто не умеет разбираться с документацией, либо ленится, нет времени (таких много), то им ничего не поможет.
21 Dmitry77
 
04.11.20
13:08
Взять документооборот например и посмотреть как там все это реализовано.
22 NIGHTHUNTER
 
04.11.20
13:14
(21) Да все это тоже самое. Взять и утонуть там в сложности всего. Отпадает желание что то смотреть в таких случаях.

(20) Дадите ссылку? Ссылки? Что бы я что не то не нашел, да может не там.
Хотел сесть, и почитать вашу ссылку на ИТС. Что бы понять, на сколько мдля меня это доступно.
23 NIGHTHUNTER
 
04.11.20
13:15
(22) Сесть и начать читать, что бы понять. Что я успею усвоить за 10 минут.
24 NIGHTHUNTER
 
04.11.20
13:16
(15) Чистая, разрабатываемая конфигурация.
В процессе можно будет и развивать, уже имеющиеся наработки.
Пока вот воплощаю первые решения, привязки хранения файлов.
Имея чт ото, в последствии это все можно переделывать.
25 Надо работать
 
04.11.20
13:24
(24) для это и нужна БСП
26 fisher
 
04.11.20
14:24
(0) Идея вполне законная. В БСП уже реализован вариант, при котором администратор базы может параметрически выбирать где хранить присоединяемые файлы - в указанных каталогах на диске или в самой базе.
Минус самоочевиден - усложнение политики бэкапов. Обратная сторона плюса - не бухнет основная база.
В клиент сервере ессно нужно не с шарой работать, а отдавать на клиента файл сервера через временное хранилище. В БСП это уже все реализовано.
С точки зрения саморазвития повелосипедить можно, но в продакшн лучше впендюрить готовую подсистему.
27 NIGHTHUNTER
 
05.11.20
02:46
(26) И описание есть доступное как это сделать?
28 fisher
 
05.11.20
11:20
(27) Описание одно на всех - документация по БСП на ИТС. Про ее доступность тяжело сказать. Это не гайд с котиками, а именно документация. Если читать ее по диагонали, то на практике возникнут проблемы. На инфостарте можно поискать статьи с котиками. По-идее, должны такие быть.
29 timurhv
 
05.11.20
14:44
(22) https://its.1c.ru/db/bsp312doc#content:64:1
Глава 3 - инструкция по внедрению подсистемы.
Глава 4 - готовые экспортные процедуры и функции, чтобы не пилить велосипеды.

Документация написана для каждой версии БСП, выбираете свою и смотрите подсистему.
30 УдавВПопугаях
 
05.11.20
15:19
(0) концепцию хранения обсуждали еще в вашей первой ветке на эту тему, было это недели две/три назад
я за файлы, в базе только пути и характеристики
файлы в базе (справочник, регистр или бизнес процесс) - только если объем не будет увеличиваться в геометрической прогрессии, если за год, например, будет 100 Мб. и то, если говорить о вечном, то через 10 лет это будет уже много, но ведь ничего нет вечного. только для шаблонов Ворд этого будет достаточно, т к в файле только текст для договора например, если том романа Война и мир, то тоже не желательно(категорически)
31 УдавВПопугаях
 
05.11.20
15:21
что еще нужно то? вперед реализовывать!
32 УдавВПопугаях
 
05.11.20
15:24
(15) кстати вот это пугает больше всего
4. нет истории изменения файлов
если счет идет на Гб, то история файла это трындец, объем сразу * количество изменений