Имя: Пароль:
1C
1С v8
Зачем файлы снова хранят в одной таблице? На примере УТ 11.4
0 triviumfan
 
07.09.18
17:55
Доброго дня, коллеги.

Речь о типовых конфах. БПС такая БПС...
Раньше файлы хранились в разных таблицах. У каждого объекта был справочник "ПрисоединенныеФайлы<ИмяОбъекта>". А теперь вижу, файлы (двоичные данные, если не стоит хранение в томах на диске) теперь снова объединены в одной таблице РС "ДвоичныеДанныеФайлов" со ссылкой на справочник присоединяемого файла владельца.
Где-то наблюдал инфу, что хранить файлы в разных таблицах оптимальней. А теперь вон оно чё.. на круги своя!
Так...почему?!

Плюс никак не пойму, что за "Очистка ненужных файлов"? Как это понимать? https://its.1c.ru/db/bsp245doc#content:1833:1
Читаю между строк - все равно не понимаю, что там удалять!
1 triviumfan
 
07.09.18
17:56
ещё пытаюсь перенести файлы в том на диске - показывает, что 23 метра и 20000 файлов! Ну что за идиотизм этой БСП?! У меня файлов на 12 гигов!
2 triviumfan
 
07.09.18
18:00
Вот таблица двоичных файлов: https://yadi.sk/i/1gmXp1XTQ_W64Q
Вот что показывает обработка БСП!! https://yadi.sk/i/7QQtwPuhmfPxDw
3 tesseract
 
08.09.18
16:53
Это ты про какую версию БСП сейчас говоришь?  Справочники сохранились, регистр использовался для хранения BLOB, если для файлов задан тип хранения в информационной базе.

Обработка тебе выдает размер файлов+ справочник версий, который как раз в справочниках храниться. Сам размер BLOB он не смотрит никак. Еще и смотрит вид хранения в самом справочнике, у тебя случайно там ничего не обламывалось / никто руками не правил?
4 triviumfan
 
08.09.18
23:22
(3) там же есть поле с размером файла... почему он неверно определяет размер? ничего не обламывалось, файлы 5 лет хранят в ИБ, я был сильно удивлён и предложил воспользоваться отдельным диском. Но при переносе показывает лишь 23мб.... на ИС есть темы, что типовая обработка переноса говно и не переносит нифига.
5 H A D G E H O G s
 
08.09.18
23:58
(0) "хранить файлы в разных таблицах оптимальней"

ерунда.
Причина "ПрисоединенныеФайлы"- права доступа
6 runoff_runoff
 
09.09.18
03:18
(5) это, если РЛС не хочется
а если сделать чуточку РЛСа (совсем чуть-чуть, одно условие простейшее), то можно в едином справочнике  отфильтроваться по реквизиту, обозначающему владельца
may be
7 triviumfan
 
09.09.18
11:04
(5) Ну, изначально именно поэтому разделили BLOB'ы. А теперь снова вернули... какая-то неопределенность разработчиков.
8 triviumfan
 
09.09.18
11:06
(7) да и смысл хранить мильёны файлов в одной таблице...
хотя если РЛС, то мб и правда. Ведь РС "ДвоичныеДанныеФайлов" имеет измерение на присоединенный файл и ресурс хранилищезначений.
9 triviumfan
 
10.09.18
13:44
(3) Воспользовался типовой обработкой переноса файлов в тома - перенесла 23мб как и показывала. Так что все "она видит".
10 triviumfan
 
11.09.18
17:20
Ап.
Кто-нибудь переносил файлы из ИБ на диск?
Почему типовая обработка не работает?
11 Lamer1C
 
11.09.18
17:31
(10) а сервер какой? есть проблема на 32х разрядном с файлами больше 120МБ
12 Лефмихалыч
 
11.09.18
17:36
(10) видимо, она не в регистр смотрит
13 lodger
 
11.09.18
17:48
(10) переносил как-то раз. пришлось обработку допиливать, чтобы переносилось вообще всё. а что да почему уже не вспомню. списал на недоработку еще сырой ут 11.1 или 2.
14 triviumfan
 
11.09.18
17:52
(13) про сырые 11.1 и 11.2 я наслышан, на ИС куча таких доработок. Но вот у меня 11.3 и 11.4 с разными версиями подсистем работы с файлами - обе некорректно "видят" файлы для переноса, да и переносят лишь 26мб вместо 12 гигов.
15 lodger
 
11.09.18
17:55
(14) скачай или запили, одинэсник ты или кто?
16 olegves
 
11.09.18
17:56
(6) хрень ты написал. У РС ДвоичныеДанныеФайлов единственное измерение - это версия файла из справочника ВерсииФайлов
17 olegves
 
11.09.18
17:59
+(16) если используется хранение версий
18 triviumfan
 
11.09.18
21:54
Я запутался, у меня и 11.3 и 11.4.
Давайте рассмотрим текущую 11.3.3.178, а не из шапки (там обновленная тестовая на 11.4).
Здесь используется БСП 2.3.5.36.

Имеются справочники "<ИмяОбъекта>ПрисоединенныеФайлы" и РС "ПрисоединенныеФайлы". (хотя есть ещё Версии файлов и прочая бойда).
Размер файла указан в справочнике "<ИмяОбъекта>ПрисоединенныеФайлы", а двоичные файлы в РС. Т.е. база разбухла именно из-за регистра.
(15) 1с-ник, но начихуя мне изобретать велосипед, если это подсистема БСП поколений мамонтов, там итак все должно быть чики-пуки, а если я ещё не дай бог криво перенесу, забуду какое служебное поле заполнить или ещё чего. Зачем мне вообще заниматься этим?!

ВЫБРАТЬ
    ДоговорыКонтрагентовПрисоединенныеФайлы.Ссылка
ИЗ
    Справочник.ДоговорыКонтрагентовПрисоединенныеФайлы КАК ДоговорыКонтрагентовПрисоединенныеФайлы
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            МАКСИМУМ(ДоговорыКонтрагентовПрисоединенныеФайлы.Размер) КАК Размер
        ИЗ
            Справочник.ДоговорыКонтрагентовПрисоединенныеФайлы КАК ДоговорыКонтрагентовПрисоединенныеФайлы) КАК Вложенный
        ПО ДоговорыКонтрагентовПрисоединенныеФайлы.Размер = Вложенный.Размер

Это типичный файл скана на 40 метров. И таких море.
19 Сияющий в темноте
 
11.09.18
22:05
Файлы хранить можно как угодно,столкновения на запись в одной таблице при файловой базе более вероятны,но для скуля одна таблица лучше,чем несколько.

что касается прав,то если пользователям индивидуально давать права на файлы,то одна таблица проще.
20 triviumfan
 
11.09.18
22:11
(19) да я перегнул, все норм там, права же через владельца справочника "<ИмяОбъекта>ПрисоединенныеФайлы" накладываются. А их поэтому так и разделают, ведь чем меньше строк тем быстрее выполняется запрос.

Вопрос в другом, как правильно перенести файлы =)
21 Sasha_H
 
11.09.18
22:23
(0) Плохо изучаешь БСП. Там даны реккомендации хранить файлы в разных справочниках и на примере в БСП тоже есть все это!
22 Sasha_H
 
11.09.18
22:27
Вытяжка из настройки БСП:

Настройка присоединения файлов к объектам
Принять решение по поводу состава объектов конфигурации, которые должны содержать присоединенные файлы («объекты с файлами»). Такими объектами, как правило, являются справочники или документы, при которых могут содержаться файлы-вложения. Примеры: справочник Товары с присоединенными к нему файлами-спецификациями, сертификатами и т. п.; справочник Должности с приложенными к нему текстами должностных обязанностей, требованиями к соискателю и т. п.

В зависимости от того, используются ли в конфигурации ограничения доступа на уровне записей (RLS; см. раздел «Управление доступом») и их разнообразия, принять решение по варианту хранения присоединенных файлов:

1. В большинстве случаев, для каждого «объекта с файлами» (типа владельца) следует создать отдельный справочник присоединенных файлов. Данный вариант рекомендуется, если в конфигурации предусмотрены разные права доступа к владельцам.

● Например, если в конфигурации для справочников Партнеры и Проекты предусмотрена разная логика RLS, то с помощью RLS к отдельным справочникам присоединенных файлов ПартнерыПрисоединенныеФайлы и ПроектыПрисоединенныеФайлы, можно обеспечить, чтобы пользователи просматривали и редактировали присоединенные файлы только у доступных им Партнеров и Проектов.

● Если же в конфигурации отсутствует RLS, то аналогичным образом, права на справочники присоединенных файлов синхронно выдаются с правами на их владельцев.

2. В некоторых случаях достаточно одного справочника присоединенных файлов сразу для нескольких «объектов с файлами» (типов владельцев). Этот вариант подходит, если владельцев не много (не более 10), а права доступа к владельцам  полностью совпадают и с высокой вероятностью не будут пересматриваться в дальнейшем.

● Например, в одном справочнике присоединенных файлов можно реализовать хранение файлов, присоединенных к различным документам продажи Счета покупателям, Реализация и т.п., RLS к которым полностью одинаков. При этом для корректного ограничения доступа к присоединенным файлов в зависимости от типа их владельца в RLS к справочнику присоединенных файлов также следует задействовать  специальные виды доступа ПравоЧтения и ПравоИзменения (при совместном внедрении с подсистемой «Управление доступом»).

3. Также допустимо не создавать справочники присоединенных файлов, а выбрать вариант хранения в имеющемся справочнике Файлы в тех случаях, когда в конфигурации отсутствует логика RLS, или когда она есть, но в «объектах с файлами» (типах владельцев) предусмотрена запись наборов значений доступа.

● В первом случае, доступ к справочнику Файлы, как и для владельцев, предоставляется без ограничений (но при совместном внедрении с подсистемой «Управление доступом» остается базовое ограничение по типам владельцев).

● Во втором – доступ к справочнику Файлы будет обеспечен «как  у владельца» с помощью стандартного шаблона #ПоЗначениямИНаборамРасширенный (подробнее см. раздел «Управление доступом»).
23 Sasha_H
 
11.09.18
22:27
Просто хоть почитайте документаци к БСП, поверьте там есть что  поизучать
24 triviumfan
 
11.09.18
22:36
(23) вы тему дочитали?
25 Sasha_H
 
11.09.18
23:29
(24) если бы читали документацию БСП, что рекомендую сделать то такого вопроса вообще бы не должно возникнуть!
26 triviumfan
 
12.09.18
00:02
(25) Каюсь. Модераторы, поменяйте тему, плз, на "Перенос файлов на диск (УТ11)"
27 triviumfan
 
12.09.18
09:33
Я в шоке - залез под капот - типовая обработка что для ут11.3, что для ут11.4 переносит только версии файлов!!! Т.е. справочник "ВерсииФайлов", а на РС "ПрисоединенныеФайлы" (или как в новой БСП "ДвоичныеДанныеФайлов") похеру! Вот так прикол... придётся самому писать или скачивать с ИС.
28 triviumfan
 
12.09.18
16:59
(27) сам написал, взял из 11.4.5 и адаптировал. Кстати, в ней тоже имеются ошибки! На вскидку увидел, что размер неверно считается:

&НаСервере
Функция РазмерВерсийВБазе()
    
    УстановитьПривилегированныйРежим(Истина);
    
    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    ЕСТЬNULL(СУММА(ВерсииФайлов.Размер), 0) КАК Размер
    |ИЗ
    |    Справочник.ВерсииФайлов КАК ВерсииФайлов
    |ГДЕ
    |    ВерсииФайлов.ТипХраненияФайла = Значение(Перечисление.ТипыХраненияФайлов.ВИнформационнойБазе)";
    
    Для Каждого ТипСправочника Из Метаданные.ОпределяемыеТипы.ПрисоединенныйФайл.Тип.Типы() Цикл
        ПолноеИмяСправочника = Метаданные.НайтиПоТипу(ТипСправочника).ПолноеИмя();
        Если ПолноеИмяСправочника <> "Справочник.Файлы" И ПолноеИмяСправочника <> "Справочник.ВерсииФайлов" Тогда
            Запрос.Текст = Запрос.Текст +
            "
            |ОБЪЕДИНИТЬ ВСЕ
            |
            |ВЫБРАТЬ
            |    ЕСТЬNULL(СУММА(ВерсииФайлов.Размер), 0) КАК Размер
            |ИЗ
            |    " + ПолноеИмяСправочника + " КАК ВерсииФайлов
            |ГДЕ
            |    ВерсииФайлов.ТипХраненияФайла = ЗНАЧЕНИЕ(Перечисление.ТипыХраненияФайлов.ВИнформационнойБазе)";
        КонецЕсли;
    КонецЦикла;
    
    Результат = Запрос.Выполнить();
    Если Результат.Пустой() Тогда
        Возврат 0;
    КонецЕсли;
    
    Выборка = Результат.Выбрать();
    Выборка.Следующий();
    Возврат Выборка.Размер;
    
КонецФункции

Как можно после объединения подзапросов выбрать первую запись и вернуть результат?! Ппц...
29 MonteCarlo
 
12.09.18
17:34
(28) Там же всего одна запись и будет. ЕСТЬNULL(СУММА(ВерсииФайлов.Размер), 0) КАК Размер
30 triviumfan
 
12.09.18
18:56
(29) Одна? ну, ну)
31 triviumfan
 
12.09.18
18:57
(30) Похоже ты стажировался в 1с)
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший