Имя: Пароль:
1C
1C 7.7
v7: Вопрос по структуре данных
,
0 evgpinsk_
 
25.02.19
23:52
Пусть есть справочник Товаров.
На текущий момент предположим он достаточно велик, пусть 50 тыс записей.

Возникла необходимость добавить ещё одно текстовое поле, неограниченной длины /ещё одна характеристика товара/.

Оно будет заполнятся примерно у одного товара из 100.

Каким образом красивей решить данную ситуацию? Через добавление нового поля у справочника, или через создание отдельного справочника?
И если отдельного справочника, то через подчинённый справочнику товаров или не связанный с ним?
1 MWWRuza
 
гуру
26.02.19
00:34
В подчиненном справочнике ИМХО есть смысл, если значений этого поля может быть у одного элемента справочника несколько. Если всегда одно - то проще реквизит добавить и не мучиться. Все равно, в случае неограниченной длины, физически данные будут в отдельной таблице храниться.
3 JeHer
 
26.02.19
02:48
(0) Лучше создать подчиненный справочник. Или доп. значения использовать. Кто знает, может, еще через 50 тыс. записей захотят добавить еще один реквизит?
4 Mikeware
 
26.02.19
06:49
(1) авотхрен! Подчинённость - не обязательно "один ко многим". Это "один к любому количеству". Каковое может быть и нулем.
5 Mikeware
 
26.02.19
06:50
(0) посмотри, как сделаны в типовой тис свойства номенклатуры, и сделай так же.
6 SleepyHead
 
гуру
26.02.19
07:35
(1) Лучше создать отдельный справочник со ссылкой на справочник "Товары". Подчиненные справочники штука удобная, но работать с ними неудобно, когда нужно быстро вытащить данные из базы.
7 Mikeware
 
26.02.19
07:56
(6) если использовать нормальные запросы - то несложно. но тут как всегда - меняем объем на время.
8 evgpinsk_
 
26.02.19
09:04
(4) Это понятно. (5) в двух словах - как?
Отдельный справочник, в котором одно из поле - это справочник товаров?
9 opus70
 
26.02.19
09:21
лучше и добавить 2 реквизита в существующий товар так как поле не ограниченной длины все равно хранить в другой таблице 1sblob  по моему , так что существенного увеличения справочника не будет
а плюшек больше от такого решения проще код и так далее

чем проще ко тем легче его потом вспомнить
10 opus70
 
26.02.19
09:26
новый справочник есть смысл только одном случае если будешь в дальнейшем обновлять
ТИС к примеру и то нужно еще подумать так как код показа данных этого справочника
все равно придется тащить в код формы который будет довольно таки громоздким

так что я бы добавил реквизиты и не мучался совестью
11 Mikeware
 
26.02.19
09:56
(9) проще вспоминать не простые вещи, а правильные. Поэтому лучше сразу сделать правильно - и тогда "добавлять реквизиты" можно будет в пользовательском режиме, без всяких дописок и разбирания кода. ровно то же касается и отчетов.
12 SleepyHead
 
гуру
26.02.19
10:26
(7) Я сторонник работы с данными 77 исключительно штатными средствами. Считаю, что гораздо проще создать индексированный реквизит и написать по нему выборку, которая будет работать очень быстро для 77, и будет проверяемой в отладчике. "Чорные" запросы - штука крутая, но это чёрный ящик.
13 Mikeware
 
26.02.19
11:12
(12) вот и нужно использовать нормальные запросы, прямые. которые, в отличие от чОрных - не являются черным ящиком.
и проверяются они нормально. и пишутся нормально - и всегда знаешь, что ты получишь и почему.
ну и метание между клюшечным (переборы) и снеговиковным (запросы) подходом сглаживается...
14 ДенисЧ
 
26.02.19
11:15
(13) А что не так в чОрных? Вроде простые, как мычание...
15 SleepyHead
 
гуру
26.02.19
11:23
(13) Я уже года полтора как отошел от 77, тттт. Ваше предложение отклоняется ))
16 Mikeware
 
26.02.19
11:24
(14) соединений всяких не хватает, условий, группировок...
17 SleepyHead
 
гуру
26.02.19
11:24
(14) Это потому, что я расист!
18 Mikeware
 
26.02.19
11:26
(15) да я уж тоже последний год только зики обновлял.
19 Mikeware
 
26.02.19
11:29
(17) не люблю две вещи - расизм, и негров...©
ради удобства работы почти сразу ушел на прямые, и за лет 12 так и не освоил чОрные в клюшках.
20 evgpinsk_
 
26.02.19
16:17
(11) Не совсем понимаю вашу позицию, в чём плюсы отдельной таблицы?
Раз строка неограниченной длины не увеличивает по размеру справочник, то в чём плюсы?
21 Sserj
 
26.02.19
17:00
(20) Ну плюс как минимум в том что эта строка не будет загружаться каждый раз при любом обращении к объекту, он ведь целиком читается в том числе и в чёрных запросах, даже если нужно только наименование.
22 evgpinsk_
 
26.02.19
19:59
(21) Тогда получаем - каждое поле в отдельный справочник? :)
23 ДенисЧ
 
26.02.19
20:04
(22) Это почти 5я нормальная форма...
24 Garykom
 
гуру
26.02.19
20:06
(0) Красивей всего перейти на 8-ку
25 evgpinsk_
 
26.02.19
20:32
Неужели в данном вопросе истина не одна? )
26 Garykom
 
гуру
26.02.19
20:49
(25) Ты попробуй в имеющийся справочник реквизит (поле) добавить и применить изменения - сразу поймешь где истина.
Ну или когда процесс повисший прибьешь.
27 andrewalexk
 
26.02.19
22:12
(24) :) при любой непонятной фигне - переходите на 8ку?
28 MWWRuza
 
гуру
26.02.19
23:07
Ну, если планируется в пользовательском режиме еще добавлять... То, да. А так, отдельный реквизит.
29 MWWRuza
 
гуру
26.02.19
23:11
Если проблема со временем добавления реквизита в справочник - поищите, была моя тема, совсем не давно, как это делать быстро.
30 evgpinsk_
 
26.02.19
23:20
(26) В том плане, что очень долго индексация идёт?
31 Ёпрст
 
26.02.19
23:22
(0) ничего не кодить, добавть свойство номенклатуры
32 Garykom
 
гуру
26.02.19
23:23
(30) Ну на 50 тыс записей не долго.
Но вот если их 500000 - 1000000 уже да долго.
33 Mikeware
 
27.02.19
08:22
(31) нет у него свойств.... там вообще конфига лет на 7 расстрела...
34 opus70
 
27.02.19
08:31
(21) с точки зрения 1с нет плюсов в отдельной таблице все и так быстро работает а удобство обращение
спр.РеквизитХХХ  все перевешивает
все таки 1с это не чистая база в понятиях нормализации
и тут прежде всего рулят быстрота сопровождения отладки и так далее

один минус есть это если справочник огромен то займет много времени может сутки если не делать определеных манипуляций
35 opus70
 
27.02.19
08:33
(24) зачем если и так работает зачем ломать то что отлично работает
переход на 8-х не всегда оправдан
36 Mikeware
 
27.02.19
09:22
(34) ох, знал бы ты, как достало это "удобство обращения перевешивает"...
"прежде всего рулят быстрота сопровождения отладки и так далее" ага, и копипаст, мля, копипаст!
накопипастят, а потом удивляются почему отчет работает 15 минут вместо 30 секунд...
37 MWWRuza
 
гуру
27.02.19
14:14
(34)"один минус есть это если справочник огромен то займет много времени может сутки если не делать определеных манипуляций"
Да там манипуляции не сложные, на 10 минут с перекурами... С использованием стороннего редактора DBF, вот, я подробно описывал: Как быстро добавить реквизит в "большой" справочник?
Там, в середине темы, подробная, пошаговая инструкция.
38 Mikeware
 
27.02.19
14:23
(37) а если добавить "свойством", то и манипуляций не надо совсем, и даже кодить не надо.
39 Mikeware
 
27.02.19
14:27
+(38) не то, чтоб я боялся ручных манипуляций с таблицами/индексами/данными (в общем, я втуда умею)- просто если есть возможность сделать один раз универсально, расширяемо (без кодинга), устойчиво, и не нуждающееся в обслуживании - почему м не сделать именно так?
40 Sserj
 
27.02.19
14:59
(34) Хех..
Забываешь добавить одно маленькое но очень важное "Но". Все это "..и так быстро работает.." пока сидишь в локальненькой DBF базе.
И почему это тут утверждают что "..Все равно, в случае неограниченной длины, физически данные будут в отдельной таблице храниться.."
В случае SQL это в той же самой таблице колонка типа text.
И когда начинают по сети у SQL сервера запрашивать черным запросом такие
реквизитики оно резко вдруг становится совсем не ".. и так быстро работает".
41 Salimbek
 
27.02.19
15:35
(37) А вы уверены, что сможете правильно добавить реквизит "неограниченной длины"?
42 opus70
 
27.02.19
15:41
(40) не знаю всегда работало и не тупило а тут резко xex
36ГБ 56 юзверов taySQL модуль + 1С++ и ничего не тупит от слова совсем
и сервер не сервер а так железка i5 еще древний

и в задаче нет слова SQL база от слова совсем совсем
43 Sserj
 
27.02.19
16:44
(42) А в задаче и слова DBF не от слова совсем :)
И вот неужели твой toySQL объекты целиком из базы таскает или все таки только запрошеные поля, да и при этом всю логику отбора, группировки, сортировки и прочего делает средствами скуля.
А ведь ".. С точки зрения 1С" это делается совсем по другому. ВСЕ участвующие объекты в полном составе включая табличные части документов даже если в запросе нужны только реквизиты шапок выкачиваются и обрабатываются у клиента.
44 MWWRuza
 
гуру
27.02.19
18:05
(41)А это вопрос конечно интересный... По идее, если на пустой дбф-ке, в конфигураторе добавить реквизит неограниченной длины, то создастся отдельная таблица, пустая... Надо посмотреть, что будет в новой колонке пустой дбфки, и если ничего(реквизит то пустой тоже) - то проблем нет, а если там ссылка на эту новую таблицу, тогда проблема...
(42)(43)Ну, действительно нет в задаче ни слова, какая база. Но, если человек боится, что долго будет добавляться реквизит - то ясно, что дбф... Вроде как sql такая проблема и не возникает, не даром советовали при добавлении реквизита перевести временно базу на sql, а потом вернуть обратно(хотя, как я понимаю, это тоже не быстро).
45 Sserj
 
27.02.19
18:19
(44) Всё строки неограниченной длинны хранятся в 1sblob.dbf, не будет никаких новых таблиц.
46 MWWRuza
 
гуру
27.02.19
18:19
Сейчас попробовал. Нормально все. Там даже проще.
При добавлении реквизита неограниченной длины в дбфку справочника ничего не добавляется. Добавляется в таблицу длинных строк ссылка на этот справочник. Пока этот реквизит пустой, должно мгновенно добавиться. Все в dd прописывается, и все.
47 MWWRuza
 
гуру
27.02.19
18:20
(45)одновременно! :-)
48 Sserj
 
27.02.19
18:25
(46) Ну так в этом и суть. Все строки в одной таблице и каждый раз когда нужно просто получить допустим наименование 1С будет искать и читать все поля из таблицы самого справочника и перечитывать этот blob столько раз, сколько есть неограниченной реквизитов в справочнике.
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.