|
Большой текст в ресурсе регистра сведений | ☑ | ||
---|---|---|---|---|
0
mzelensky
24.11.11
✎
08:58
|
Доброго времени суток!
Имеется не периодический независимый регистр сведений с одним измерением (ссылка на справочник) и одним ресурсом (строка неограниченной длины). Вопрос - не будет ли все это дело глючить, если я запишу в этот регистр (т.е. в ресурс) строку, например, длиной в 10 000 символов...и таких записей может быть тысячи. Просто никогда не хранил в РС такие объемные "строки"... П.С. платформа 8.2.13, база файловая. |
|||
1
vasilii85
24.11.11
✎
09:00
|
и зачем? можно спросить?
|
|||
2
vasilii85
24.11.11
✎
09:01
|
Что других способов хранить нет?
|
|||
3
mzelensky
24.11.11
✎
09:03
|
(2) ну вот так хотят. Нужно текст контракта (а это в среднем 5-10 листов А4) засунуть в базу.
|
|||
4
Rizhij_Nikitos
24.11.11
✎
09:04
|
Конечно будет при 1к+ записей, вы поймете свою ошибку, но не понимаю зачем это вам. вы че там содержание файловых документом там хотите хранить?
|
|||
5
bazvan
24.11.11
✎
09:05
|
Ну и засовывай. Причем тут рег. сведений
|
|||
6
mzelensky
24.11.11
✎
09:07
|
(5) засовывать хотят не просто файлв в базу (в хранилище файлов), а именно содержимое контракта. Т.е. тупо брать контракт, копировать его текст и записывать в базу (в РС). Затем этот текст будет тянуться от туда и использоваться в ряде отчетности.
|
|||
7
Rizhij_Nikitos
24.11.11
✎
09:08
|
Ну понятно, они хотят по хронологии смотреть список контрактов и их текст, а также используя запросы от ттуда тащить нужные контракты и тд и тп? я правильно понял (6)?
|
|||
8
Irbis
24.11.11
✎
09:10
|
Зачем РС, ХЗ в том же справочнике чем не угодило? Или мазохисты?
|
|||
9
mzelensky
24.11.11
✎
09:10
|
(7) Ну это как один из вариантов. Но в общем да.
вот как это все реализовать??? Я сперва вообще предлагал отказаться от этого и просто прикреплять скан контракта, а при необходимости просто его распечатывать и ссылаться на него. Но тут необходимо именно иметь формализованный электронный документ - аналог бумажного носителя. |
|||
10
Irbis
24.11.11
✎
09:11
|
(9) Открой для себя хранилище значения.
|
|||
11
DmitrO
24.11.11
✎
09:12
|
Если бы база была клиент-серверная, то никаких проблем.
У файловой базы есть ограничение в 4Гб на размер таблицы. Возможно в файловой базе все длинные поля хранятся в одной таблице, это надо уточнить на ИТС. |
|||
12
mzelensky
24.11.11
✎
09:12
|
(8) в самом справочнике не угодило потому что нужно иметь связку:
один справочник - много контрактов. По сути к одному справочнику может привязываться несколько текстов на разных языках. И количество таких переводов может быть не ограничено. Поэтому я храню это в РС. Измерения "СПР" и "ЯЗЫК", а ресурс "ТЕКСТ КОНТРАКТА" |
|||
13
mzelensky
24.11.11
✎
09:13
|
(10) и как его использовать в данном случае?
|
|||
14
Rizhij_Nikitos
24.11.11
✎
09:18
|
(11) 4ГБ не ограниченгие, видел клиента у них было уже окло 5ГБ файловая база.
|
|||
15
mzelensky
24.11.11
✎
09:18
|
(10) зачем и главное КАК записать в хранилище значений "ТЕКСТ" ?!
|
|||
16
DmitrO
24.11.11
✎
09:18
|
Разница в использовании ХранилищаЗначения только в том что можно применить сжатие. Качественно это ситуацию не изменит, изменит только количественно.
|
|||
17
Rizhij_Nikitos
24.11.11
✎
09:18
|
(15) скажи в какой конфе работаешь?
|
|||
18
DmitrO
24.11.11
✎
09:19
|
(14)для танкистов повторяю: НА ТАБЛИЦУ
|
|||
19
mzelensky
24.11.11
✎
09:20
|
(14) причем тут размер базы и размер таблицы???
Файловая база тянет до 8 гигов объема...потом просто перестает работать, но тут речь о другом! |
|||
20
acsent
24.11.11
✎
09:20
|
А как в документообороте сделано? там ведь тоже текст отдельно хранится от файла (для возможности поиска)
|
|||
21
mzelensky
24.11.11
✎
09:21
|
(17) в данном случае это самописка. Но это не имеет значение. Подобная проблема возможна при работе в любой конфе.
|
|||
22
mzelensky
24.11.11
✎
09:22
|
(20) не работал с этой конфой...и нет возможности глянуть.
Есть кто работал с документооборотом??? |
|||
23
DmitrO
24.11.11
✎
09:22
|
(20)именно, для построения полнотекстового индекса текст хранится отдельно от самого документа в оригинальном формате.
|
|||
24
and2
24.11.11
✎
09:23
|
(20) в письмах же хранится текст9тексХТМЛ) в реквизитах документа.
и не порится никто |
|||
25
DmitrO
24.11.11
✎
09:24
|
В платформе для этой цели даже есть объект специальный: ИзвлечениеТекста.
|
|||
26
Rizhij_Nikitos
24.11.11
✎
09:24
|
А нельзя этот документ, точнее текст хранить в текстовом файле, который будет лежать в папке где лежит база, а в 1С, просто хранить ссылку на файл и при необходимсоти ее открывать с помощью встроенных функций языка или в текством докумете.
|
|||
27
and2
24.11.11
✎
09:24
|
(22) открой док ЭлектронноеПисьмо в любой конфе.
однотипная задача |
|||
28
mzelensky
24.11.11
✎
09:25
|
(23) так а как они его там хранят???
|
|||
29
DmitrO
24.11.11
✎
09:27
|
(28)рядом хранят. Есть два реквизита: один с оригинальными данными документа (двоичные данные), другой реквизит текст "выжатый" из документа, чтобы документ находился полнотекстовым поиском.
|
|||
30
mzelensky
24.11.11
✎
09:28
|
(25) в СП написано:
"По умолчанию текст извлекается из файлов следующих типов (имеющих расширение): ASCX, ASP, ASPX, CSS, HHC, HTA, HTM, HTML, HHT, HTW, HTX, ODC, STM, DOC, DOT, POT, PPS, PPT, XLB, XLC, XLS, XLT, TXT, EML" А из "DOCХ" вытянет??? + "Можно установить дополнительные модули, чтобы появилась возможность извлекать текст из еще одного типа файлов." - как установить эти модули??? |
|||
31
DmitrO
24.11.11
✎
09:31
|
для извлечения текста там используется стандартизированный для винды интерфейс
Вероятно скорее всего необходимые объекты для извлечения, из DOCX например, встанут вместе с установкой 2010 офиса. |
|||
32
DmitrO
24.11.11
✎
09:32
|
Или их можно качнуть с MS. Ну ты же понимаешь, это же тебе не линукс, какой-нибудь. :)
|
|||
33
mzelensky
24.11.11
✎
09:35
|
(27) там много чего используется. И хранилище и длинные строки и много чего еще
|
|||
34
Нуф-Нуф
24.11.11
✎
09:36
|
а может текст воткнуть в справочник. а в регистр пихать ссылку на справочник
|
|||
35
lubja
24.11.11
✎
09:39
|
о! у меня вопрос по теме (или почти). извлечь текст из файла (к примеру, txt) не проблема с помощью того же ИзвлечениеТекста. а вот запихнуть текст в файл у меня коряво выходит... создаю ТекстовыйДокумент. у него есть свойство РазделительСтрок, может принимать значения ПС, ВК и ВК + ПС. после того как я делаю ТД.УстановитьТекст("мой текст"), в ТД хранится уже текст, но с добавленным разделителем строки... т.е. между моими строками, появляется еще перенос строки. присваивание свойству РазделительСтрок ПС+ВК - не помогло... ((
|
|||
36
mzelensky
24.11.11
✎
09:57
|
(34) а чем это поменяет ситуацию???
|
|||
37
Нуф-Нуф
24.11.11
✎
09:59
|
таблица регистра будет проще. обращение и запись в него будет проще. т.е. получаешь запись - получаешь элемент и только потом тянешь текст из базы
|
|||
38
DmitrO
24.11.11
✎
10:05
|
(37)Я бы поставил sqlexpress хотя бы, там хоть бекапить можно по-настоящему. Файловая база не для работы так-то.
|
|||
39
mzelensky
24.11.11
✎
10:06
|
(37) а в справочнике это будет просто реквизит с типом "строка" неограниченной длины?
|
|||
40
DmitrO
24.11.11
✎
10:06
|
(38)+ и 30 тыс за сервер 1С для организации вообще смешные деньги.
|
|||
41
mzelensky
24.11.11
✎
10:08
|
(38) на "sqlexpress" тоже ограничений немало!
Итак, пришли к вариантам: 1) Хранить текст прям в записи РС (как в 0) 2) Хранить текст во внешнем файле. В базе хранить путь к файлу 3) Хранить ссылку на дополнительный справочник, где будет храниться текст в отдельном реквизите. |
|||
42
mzelensky
24.11.11
✎
10:13
|
(41) теперь бы еще определиться...да не промазать с выбором :(
|
|||
43
stix2010
24.11.11
✎
10:28
|
кстати текст во внешних файлах со путём в регистре разумный подход
|
|||
44
Yorokonde
24.11.11
✎
10:32
|
(41)(42) Все зависит от того, чего вы все таки хотите добиться. В каждом из вариантов есть как плюсы так и минусы... решать то вам...
1 - конкретики не скажу, на подсознательном уровне решение отталкивающее и кажущееся нерезонным)) 2 - хороший и разумный путь, если продумать неизменность и безопасность внешних файлов. Малоли кто подкорректировать захочет. При этом у вас может значительно уменьшиться потенциальный размер БД по сравнению с вариантами 1 и 3, ввиду того что текста видимо предполагается очень много. 3 - тоже не могу корректно обосновать, но на подсознааааааааааательном уровне )))) вариант возможный, при небольшом количестве текстов, и менее отталкивающий нежели первый )) Я бы раскидал приоритет так: 2,3,1 ) |
|||
45
Yorokonde
24.11.11
✎
10:34
|
В дополнение к(44) кстати если необходим поиск по контрактам то там уже скорей 3,2,1 ) Вполне может оказаться что минусы хранения текстов в базе окупятся скоростью поиска - при большом количестве контрактов.
|
|||
46
0xFFFFFF
24.11.11
✎
11:26
|
Не понял, чем РС+Хранилище со сжатием не нравится?
5-10 листов простого текста в зипе будет не больше килобайта весить. На один гиг можно записать мульен таких договоров. О каком объеме речь? |
|||
47
mzelensky
24.11.11
✎
11:27
|
(46) не нравится принцип работы с хранилищем. Из него нельзя на прямую значения получать.
|
|||
48
0xFFFFFF
24.11.11
✎
11:28
|
(43) Разумный то разумный, только куча минусов.
1. дополнительный доступ к папке с файлами 2. Забота чтобы файлы не ломали извне 3. бэкапы файлов и т.д. |
|||
49
0xFFFFFF
24.11.11
✎
11:29
|
(47) а зачем? Поиск по тексту организовывать? Так и из файлов тоже напрямую не прочитаешь.
|
|||
50
mzelensky
24.11.11
✎
11:36
|
(49) а можно пример помещения текста в хранилище и его извлечение?!
|
|||
51
lubja
24.11.11
✎
11:58
|
(50) извлечение я писала так:
ИмяФайла = ПолучитьИмяВременногоФайла("txt"); Попытка ДвоичныеДанные.Записать(ИмяФайла); Объект = Новый ИзвлечениеТекста(ИмяФайла); Текст = Объект.ПолучитьТекст(); УдалитьФайлы(ИмяФайла); .... Где ДвоичныеДанные - это то, что я получаю из хранилища а вот в обратную сторону... у меня возникли пробслемы, описанные в (35) может кто подскажет способ полегче? |
|||
52
mzelensky
24.11.11
✎
12:03
|
(51) я вот так сделал сейчас:
Это запись: ИмяФайла = ПутьФайла; Объект = Новый ИзвлечениеТекста(ИмяФайла); Текст = Объект.ПолучитьТекст(); Сообщить(Текст); СпрО=Спр.ПолучитьОбъект(); Сжатие = Новый СжатиеДанных(6); СпрО.Текст= Новый ХранилищеЗначения(Текст, Сжатие); СпрО.Записать(); А при открытии формы справочника (в который записал) пишу: ОсновнойТекст = Текст.Получить(); ну или из обработки: СпрО=Спр.ПолучитьОбъект(); Текст = СпрО.Текст.Получить(); Сообщить(Текст); |
|||
53
Лефмихалыч
24.11.11
✎
12:07
|
(0) да на здоровье, только какой смысл в этом тексте? Вот если бы там сканы подписанного контракта были, тогда можно было бы с какой-то уверенностью утверждать, что контрагент этот текст хоты бы видел, а если просто буквы, то какой от них толк?
|
|||
54
Киборг
24.11.11
✎
12:18
|
если еще будет нужен полнотекстовый поиск, то хранение во внешних файлах и в реквизитах, не поддерживающих такую возможность, отпадает
|
|||
55
AAlexandra
24.11.11
✎
12:18
|
(41) я, может, чего-то не понимаю.. но чем вариант с файлами на диске принципиально лучше хранилища значений? Запросом текст из файлов ты никак не получишь.
И в чем принципиальная разница между РС, отдельным (как вариант подчиненным) справочником или просто ТЧ к справочнике-источнике? Во всех трех вариантах будет отдельная здоровая таблица.. РС + отдельный справочник = +1 левое соединение в запросе.. Ради чего? Отталкиваться нужно не от "вариантов реализации", а от того, как будет эта информация использоваться, для чего она вообще в базе? В каких разрезах ты отчеты хочешь получать, какие отборы делать? |
|||
56
mzelensky
24.11.11
✎
12:23
|
(53) Меня тоже сперва это удивило, но толк именно в тексте!
(54) поиск вроде как не нужен (по крайней мере мне так пока говорят). в общем сейчас все-таки сделал через дополнительный справочник и ХранилищеЗначения. |
|||
57
mzelensky
24.11.11
✎
12:27
|
(56) т.е. справочник, в нем таблица значений с двумя реквизитами "язык" (справочник языков) и "текст документа" (справочник текстов). В справочнике "текст документа" имеется реквизит "Хранилище значения" куда и сохраняется текст. При открытии формы справочника текст получаетс из хранилища и выводится в реквизит формы (соответственно при записи он туда сохраняется).
Вот такая запутанная ситуация... |
|||
58
AAlexandra
24.11.11
✎
12:43
|
(57) а зачем отдельно "Справочник текстов"? Почему в ТЧ просто не сделать у колонки тип "Хранилище значения"?
Бывает, что на 1 текст ссылаются несколько разных элементов исходного справочника? |
|||
59
Киборг
24.11.11
✎
12:53
|
(56) а зачем хранить "текст из файла" вместо "содержимого файла", если поиск по тексту не планируется?
|
|||
60
mzelensky
24.11.11
✎
12:55
|
(59) а в чем разница???
|
|||
61
mzelensky
24.11.11
✎
13:03
|
(58) мне кажется так просто удобней их вносить / редактировать и т.д.
|
|||
62
Киборг
24.11.11
✎
13:10
|
(60) минус - больше места, меньше возможностей для отображения содержимого
плюс - оригинальное форматирование и нетекстовые элементы |
|||
63
Киборг
24.11.11
✎
13:12
|
еще плюс - не требуется конвертер для извлечения текста
|
|||
64
lubja
24.11.11
✎
15:38
|
(52) ё-маё! как все просто оказалось... а я с файлом замарачивалась... ))
|
|||
65
stix2010
24.11.11
✎
15:53
|
есть 4 вариант хранить в отдельной sql базе, варианты баз от платных (sql) до бесплатных (posgresql и т.д.). Это я ратую за то чтобы в файловой у ТС база лишними данными не раздувалась
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |