Имя: Пароль:
1C
1С v8
Большой текст в ресурсе регистра сведений
,
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 и т.д.). Это я ратую за то чтобы в файловой у ТС база лишними данными не раздувалась